Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[0]

ОБЕРОН - воплощение мечты Никлауса Вирта Сергей Свердлов (Компьютерра, №46, 25.11.1996) доцент Вологодского педагогического университета, ivt@vgpi.vologda.su

Кое-кто сегодня полагает, что Н.Вирт и Г. Буч имеют теперь повод позавидовать крутым парням из Borland, так здорово усовершенствовавшим Паскаль. Не берусь говорит про Буча, но Никлаус Вирт (Nicklaus Wirth) мечтал, уж точно, совсем о другом. В то время как Borland превращала простой и изящный Паскаль в его собственную противоположность, Вирт предложил язык программирования Оберон, который является развитием Мо-дулы-2, но по сути гораздо проще и в то же время мощнее Модулы (бывает и так !). Более того, некоторые нововведения, появившиеся в Object Pascal в 1995 году, Вирт включил в Оберон еще в 1987-м.

Оберон - самый удаленный от планеты и второй по величине спутник Урана. Открыт в 1787 году У.Гершелем.

Что такое хорошо

Принято считать, что "хорошо" именно то, что нам предлагают в своих коммерческих разработках монополисты компьютерной отрасли. Но ведь они руководствуются своими, а отнюдь не нашими интересами! Не выпустив в свое время полностью готовый компилятор Турбо Модула-2, а продолжив расширение Паскаля, компания Borland ориентировалась на прогноз своей, а вовсе не нашей будущей прибыли. В то же время всегда существовали и существуют разработки, которые создаются не в обстановке сумасшедшей спешки и не в условиях гонки на выживание, а являются продуктом обстоятельной и вдумчивой работы.

Мне, конечно, возразят. Скажут "Все решает рынок. То, что имеет успех на рынке, - хорошо. Остальным - так им и надо". Полно. Разве вы не помните, как доведенные до исступления американские домашние хозяйки в ночь на 24 августа 1995 года стояли в очередях в компьютерные магазины за вожделенной коробочкой с белыми облаками? Или вы, может быть, не мыли голову шампунем Head & Shoulders? Реклама может все!

Самое ужасное, что страдают в первую очередь юные. Ведь им же не с чем сравнивать. И, когда молодой человек слышит "Настоящие профессионалы выбирают Си++" -что ему остается? Кто же не хочет стать "настоящим профессионалом"!

Сориентироваться молодым довольно трудно. Прилавки книжных магазинов забиты опусами вида "Освоение полными идиотами системы X версии Y для операционной системы W за Z дней". Когда я стал приносить на занятия книги Д.Кнута, Э.Дейкстры, Д. Ван Тассела, Г. Майерса, Б. Мейера К. Бодуэна, студенты были поражены в первую очередь самим фактом существования подобных книг. Признаюсь, что и сам, когда на книжном прилавке 20 лет назад рядом стояли трехтомник (как я теперь понимаю, классический) Д.Кнута "Искусство программирования для ЭВМ" и том К. Джермейна "Программирование на IBM/360", я выбрал Джермейна (издание третье, стереотипное - значит я не один). Вспомните, сорокалетние!

Что в имени твоем

Язык программирования Оберон создан Виртом в 1987 году в ходе разработки одноименной операционной системы для однопользовательской рабочей станции Ceres. Язык и операционная система названы именем одного из спутников планеты Уран - Обе-рона, открытого английским астрономом Уильямом Гершелем ровно за 200 лет до описываемых событий и носящего имя героя комедии Шекспира "Сон в летнюю ночь", царя эльфов и фей.


Внимание Вирта к спутнику далекой планеты было привлечено блистательным успехом экспедиции американского космического аппарата "Вояджер-2", который стартовав в 1977 году, в январе 86-го передал на Землю высококачественные снимки пяти известных к тому времени и десяти вновь открытых спутников Урана. Новые спутники некоторое время спустя также были названы именами шекспировских героев. На Вирта произвели впечатление надежность и удивительная живучесть бортового компьютера "Вояджера", который при относительной простоте обеспечил проведение уникального эксперимента.

Оберон, Оккам и Delphi

Английский философ XIV века Уильям Оккам выдвинул принцип, известный как "бритва Оккама": "Сущности не следует умножать без необходимости". Именно такого подхода к разработке и совершенствованию языков программирования Вирт придерживается на протяжении всей своей деятельности, а вот его оппоненты делают обычно наоборот. Так было, когда Вирт с Тони Хоаром вступил в конфликт с рабочей группой ГРТР,занимавшейся усовершенствованием АЛГОЛА-60. Группа создала АЛГОЛ-68, а Вирт создал Паскаль. Кто оказался прав?

Так было в конце 70-х, когда почти одновременно появились Ада и Модула-2 -языки, сравнимые функционально, но насколько Модула проще! И, наконец, Си++ и Object Pascal, с одной стороны, и Оберон - с другой. Синтаксис Оберона целиком помещается на одной странице, а его исчерпывающее описание занимает около 20 страниц.

