Кіріспе

Жалпы мақсаттағы бағдарламалау тілі

Oberon – Niklaus Wirth алғаш рет 1987 жылы жариялаған жалпы мақсаттағы бағдарламалау тілі және ALGOL сияқты тілдердің Wirthian отбасының соңғы мүшесі (Euler, ALGOL W, Pascal, Modula және Modula 2). Oberon, Паскальдың тікелей мұрагері Modula 2 тілінің мүмкіндіктерін арттыру және оның күрделілігін бірден азайту мақсатымен жасалған тырақты күш-жігердің нәтижесі болды. Оның ең маңызды жаңа мүмкіндігі – жазба типтерінің типтерін кеңейту концепциясы. Бұл, қатаң түрде статикалық типтеу қағидасынан өзгеше, қолданыстағы типтер негізінде жаңа дерек түрлерін құруға және оларды байланыстыруға мүмкіндік береді. Типтің кеңейтілуі – Wirth-тің мұрагерлікке қатысты тәсілі, ол бастапқы сайттың көзқарасын көрсетеді. Oberon Швейцариядағы Цюрихтегі ETH-де сол атпен аталған операциялық жүйенің жасалуының бір бөлігі ретінде әзірленді. Атауы, Уран планетасының серігі – Оберонның «Вояджер» ғарыш зонды түсірген суреттерінен, сондай-ақ Оберонның эльфтердің патшасы ретінде танымал болуынан шабыт алды. Oberon Wirth тарапынан қолдау көрсетілді, ал Project Oberon компиляторының соңғы жаңартуы 2020 жылдың 6 наурызында жасалды.

Дизайн

Оберон Альберт Эйнштейнге жатқызылатын мақалды еске алып жасалған: "Нәрсені мүмкіндігінше қарапайым ету керек, бірақ одан артық емес". Басты нұсқау – негізгі және маңызды мүмкіндіктерге назар шоғырландыру және уақытша мәселелерді жою болды. Тағы бір фактор – C++ және Ada сияқты тілдердің күрделілігінің артуын мойындау. Мұндай тілдерден өзгеше, Оберон тілді кеңейту үшін кітапханалық ұғымды қолдануға баса мән береді. Modula 2-де болған санау және кіші диапазон түрлері алынып тасталды, ал жиындық түрлер бүтін сандар жиындықтарымен ғана шектелді. Импортталған барлық элементтер олар жарияланған модульдің атымен көрсетілуі керек. Төменгі деңгейдегі мүмкіндіктер импорт тізімінде SYSTEM идентификаторын қамтитын модульде ғана қолданылуына рұқсат беру арқылы ерекшеленеді. Қатаң типтік тексеру, тіпті модульдер арасында, орындалу кезінде индекс тексеру, нөлдік көрсеткіштерді тексеру және қауіпсіз типтік кеңейту тұжырымдамасы бағдарламалауға тек тіл ережелеріне сүйенуге кең мүмкіндік береді. Бұл стратегияның мақсаты – оқуға оңай, іске асыруға қарапайым және өте тиімді тіл жасау. Oberon компиляторлары ықшам және жылдам деп есептеледі, сонымен қатар коммерциялық компиляторлармен салыстырылатын код сапасын қамтамасыз етеді.

Нысанға бағдарлану

Oberon абстракциялар мен әр түрлі құрылымдарды құру үшін жазба түрлерін кеңейтуді қолдайды. Oberon 2 және Active Oberon сияқты кейінгі диалекттерден өзгеше, түпнұсқа Oberon тілінде диспетчерлік механизм тілдік мүмкіндік ретінде болмағанмен, ол бағдарламалау тәсілі немесе дизайн үлгісі ретінде қолданылады. Бұл объектіге бағытталған бағдарламалауда (ООП) үлкен икемділікке мүмкіндік береді. Oberon операциялық жүйесінде диспетчерлік шақыру үшін екі бағдарламалау тәсілі бірге қолданылады: әдістер жиынтығы және хабарларды өңдеуші.

Оберон

Интернетте Oberon (тіл) және Oberon (операциялық жүйе) жүйелерін тегін орнатуға болады (олардың бірнешесі ETHZ-тің өзінен).

Оберон-2

Бірінші шығарылған ерекшелікке бірнеше өзгерістер енгізілді. Мысалы, объектіге бағдарланған бағдарламалау (ООП) мүмкіндіктері қосылды, FOR циклі қайта енгізілді. Соның нәтижесінде Oberon 2 пайда болды. Бір нұсқасы, Native Oberon деп аталады, оған операциялық жүйе кіреді және IBM PC үйлесімді аппараттық құралдарда тікелей жүктеледі. ETHZ-де Oberon-ның NET нұсқасы жасалды, оған шағын NET-ке қатысты кеңейтімдер қосылды. 1993 жылы ETHZ-дің еншілес компаниясы Oberon L деп аталған Oberon 2 диалектін нарыққа шығарды. 1997 жылы ол Component Pascal деп қайта аталды. ETH әзірлеген Oberon 2 компиляторлары Microsoft Windows, Linux, Solaris және классикалық Mac OS үшін нұсқаларды қамтиды. Басқа көздерден Atari TOS және AmigaOS сияқты басқа операциялық жүйелер үшін де нұсқалар бар. Ұлыбританияның Манчестер университетінің Стивен Дж. Беван жасаған Oberon 2 Lex сканері мен Yacc талдаушысы Мессенбок пен Вирт еңбегіне негізделген. Оның нұсқасы 1.4. Басқа компиляторларға Oxford Oberon 2, ол Oberon 07-ні де түсінеді, және Vishap Oberon кіреді. Соңғысы Йозеф Темплдің Oberon-ды C тіліне аударатын Ofront деп аталатын компиляторына негізделген, ол өз кезегінде Регис Крельердің ETHZ-де жасаған OP2 компиляторына негізделген.

