Кіріспе
SK8 (скейт деп айтылады) – Apple компаниясының Advanced Technology Group тобында 1988 жылдан 1997 жылға дейін жасалған мультимедиалық авторлық орта. Ол «стероидтердегі HyperCard» деп сипатталды, HyperCard-тың HyperTalk бағдарламалау тілінің нұсқасын және заманауи объектіге бағытталған қолданба платформасын біріктірді. Жобаның мақсаты – шығармашылық дизайнерлерге күрделі, жеке қолданбаларды жасауға мүмкіндік беру болды. SK8-дің негізгі құрамдас бөліктері: объектілік жүйе, бағдарламалау тілі, графика және компоненттер кітапханалары, сондай-ақ жоба құрастырушы, біріктірілген даму ортасы. Тарихының көп бөлігінде SK8 зерттеу жобасы болып қалып, AppleScript сияқты басқа Apple жобаларына ықпал етті, сонымен қатар прототиптеу платформасы ретінде пайдаланылды. 1993 жыл шамасында Apple өнімдер бөлімі SK8 орындау ортасын шығаруды тапсырғанмен, Mac мүмкіндіктерінің шектеулілігі және PowerPC чипіне көшу осындай ауқымды жобаны жүзеге асыруды қиын етті. Бастапқы көзқарастың көп бөлігі аяқталғаннан кейін және MacOS құрамына енгізудің оңай жолы болмағандықтан, белсенді даму 1996–1997 жылдары тоқтатылды, ал жобаның барлық Macintosh Common Lisp бастапқы коды 1997 жылы көпшілікке таратылды.
SK8 (pronounced "skate") was a multimedia authoring environment developed in Apple's Advanced Technology Group from 1988 until 1997. It was described as "HyperCard on steroids", combining a version of HyperCard's HyperTalk programming language with a modern object oriented application platform. The project's goal was to allow creative designers to create complex, stand alone applications. The main components of SK8 included the object system, the programming language, the graphics and components libraries, and the Project Builder, an integrated development environment. For much of its history, SK8 remained a research project, and inspired a number of other Apple projects like AppleScript, as well as seeing use as a prototyping platform. Although around 1993 a team was assigned by the Apple Product Division to release a SK8 runtime, the limitation of the Mac's capabilities as well as the shift to the PowerPC chip made such a large project intractable. With the bulk of the original vision completed and no easy path to release as part of MacOS, active development ended in 1996–1997, and the Macintosh Common Lisp source code for the entire project was released to the public in 1997.
Тарих
SK8 жобасын Рубен Клейман 1987 жылы Apple компаниясына келген кезде құрды. Ол Apple-ге икемді, объектіге бағытталған пайдаланушы интерфейсі мен мультимедиалық даму ортасын жасау үшін келген. Жобаның аты оның скейтбордқа деген қызығушылығынан туындаған. Сол кезде HyperCard, тікелей басқару интерфейсі мен скрипт тілімен бірге шығаруға дайын тұрды. HyperCard қарапайым қолданбалар үшін өте жақсы болғанымен, оның әлеуетін шектейтін "карталардың" "стектері" сияқты шектеулі өзара әрекеттесу моделін пайдаланды. SK8 осы мүмкіндіктерді кеңейтілген бағдарламалау роліне жеткізуге тырысты. SK8 жобасының бастапқы жұмыстары визуалды бағдарламалауға емес, инфрақұрылымға бағытталған. Клейманның алғашқы әрекеті – динамикалық, прототипке негізделген объект жүйесі, MacFrames, қорытынқы шығару машиналары үшін плагиндері бар фрейм/объект жүйесі. MacFrames қалауынша, IntelliCorp KEE сияқты әртүрлі объект жүйелерін эмуляциялау үшін пайдаланылды. Бұл зерттеулер, Apple-дегі нақты қолданбаларды және прототиптерді жасаған пайдаланушылармен бірлесіп, SK8-де қолданылған объект моделін құрады. MacFrames Coral Lisp-те жасалды, оны Apple сатып алып, Macintosh Common Lisp деп атады. Сол кезде Macintosh-та жалпыланған процестер аралық байланыс (IPC) жүйесі болмады. Клейман Mac үшін IPC init құрастырып, MacFrames-ке басқа процестермен, әсіресе HyperCard-пен байланысуға мүмкіндік берді. Бұл HyperCard-ты MacFrames-тің визуалды бағдарламалау интерфейсі ретінде пайдалануға мүмкіндік берді. MacFrames-тің тағы бір мақсаты – объектілік жүйеге таратылған өңдеуді енгізу болды. RPC API-ді пайдаланудың орнына, объектінің қасиетін қажетті мәнмен және нәтижелерді алу үшін кері шақырумен орнату жеткілікті болды. Apple-дің сапаны бақылау тобы MacFrames-ті автоматтандырылған "қара қорап" сынау жүйесін құру үшін пайдаланды. SK8 жобалық құрастырғышы тікелей басқару құралдарының бай жиынтығын, соның ішінде интерактивті басқару элементтерін және жалпы, бірақ инвазивті емес байланыстыру құралдарын жасау үшін құрылды. Құрастырғыштың мақсаты – визуалды даму орталарын құру үшін визуалды/тікелей басқару интерфейсін ұсыну болды. Яғни, жүйе әр түрлі міндеттерге бейімделген толығымен басқа даму орталарын жасау үшін қолданылуы мүмкін. SK8 графикалық жүйесінің алғашқы нұсқасы HyperCard-ты кеңейту үшін жасалған, бұл карталарға бір "арқалық" үлгісінен гөрі бірнеше қабаттарды қосуға мүмкіндік берді. SK8 жүйесі бастапқыда Lisp-те бағдарламаланған. Бұл жалпы қолдануға тым күрделі деп саналды. Сонымен қатар, Apple компаниясында қолданылатын әртүрлі тілдердің санына қатысты алаңдаушылық күшейді. MacOS-ты жаңғыртудың жалпы жоспарының бір бөлігі ретінде жаңа біріктірілген скрипт тілі қажет болды. 1989 жылы Клейман Дэвид Кенфилд Смит пен Ларри Теслермен бірге AppleScript-тің алғашқы нұсқасын жобалап, іске асырды. AppleScript-тің бұл нұсқасы SK8 объектілерін пайдаланды, ал екі жылдан кейін Apple өнімдері бөлімі AppleScript-ті AppleEvents-ті AppleScript объектілерімен байланыс жасау үшін "клей" ретінде пайдалана отырып қайта іске қосты. Алғашқы прототип SK8Script деп аталды және 1992 жылы ассемблерде қайта іске асырылды. Advanced Technology Group-тың бірқатар зерттеушілері өз жобаларында SK8-ді пайдалана бастады. Кейбір университеттер мен корпорациялар да қатыса бастады. Жүйе Newton, QuickTime интерфейстері, процестер аралық байланыс прототиптерін жасау үшін пайдаланылды және балаларға арналған Stagecraft оқу құралы сияқты көптеген жобалардың прототиптерін жасау үшін қолданылды. 1992 және 1993 жылдары өнімділікті арттыру мақсатында SK8 толығымен қайта жасалды. Apple-дің Кембридж зерттеу орталығында Macintosh Common Lisp объектілік қоймасы оқшауланды және тікелей SK8 қоймасына қосылды. SK8Script жөндеушісі ассемблер тілінде қайта іске асырылды (бұрын Lisp-те болған), компилятор мен орындалу жылдамдығы жақсарды.
Сипаттама
SK8 жүйесі объектілер жүйесін, графикалық және компоненттік объектілерді, SK8Script тілін және Project Builder ортасын қамтиды.
Нысандар жүйесі
SK8 объект жүйесі, JavaScript сияқты, прототипке негізделген, бірақ JavaScript-тен ерекшелігі, объект қасиеттерінің өзі объектілер болды. Сондықтан, қасиеттер жай ғана мәндерді орнату немесе алу үшін кілттер ретінде қолданылатын атаулар ғана емес, сонымен қатар кез келген мінез-құлыққа ие болды. Бұл қасиеттерге интеллектуалды мінез-құлық беруге мүмкіндік берді (мысалы, логикалық қорытынды шығару жүйесін іске қосу немесе RPC желісінде терминалдар ретінде жұмыс істеу); оларды «ақылды қасиеттер» деп санауға болады. Мақсаты – қолданба бағдарламашыларына API-лерді үйренудің орнына объектілерді манипуляциялауға назар аударуға мүмкіндік беру болды – API-лер объектілердің ішіне енгізілген болар еді. Қасиет атауларын басқару үшін иерархиялық кеңістік құрылмады.
SK8Скрипт
1989 жылға дейін SK8-дің скрипт тілі Lisp болды. Кейіннен ол SK8Script-ке өзгертілді, оған HyperTalk (HT) үлкен әсер етті. SK8Script пен HyperTalk арасындағы көптеген айырмашылықтар HT ұғымдарын жалпылау болып табылады, олар HyperCard әлеміндегі нақты объектілермен тығыз байланысты алып тастап, оларды кез келген объектімен өзара әрекеттесе алатын жалпы синтаксиспен ауыстырды. HT сияқты, SK8Script жүйесіндегі маңызды ұғымдар – "контейнерлер", олар дәстүрлі жүйелердегі объектілерге сәйкес келеді, және осы контейнерлерді анықтауға және тізімдеуге мүмкіндік беретін "бөлу" жүйесі. HT объектілер мен жиынтықтарды атаудың әртүрлі тәсілдерін ұсынды, бағдарламашыға ағымдағы жағдайда ең қолайлы синтаксисті таңдауға және басқа жерде мүлдем басқа синтаксисті пайдалануға рұқсат берді. SK8Script осыған ұқсас жүйені ұсынды.
Графика және компоненттік нысандар
SK8 ғаламы сахнадағы актерлерді пайдаланатын мультимедияға бағытталған жүйеден тұрды. Актерлер – прототиптік Актер нысанына негізделген кез келген нысан, оның құрамында 2D графикалық қолдауды қамтамасыз етуге қажетті негізгі құрылым бар, мысалы, нысанның орналасуы мен көлемі. Актерлер сахнаға орналасқанда көрінетін болды, ал сахна – пайдаланушы оқиғаларын қабылдап, өзара әрекеттесуді қамтамасыз ететін көрінбейтін фондық нысан. SK8-де дәстүрлі терезе басқа графикалық нысан сияқты нысан болатын. Актер сахнада болғанда, ол терезе сияқты әрекет ете алатын. Терезе сияқты әрекет ететін күрделі нысандарды (мысалы, донат тәрізді терезе; оның ішкі бөлігінің мөлдірлігі 0%, ал ішінде мәтін нысаны немесе кадрында фильм ойнатылатын) жасау оңай болды. "Гало" деп аталатын нысан визуалды дамыту ортасында манипуляция үшін көлемін өзгертуге арналған тұтқалар мен басқа да виджеттерді қамтамасыз етті. Барлық SK8 актерлері басқа актерлерді қамтуы мүмкін. Иерархияны "бөлшектеу өрнектері" арқылы басқаруға болады, сондықтан CoolOval-дағы бірінші тіктөртбұрыштың көрінетінін "true" деп орнатуға болады. Нысандарды сахнаға "insert" командасы арқылы жылжыту арқылы көрінеді, мысалы, "insert CoolOval into the stage" – бұл овал мен тіктөртбұрыш екеуін де көрсетеді. Графикалық интерфейстер (GUI) тек актерлерден құралды. Терезе сияқты нысан басқа нысандарды (мысалы, жабу түймелері, виджеттер) қамтитын мөлдір емес тіктөртбұрыштан құрылуы мүмкін. Әрбір актердің сурет салу стилін Рендерер бақылайды, ол GUI құру процесіне көмектеседі. Мысалы, BevelRenderer актердің шеттерін бейімдеу үшін қолданылуы мүмкін, бұл Windows 3.x басқару элементтеріне немесе NeXTSTEP-тегі тақырып жолағына ұқсас эффект тудырады. Басқа рендерерлерге түс және кескін толтырулар, градиенттер, плиткалар және араласулар кіреді. Бағдарламалау тұрғысынан ешқандай айырмашылық болмаса да, тіктөртбұрыштар сияқты қарапайым нысандар "геометриялық актерлер" деп, ал түймелер сияқты дәстүрлі GUI элементтері "интерфейс актерлері" деп жіктелетін. Сахна пайдаланушы жасаған оқиғаларды, мысалы, тышқанның басылуын және пернелерді басуды қабылдап, актерлерге жіберетін. Көрнекі иерархия қай нысан хабарды бірінші болып алатынын анықтайды – сахна Z тәртібімен орналастырылған және алдыңғы жақтағы нысандар хабарды бірінші болып алады. Хабарларды "do inherited" командасы арқылы сынып/прототип иерархиясы бойынша жоғары жіберуге болады.
Жоба жасаушы
Project Builder – визуалды даму орталарын құруға арналған орта. Ол кодты өңдеу, түзету, графика және интеллектуалды компоненттер кітапханасын, орындалу уақытын баптау мүмкіндігін және тікелей манипуляциялық графикалық интерфейс құрастыру жүйесін қамтамасыз етті. Builder жүйесінің маңызды бөлігі – "Шолу" панелі болды, онда ашық жобадағы барлық объектілер санаттар бойынша тізімделген. Оларға кітапханалар, пайдаланушы жасаған функциялар мен әдістер, айнымалылар және т.б. кірді. Бұл объектілерді екі рет басу арқылы немесе GUI құрастырғышында таңдалғанда пайда болатын контексттік меню арқылы қарауға және өңдеуге болады. "Объектілер редакторы" объектінің "қасиеттерін" (инстанция және сынып айнымалыларын) бір бөлімде, ал "құралдарын" (әдістерін) екінші бөлімде көрсетті. GUI құрастырғышы визуалды объектілерді құру үшін сүйреп тастау жүйесін қамтыды. SK8 дәстүрлі "экрандарды" пайдаланбады, оның орнына оқиғаларды және визуалды объектілерді басқару үшін фон ретінде қызмет ететін көрінбейтін "Сцена" объектісін қолданды. Қызығы, ештеңе көрсету үшін дәстүрлі мағынадағы терезелер қажет болған жоқ. Шындығында, кез келген визуалды объект сүйреп тастау және басқа да интеллектуалды қасиеттері арқылы терезе сияқты мінез-құлыққа ие бола алатын. SK8 сонымен қатар HyperCard-та болмаған толық мәзір жолақтарын өңдеу және бағдарламалау жүйесін қамтыды. HyperCard-тан жиі сұралатын тағы бір мүмкіндік – Macintosh ресурстарын жобаға импорттауға және экспорттауға мүмкіндік беретін медиа редакторы болды. SK8 бұл мүмкіндікті IDE-ге біріктірді. Жүйенің басқа компоненттеріне онлайн анықтамалық жүйесі, жүйелік объектілер мен командалар тізімі, код редакторы және түзетуші терезелері кірді.
Жүйемен өзара іс-қимыл
SK8Script операциялық жүйе функцияларын шақыру және олардан шығу жүйесін ұсынды, бұл Macintosh Toolbox-пен тікелей байланыс жасауға мүмкіндік берді. HyperCard-та кез келген Toolbox кодымен өзара әрекеттесу XCMD және XFCN деп аталатын арнайы код ресурстары арқылы жүзеге асырылды, олар функционалдықты қара жәшік ретінде жасырды. Олар бір операцияда шақырылып, нәтижесі қайтарылды, ал ішкі операциялар көрінбеді. SK8 арқылы SK8Script капсулаланған кодпен тікелей өзара әрекеттесе алады, айнымалыларды орнатуға, функцияларды шақыруға және нәтижелерді алуға болады. Сыртқы код та SK8Script-ке шақырып, айнымалыларды қарап, өзгерте алады немесе функцияларды шақыра алады.