|
||||
Меню:
Главная
Форум
Литература: Программирование и ремонт Импульсные блоки питания Неисправности и замена Радиоэлектронная аппаратура Микросхема в ТА Рубрикатор ТА Кабельные линии Обмотки и изоляция Радиоаппаратура Гибкие диски часть 2 часть 3 часть 4 часть 5 Ремонт компьютера часть 2 Аналитика: Монтаж Справочник Электроника Мощные высокочастотные транзисторы 200 микросхем Полупроводники ч.1 Часть 2 Алгоритмические проблемы 500 микросхем 500 микросхем Сортировка и поиск Монады Передача сигнала Электроника Прием сигнала Телевидиние Проектирование Эвм Оптимизация Автомобильная электроника Поляковтрансиверы Форт Тензодатчик Силовые полевые транзисторы Распределение частот Резисторные и термопарные Оберон Открытые системы шифрования Удк |
[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.) |
Среды: Smalltalk80 MicroCap Local bus Bios Pci 12С ML Микроконтроллеры: Atmel Intel Holtek AVR MSP430 Microchip Книги: Емкостный датчик 500 схем для радиолюбителей часть 2 (4) Структура компьютерных программ Автоматическая коммутация Кондиционирование и вентиляция Ошибки при монтаже Схемы звуковоспроизведения Дроссели для питания Блоки питания Детекторы перемещения Теория электропривода Адаптивное управление Измерение параметров Печатная плата pcad pcb Физика цвета Управлении софтверными проектами Математический аппарат Битовые строки Микроконтроллер nios Команды управления выполнением программы Перехода от ahdl к vhdl Холодный спай Усилители hi-fi Электронные часы Сердечники из распылённого железа Анализ алгоритмов 8-разрядные КМОП Классификация МПК История Устройства автоматики Системы и сети Частотность Справочник микросхем Вторичного электропитания Типы видеомониторов Радиобиблиотека Электронные системы Бесконтекстный язык Управление техническими системами Монтаж печатных плат Работа с коммуникациями Создание библиотечного компонента Нейрокомпьютерная техника Parser Пи-регулятор ч.1 ПИ-регулятор ч.2 Обработка списков Интегральные схемы Шина ISAВ Шина PCI Прикладная криптография Нетематическое: Взрывной автогидролиз Нечеткая логика Бытовые установки (укр) Автоматизация проектирования Сбор и защита Дискретная математика Kb радиостанция Энергетика Ретро: Прием в автомобиле Управление шаговым двигателем Магнитная запись Ремонт микроволновки Дискретные системы часть 2 | ||