Кіріспе

Оберон 2 – бастапқы Оберон бағдарламалау тілінің кеңейтімі, ол шектеулі рефлексивті бағдарламалау (рефлексия) және объектіге бағытталған бағдарламалау мүмкіндіктерін, ашық массивтерді көрсеткіштік базалық типтер ретінде, тек оқуға арналған өріс экспортын және Modula 2-ден FOR циклын қайта енгізеді. Ол 1991 жылы Цюрихтегі ETH-де Никлаус Вирт және ХансПетер Мёссенбёк әзірледі, қазір ол Австрияның Линц университетінің Жүйелік бағдарламалық құралдар институтында (SSW) жұмыс істейді. Оберон 2 – Оберонның суперсеті, оған толыққанды үйлесімді және Object Oberon-ның жаңа дизайны. Оберон 2 шектеулі рефлексияны және интерфейстері немесе миксиндері жоқ бір мұрагерлікті ("типті кеңейту") Oberon-нан алды, бірақ тиімді виртуалды әдістерді ("типке байланысты процедуралар") қосты. Әдіс шақырулары C++ стиліндегі виртуалды әдіс кестелерін пайдаланып, орындалу кезінде шешілді. Smalltalk сияқты толыққанды объектіге бағытталған тілдермен салыстырғанда, Оберон 2-де негізгі дерек типтері мен сыныптар объектілер емес, көптеген операциялар әдістер емес, хабар алмасу жоқ (эмуляциялауға болады, мысалы, ETH Oberon-де көрсетілгендей, рефлексия және хабар кеңейту арқылы), және полиморфизм ортақ сыныптың кіші сыныптарымен шектеледі (Python-дағы қазтай тестілеу сияқты емес, және Java-дағыдай интерфейстерді анықтау мүмкін емес). Оберон 2 объекті немесе сынып деңгейінде инкапсуляцияны қолдамайды, бірақ осы мақсатта модульдерді пайдалануға болады. Оберон 2-дегі рефлексия метаобъектілерді пайдаланбайды, орындалатын бинарлық файлдарға компиляцияланған және типтерді және/немесе процедураларды анықтайтын модульдерде ашылған типтік сипаттамалардан оқиды. Егер осы құрылымдардың форматы тіл деңгейінде көрсетілсе (мысалы, ETH Oberon үшін), кітапхана деңгейінде рефлексияны жүзеге асыруға болады. Осылайша, тілдік кодты өзгертпей, оны негізінен кітапхана деңгейінде жүзеге асыруға болады. Шындығында, ETH Oberon тіл және кітапхана деңгейіндегі рефлексия мүмкіндіктерін кеңінен пайдаланады. Оберон 2 Java сияқты қоқыс жинау үшін кіріктірілген орындалу уақыты қолдауын қамтамасыз етеді және C және C++-қа тән стек және массив шегінен асып кету проблемаларын және жадты қолмен басқару мәселелерін жоятын шектеулерді және массив индексін тексеруді жүзеге асырады. Модульдік архитектура арқылы символ файлдарын және атау кеңістіктерін пайдалана отырып, жеке компиляция жылдам қайта құруды қамтамасыз етеді, өйткені тек өзгертілген интерфейстері бар модульдерді қайта компиляциялау қажет. Компонент Паскаль тілі – Оберон 2-нің жетілдірілген түрі.

Түрге байланысты рәсімдер

Процедуралар жазбаға (немесе сілтемеге) байланыстырылуы мүмкін. Олар объектіге бағытталған бағдарламалаудағы нысан әдістерімен мағынасы бірдей.

Тек оқу үшін экспорттау

Экспортталған айнымалылар мен жазба өрістеріне тек оқуға рұқсат етуге болады. Бұл көріну белгісімен (" ") көрсетіледі.

Ашық массивтер

Бұрын тек формалды параметрлердің типтері ретінде ғана жариялануға болатын ашық массивтерді енді көрсеткіштің негізгі типтері ретінде жариялауға болады.

FOR мәлімдемесі

Паскаль және Modula 2 тілдеріндегі FOR операторы Oberon жүйесінде іске асырылмады. Ол Oberon 2-де қайтадан қолдануға енгізілді.

Орындау уақытында түрін тексеру