Создатели же Object Pascal сплошь и рядом пренебрегают принципом бритвы Ок-кама. Возьмем самое дорогое, к чему они так трепетно относятся, - объекты. Посмотрите, сколько слов потребовалось для обслуживания этого понятия: as, class, constructor, destructor, inherited, is, object, property, abstract, default, dynamic, message, nodefault, override, private, protected, public, published, stored, virtual (я, кажется, что-то пропустил). Это при том, что разница между object и class состоит лишь во внутренних механизмах реализации. А сможете ли вы быстро ответить, чем отличаются public от published, private и protected?

Как же обстоят дела с объектами в Обероне? А никак! Там этого слова вообще нет! Но есть и наследование, и полиморфизм, и динамический контроль, и приведение типов, и скрытые поля. Сколько для всего этого потребовалось новых зарезервированных слов? Одно - is.

О слове "объект" хочется сказать особо. Слово это в последние годы превратилось в фетиш, ему придается какое-то магическое значение. Но ведь объекты - не самоцель. Согласитесь, что не существует потребности во чтобы то ни стало употребить в программе объекты. А вот, скажем, поддерживать список из разнотипных элементов с индивидуальным поведением - реальная необходимость во многих задачах. Оберон содержит все, что требуется для создания таких списков. Разные подходы к отбору языковых средств видны и на следующем примере. С самого начала (с 1988 года) в языке Оберон предусмотрены возможность проверки во время выполнения фактического типа объекта и безопасный способ манипулирования объектом в соответствии с фактическим типом (охрана типа). Без этих средств объектная модель языка не может считаться полноценной. В то же время Турбо Паскаль в течении многих лет с 1989 года (версия 5.5.) как-то без этого обходился. И только в Delphi появились необходимые механизмы, названные RTTI (неумеренное использование аббревиатур свидетельствует, на мой взгляд, или о неадекватности вводимых в обиход понятий, или о неспособности их авторов придумать для своих творений название хотя бы из двух слов).


Алгол, Паскаль, Модула, Оберон

Оберон стал продолжением линии языков Алгол-60, Паскаль, Модула-2. Как подчеркивает Вирт, язык получен исключением из Модулы-2 большого числа средств, а добавлением лишь немногих.

В Обероне отсутствуют записи с вариантами, перечислимые и ограниченные типы, множества общего вида, тип cardinal, нецелочисленные индексы массивов (нижняя граница индекса всегда 0), локальные модули и модули определений, списки экспорта, оператор for, прежний вариант оператора with и даже главная программа. Предусмотрены указатели только на записи и массивы. Упрощены списки импорта, в которых теперь встречаются только названия модулей (в то же время в тесте программы импортированные имена сопровождаются явным указанием модуля-экспортера).

Очень изящно теперь оформляется экспорт модулей. Те, кто пишет программы на Turbo (Borland, Object) Pascal, хорошо знают, как громоздко выглядят интерфейсные части модулей, особенно если там располагаются описания объектов. А поскольку все внутренности объектов вынужденно выставляются напоказ, возникает потребность в словах private и protected, public и published, что еще больше загромождает как текст, так и наше восприятие программы, а заодно и языка.

В Обероне экспортируемые имена просто помечаются звездочкой (*), а текст интерфейса формируется автоматически специальным инструментом Оберон-среды - смотрителем (это пушкинское слово мне кажется наиболее подходящим переводом для browser).

Основное добавление по сравнению с Модулой-2 - расширение типов (записей). Расширение типов (наследование) делает Оберон объектно-ориентированным языком. При этом, как уже говорилось, предусмотрены необходимые механизмы поддержки полиморфизма - проверка и охрана типа (их аналогом в Delphi является RTTI).

Очень естественно и просто решен в Обероне вопрос о совместимости числовых типов. Они образуют иерархию:

shortint<=integer<=longint<=real<=longreal

Значения "меньших" типов могут присваиваться "большим".

Открытые массивы в Обероне в отличие от Модулы могут быть многомерными. (В Delphi одномерные открытые массивы проходят по разряду нововведений).

Оберон и Оберон-2

" Сделай так просто, как возможно, но не проще того" - это высказывание Эйнштейна Вирт выбрал эпиграфом к описанию языка Оберон. Удивительно простой и даже аскетичный Оберон представляет собой, пожалуй, минимальный универсальный язык высокого уровня.

По прошествии некоторого времени, вероятно, не без сопротивления Вирт согласился с добавлениями к языку, предложенными его коллегами. Авторами описания Обе-рона-2 стали Никлаус Вирт и Ханспетер Мессенбёк (Hanspeter Moessenboek) - профессор университета Иоганна Кеплера в австрийском городе Линце. Эпиграф Эйнштейна был снят.

В Оберон-2 возвращен оператор for, которому незадолго до того Вирт приписывал "маргинальное значение". (Если бы не зарезервированные слова for, to и by, вернувшиеся в язык, Оберон-2 можно было бы назвать правильным расширением Оберона: любая программа на Обероне была бы и программой на Обероне-2.)



[стр.Начало] [стр.1] [стр.2]