Оберон-07

2007 жылы Никлаус Вирт анықтаған және 2008, 2011, 2013, 2014, 2015 және 2016 жылдары қайта қарастырылған Oberon 07, Oberon 2 емес, Oberon-ның бастапқы нұсқасына негізделген. Негізгі өзгерістер: нақты сандық түрлендіру функциялары (мысалы, FLOOR және FLT) міндетті түрде қолданылуы керек; WITH, LOOP және EXIT операторлары алынып тасталды; WHILE операторлары кеңейтілді; CASE операторларын типті кеңейту сынақтары үшін пайдалануға болады; RETURN операторлары функцияның соңына ғана қосылуы мүмкін; импортталған айнымалылар мен құрылымдық мән параметрлері тек оқу режимінде қолжетімді; және массивтер COPY операторын қолданбай тағайындалуы мүмкін. Oberon 07 компиляторлары көптеген компьютерлік жүйелермен жұмыс істеу үшін жасалған. Вирт компиляторы өзінің жеке дизайнындағы қысқартылған командалар жинағын (RISC) пайдаланады, ол 2013 жылы Project Oberon операциялық жүйесін Xilinx Field Programmable Gate Array (FPGA) Spartan 3 тақтасында іске қосу үшін қолданылды. RISC процессорының FPGA Spartan 6, Spartan 7, Artix 7-ге портталған нұсқалары, сондай-ақ Windows үшін RISC эмуляторы (Linux және macOS-та компиляцияланатын және Windows үшін бинарлық файлдары бар) да бар. OBNC C арқылы компиляцияланады және кез келген Portable Operating System Interface (POSIX) үйлесімді операциялық жүйеде қолданылуы мүмкін. Astrobe коммерциялық нұсқасы 32 биттік ARM Cortex M3, M4 және M7 микроконтроллерлеріне бағытталған. Patchouli компиляторы 64 биттік Windows бинарлық файлдарын жасайды. Oberon 07M 32 биттік Windows бинарлық файлдарын жасайды және тілдің 2008 жылғы редакциясын іске асырады. Akron Windows және Linux үшін бинарлық файлдарды жасайды. OberonJS Oberon-ды JavaScript-ке аударады. Oberon үшін онлайн IDE бар. oberonc – Java виртуалды машинасы үшін жасалған нұсқа.

Белсенді оберон

Active Oberon – Oberon-ның тағы бір түрі, ол объектілерді (объектіге бағытталған қол жеткізуді қорғау және жергілікті белсенділікті басқарумен), жүйелік қорғалған талаптарды, басымдық бойынша үзіліске қабілетті жоспарлауды және әдістердің өзгертілген синтаксисін (Oberon терминологиясында типке байланысты процедуралар) қосады. Объектілер белсенді болуы мүмкін, яғни олар жіптер немесе процестер бола алады. Сонымен қатар, Active Oberon операторларды (қоса алғанда, жүктемелерді) жүзеге асыру тәсілін, массивтерді пайдаланудың кеңейтілген синтаксисін (OberonX тілінің кеңейтімдеріне және 2006 жылғы Оксфорд, Ұлыбританияда өткен 7-ші Бірлескен Модульдік Тілдер Конференциясының материалдарына қараңыз) және атау кеңістіктерін біледі. Операциялық жүйе A2 (бұрын Active Object System (AOS), кейін Bluebottle), әсіресе ядросы, әртүрлі белсенді объектілерді синхрондап және үйлестіреді. ETHZ белсенді объектілерді, оларға негізделген операциялық жүйелерді (Active Object System (AOS), Bluebottle, A2) және тіл үшін ортаны (JDK, HTTP, FTP және т.б.) қолдайтын Active Oberon-ды жариялады. ETHZ-тің көптеген бұрынғы жобалары сияқты, олардың екеуі де Интернеттен жүктеуге қолжетімді. 2003 жылдан бастап қолдау көрсетілетін орталық процессорлар (CPU) x86 бір және екі ядролы процессорлар мен StrongARM процессорларын қамтиды.

Тілдері

Бұл тілдер отбасының дамуы жалғасты. Oberon 2-нің тағы бір кеңейтімі бастапқыда Oberon/L деп аталды, бірақ кейін Component Pascal (CP) деп қайта аталды. CP Windows және классикалық Mac OS жүйелері үшін Oberon microsystems (ETHZ коммерциялық еншілес компаниясы) және NET үшін Квинсленд технологиялық университетімен әзірленді. Сонымен қатар, Lagoona және Obliq тілдері Oberon әдістерін арнайы салаларға енгізеді. Кейіннен ETHZ-дегі NET әзірлеу жұмыстары Zonnon деп аталатын жаңа тілге бағытталды. Бұл тіл Oberon мүмкіндіктерін қамтиды және Паскальдан кейбір мүмкіндіктерді (санамаланған типтер, кіріктірілген IO) қайта жаңартады, бірақ синтаксистік айырмашылықтары бар. Басқа мүмкіндіктерге белсенді объектілерді қолдау, операторларды жүктеу және қателерді басқару кіреді. Oberon V (алғашқыда Seneca, Кіші Сенека атымен) – суперкомпьютерлерде сандық қолданбаларға, әсіресе векторлық немесе конвейерлік архитектураларға арналған Oberon тілінің вариациясы. Ол массив құрастырушыларын және ALL операторын қамтиды.