Главная » 2015 » Сентябрь » 14 » Отличия Модулы-3 от Оберона-2
10:51
Отличия Модулы-3 от Оберона-2
Языки Модула-3 и Оберон-2 являются родственными языками. Это и не удивительно, ведь во время разработки Модулы-3 велись консультации с Никлаусом Виртом, который в это время занимался разработкой языка Оберон-2. Цитата:The Modula-3 project started in November 1986 when Maurice Wilkes wrote to Niklaus Wirth with some ideas for a new version of Modula. Wirth had already moved on to Oberon, but had no problems with Wilkes's team continuing development under the Modula name.Хотелось бы представить некоторые отличия между двумя этими языками. Основное отличие Модулы-3 от Оберона-2 заключается в том, что расширяемым типом является не запись (RECORD), а объект (OBJECT). Причём, объект является ссылочным типом. Работать с ним можно так же, как и с записями в Обероне (первой версии) и Ada95, а можно и по-своему:TYPEObj = OBJECTMETHODSsome() = Some;END;PROCEDURE Some(o: Obj) =BEGIN(* Что-то *)END Some;То есть, раздел METHODS в объекте можно и не указывать, а пользоваться процедурой Some, как это принято в Аде95 и Обероне-1.Указатель на тип в Модуле-3 записывается так:TYPE A = REF ARRAY OF INTEGER;вместоTYPE A = POINTER TO ARRAY OF INTEGER;в Обероне.Статические массивы создаются так же, как это принято в Паскале и Модуле-2:TYPE A = ARRAY [1..10] OF INTEGER;В описании процедуры, после её сигнатуры ставится знак ;".Чтобы узнать длину массива, нужно использовать функцию NUMBER(a) вместо LEN(a). Причём, чтобы узнать длину динамического массива, нужно использовать разыменование указателя - NUMBER(a^), иначе будет ошибка.При описании модуля в Модуле-3 используется интерфейс модуля и его тело. Это качество было позаимствовано из Модулы-2 (DEFINITION MODULE).В Модуле-3 имеется поддержка обобщённого программирования (Generics). Как и у Ады95, обобщения реализованы на уровне модуля, а не на уровне расширяемого типа, как это сделано в C++, Java или Delphi.Также, в Модуле-3 имеются исключения. Внешне они похожи на исключения в Delphi. Основное отличие заключается в том, что объект исключения не является переменной расширяемого типа. Для описания исключений имеется ключевое слово EXCEPTION.
Просмотров: 391 | Добавил: admin | Рейтинг: 0.0/0
Всего комментариев: 0
avatar