![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Глава 2. Характеристика языка
Оберон Описание Оберона было опубликовано Виртом в 1988 году. Больше всего язык похож на своего непосредственного предшественника — Модулу-2. Н. Вирт подчеркивает, что Оберон получен изъятием из Модулы многого и добавлением лишь некоторых усовершенствований. Из Модулы-2 удалены: · записи с вариантами; · непрозрачный (скрытый) экспорт типов; · перечислимые типы; · ограниченные типы (диапазоны); · множества общего вида. Оставлены только множества из ограниченного диапазона целых, которые являются лишь высокоуровневым средством манипулирования битами; · тип cardinal; · указатели не на записи и массивы; · массивы с нецелочисленными индексами и отличной от нуля нижней границей; · локальные модули; · не уточненный именем модуля импорт идентификаторов; · модули определений, главный модуль и понятие главной программы; · прежняя форма оператора with; · оператор FOR; · типы address и word (заменены типом byte) и адресная арифметика; · преобразование типов, обозначаемое идентификатором типа; · средства параллельного программирования. Новые возможности, появившиеся в Обероне: · средства объектно-ориентированного программирования: расширение типов, проверка и охрана типа; · поглощение типов. Переход к тридцатидвухразрядным архитектурам определяет большое разнообразие типов числовых данных, что сделало неудобным практически полный запрет Модулы-2 на присваивание неодинаковых типов. Числовые типы Оберона образуют иерархию: shortint < = integer < = longint < = real < = longreal. В этой цепочке значения «меньшего» типа могут быть присвоены переменным «большего» типа; · многомерные открытые массивы; · сборщик мусора. На первый взгляд может показаться, что упрощения чрезмерны. Чего только стоит устранение цикла FOR. Но по некотором размышлении в этом можно увидеть пользу. Например, при освоении программирования одним из трудных моментов является приобретение навыков применения циклов с пред- и постусловием. А когда цикла FOR, а тем более GOTO нет, волей-неволей научишься применять WHILE, REPEAT и LOOP! Аскетизм Оберона является его исключительно полезной чертой, особенно если язык используется для обучения программированию. Сочетание простоты, строгости и неизбыточности предоставляет начинающему программисту великолепную возможность, не заблудившись в дебрях, выработать хороший стиль, освоив при этом и структурное, и объектно-ориентированное, и модульно-компонентное программирование. Усовершенствована по сравнению с Модулой-2 структура программы. Вернее, понятия программы как таковой в Обероне вообще нет. Все, с чем вы имеете дело, то совокупность модулей-компонентов, которые загружаются в память динамически. Инициировать выполнение можно вызовом команды, в качестве которой рассматривается любая экспортированная процедура без параметров. Экспорт Обероне оформляется исключительно изящно. Достаточно после имени экспортируемого объекта (процедуры, константы, переменной, типа) поставить звездочку (*). При этом программисту не нужно вручную выписывать спецификацию модуля, рискуя внести несоответствие между спецификацией и реализацией. Перечень экспортированного — интерфейс модуля — создается автоматически. Объектно-ориентированным языком делают Оберон средства расширения типов. При конструировании объектной модели языка Вирт уделил первоочередное внимание не внесению в язык модной терминологии, а поддержке реальных программистских потребностей. Слова object в Обероне вообще нет; объект — это просто расширяемая запись. Предусмотрены адекватные механизмы, позволяющие оперировать динамическими объектами, используя легальные и безопасные средства. В Обероне такими средствами являются проверка и охрана типа. Указатели и параметры-переменные типа запись могут иметь как статический (определенный при описании), так и динамический тип (соответствующий типу того объекта, на который в данный момент фактически ссылается указатель). Проверка типа позволяет узнать динамический тип объекта, а охрана — обратиться к фактически имеющимся полям, имея твердую гарантию их существования. Одна из главных черт Оберона — строгость. Строгий контроль соответствия типов, унаследованный от Паскаля и Модулы-2, строгие правила экспорта и импорта, строгий синтаксис обращения к полям записей. И в то же время Оберон допускает гибкость при обращении с данными. Это относится к уже обсуждавшемуся расширению типов, а также к простой и красивой концепции поглощения типов. Важнейшее свойство языка — обозримость. Даже после первого знакомства с его описанием, объем которого составляет всего около 20 страниц, у опытного программиста создается ощущение неплохого знания языка. Оберон, в отличие от таких языков как ПЛ/1, Алгол-68, Си++, Объектный Паскаль, Ява или Си# нетрудно знать в совершенстве и целиком. Такое свойство языка невозможно переоценить.
|