Oberon 2 объектілердің динамикалық түрін тексеру үшін бірнеше механизмдерді ұсынады. Мысалы, егер Bird объектісі Duck немесе Cuckoo түріне жаратылса, Oberon 2 бағдарламашыға орындалу барысында объектінің нақты түріне сәйкес әрекет етуге мүмкіндік береді. Бірінші, ең көп қолданылатын тәсіл – тип байланыстыру жүйесіне сүйену. Екінші тәсіл – WITH операторын пайдалану, ол айнымалының динамикалық подтипін тікелей тексеруге мүмкіндік береді. Екі жағдайда да, подтип анықталғаннан кейін бағдарламашы осы подтипке сәйкес келетін типтік процедураларды немесе айнымалыларды қолдана алады. Осы тәсілдердің мысалдары төменде көрсетілген. Oberon 2-де қолданылатын WITH операторының түрі Pascal және Modula 2-дегі WITH операторынан өзгеше екенін ескеріңіз. Жазу өрістеріне қолжетімділікті қысқартудың бұл әдісі Oberon немесе Oberon 2-де іске асырылмаған.

IS операторы

Үшінші тәсіл IS операторын пайдаланып іске асыруға болады. Бұл тең (=), үлкен (>), сияқтыларымен бірдей басымдыққа ие қатынас операторы, бірақ ол динамикалық түрді тексереді. Дегенмен, басқа екі тәсілден өзгеше, ол бағдарламашыға анықталған субтипке қол жеткізуге мүмкіндік бермейді.

Қолданылу

ETH-тің Oberon 2 компиляторлары Windows, Linux, Solaris және macOS нұсқаларын қамтиды. Oxford Oberon 2 компиляторы түпкілікті машиналық кодқа компиляцияланады және Windows, Linux және macOS жүйелерінде JIT-ті пайдалана алады. Оны Майк Спиви жасап, күтіп-ұстайды және Keiko виртуалды машинасы қолданылады. Ұлыбританияның Манчестер университетінің Стивен Дж. Беван жасаған Oberon 2 Lex сканері мен Yacc талдаушысы бар, ол Мессенбок пен Вирт еңбегіне негізделген. Оның нұсқасы 1.4. Операциялық жүйені қамтитын және PC класындағы аппараттық құрылғыда тікелей жүктелетін Native Oberon деп аталатын нұсқа бар. ETHZ-де Oberon-ның NET нұсқасы жасалған, оған шағын NET-ке қатысты кеңейтімдер қосылған. Бағдарламашының ашық жұмыс ортасы (POW!) – өте қарапайым интеграцияланған әзірлеу ортасы, ол редактормен, байланыстырушымен және Oberon 2 компиляторымен бірге келеді. Бұл Windows-қа орындалатын файлдарға компиляцияланады. Толық бастапқы код ұсынылады; компилятор Oberon 2 тілінде жазылған. Java to Oberon компиляторы (JOB) Ресейдің Вологда университетінде жазылған. Ол Java кластық файлдар (байт-код) түрінде объектілік кодты шығарады. Кейбір JOB-қа тән, Java-мен үйлесімді кластар ұсынылады, бірақ олар Oberon сияқты компоненттік иерархияны қолданады. Optimizing Oberon 2 компиляторы бағдарлама жасау үшін GNU Compiler Collection (GCC) құралдар жинағын пайдалана отырып, C тіліне компиляцияланады. Oberon Script – Oberon тілін толық JavaScript тіліне аударатын компилятор. Компилятор JavaScript тілінде жазылған, сондықтан оны веб-беттерден Oberon тілінде жазылған скрипттерді өңдеу үшін шақыруға болады. XDS Modula2/Oberon2 – Ресейдің Новосибирск қаласындағы Excelsior LLC компаниясының әзірлеген жүйесі. Ол Intel Pentium процессорлары үшін оптимизациялық компиляторды немесе платформааралық бағдарламалық жасақтаманы әзірлеу үшін "C арқылы" аудармашыны қамтиды. Windows және Linux жүйелері үшін қолжетімді. Компилятор Oberon 2 тілінде жазылған және өзін-өзі компиляциялайды. Oberon Revival – Oberon 2 және Component Pascal (BlackBox Component Builder) бағдарламаларын Linux және Win32 жүйелеріне енгізу жобасы. BlackBox-тың Linux порты бұрын қолжетімді болған жоқ және ол бастапқыда тек Microsoft Windows жүйесінде жұмыс істеді. XOberon – PowerPC үшін Oberon 2 тілінде жазылған нақты уақыт опералық жүйесі. Портативті Oberon 2 компиляторы (OP2) Oberon жүйесін коммерциялық платформаларға көшіру үшін жасалған.

Кейко байт коды

Оберон-2 Кеико виртуалды машинасына бағытталған. Мысалы, басқа тілдердің компиляторлары сияқты (O коды, p коды т.б. қараңыз), Oxford Oberon 2 компиляторы алдымен байт-код интерпретаторымен немесе дереу компиляциялау арқылы орындалатын аралық байт-кодқа (Keiko bytecode) компиляциялайды.