Эйфель (язык программирования)

Эйфель (язык программирования)
Eiffel
Класс языка:

объектно-ориентированный

Появился в:

1986 г.

Автор(ы):

Bertrand Meyer

Последняя версия:

4.2

Типизация данных:

строгая, статическая

Основные реализации:

EiffelStudio, SmartEiffel, Visual Eiffel , Gobo Eiffel, "The Eiffel Compiler" tecomp

Испытал влияние:

Ada, Simula, Z

Повлиял на:

C#, D, Lisaac,


Эйфель (англ. Eiffel) — объектно-ориентированный язык программирования с Паскаль-подобным синтаксисом, разработанный Бертраном Мейером. Программы на Эйфеле работают в MS Windows, OS/2 и Си, то есть являются своеобразным препроцессором. Далее этот код компилируется с помощью компилятора Си.

Содержание

"Hello, world!" на Eiffel

Коротко:

class HELLO
    creation make
    feature make is
        do print("Hello World%N") end
end

Или развернуто:

indexing 
  description: "Программа Здравствуй,мир!" 
  author: "Elizabeth W. Brown"
class 
  HELLO 
creation    
  make
feature
  make is
    -- печать простого сообщения         
    do      
      io.put_string ("Hello World")
      io.put_new_line
    end
 end -- class HELLO

Примеры кода

Пример объявления класса на Eiffel:

class КВАДРАТ
  inherit ПРЯМОУГОЛЬНИК
  creation
    --заголовки конструкторов
  feature
    --свойства, описываемые здесь, являются видимыми для клиентов и подклассов
  feature {child}
    --свойства, описываемые здесь, являются скрытыми для клиентов, но видимыми для подклассов
  feature {none}
    --свойства, описываемые здесь, являются скрытыми для клиентов и подклассов
end

где свойства — это общее название полей и методов. То есть атрибутов (attributes) и подпрограмм (routines) в терминологии Eiffel. Подпрограммы в подклассах могут замещать наследуемые только при совпадении их сигнатур. Ещё пример:

class COMPLEX
  creation
  initComplex
  feature
    real_part, imag_part: REAL
  feature
    initComplex(r, i: REAL) is
      do
        real_part := r
        imag_part := i
      end
end --class COMPLEX

Ссылка определяется обычно:

  complex_num: COMPLEX

Инициализация объекта (вызов конструктора):

  create complex_num.initComplex(2.4, −3.2)

Иногда используется замена слова create на такое:

!!complex_num.initComplex(2.4, −3.2);

В языке Eiffel нет деструкторов — задействуется сборка мусора, когда на объект нет ссылок.

Язык Eiffel поддерживает множественное наследование (несколько разделов inherit ). Абстрактные классы определяются добавлением зарезервированного слова deferred («отложенный»):

deffered class FIGURE
  -- тело класса
end

«Отложенные» свойства должны содержать определения в «неотложенных» потомках «отложенного» класса.

Самым характерным свойством языка Eiffel является встроенные утверждения для создания принудительного контракта между вызывающим оператором и вызываемым кодом подпрограмм (см. также протоязык Plakalkül).

Все связывания сообщений (здесь: «сообщение» — метафора ООП, проявляющая себя в вызове метода объекта) в языке Eiffel динамические. В первоначальной версии языка все объекты размещались в динамической памяти, и доступ к ним осуществлялся с помощью ссылок. Компиляторы с Eiffel были дороги и не так распространены как компиляторы C/C++, что, в своё время, и ограничило распространение этого языка.

Стиль оформления программ на Eiffel

Язык Eiffel спроектирован с максимальным уклоном в простоту конструкций языка. Так, в нем определена лишь одна конструкция для цикла.

from ''условие на начало''
until ''условие на окончание''
loop
  тело цикла
end

При программировании на Eiffel хорошим тоном считается придерживаться определённых строгих правил оформления. Благодаря этому, исходники читаются так, как если бы это была документация. Дополнительным стимулом соблюдать правила, является строгость самих компиляторов к оформлению. Многие из них (в частности SmartEiffel) не позволяют неправильно оформлять исходные коды, находя многие отступления от стиля, отказываясь компилировать и выводя предупреждения.

Вот некоторые рекомендации по оформлению исходников:

  • в отличие от C++, в Eiffel отрицательно относятся к сокращениям.
Вместо drvMngr принято писать driver_manager
  • все классы пишутся прописными буквами
class LIST
  • переменные пишутся строчными буквами
item_1 : INTEGER
  • константы всегда начинаются с прописной
Universal_G : REAL is 9.81
  • рекомендуется использовать немоноширинный шрифт
  • служебные слова набираются жирным
  • все идентификаторы — курсивом
  • в начале каждого класса желательно вставлять информацию о нем: кто написал, когда, функциональность класса. Вся эта информация записывается в самом начале файла с классом.
indexing
 description:"Класс что-то должен делать"
 author: "Вася Пупкин"
class КЛАСС
      --тело класса
end

  • после названия каждой процедуры на следующей строке желательно описывать результат её действия:
feature IP: INTEGER is
  -- возвращает IP адрес локальной машины
do
   -- тело запроса
end

  • особенностью Eiffel является необязательность точки-запятой «;» в конце каждой строки.

См. также

Дополнительная информация

  1. «Object-Oriented Software Construction», Bertrand Meyer, Prentice Hall, 2nd edition 1997.
  2. «Eiffel: The Language». Bertrand Meyer
  3. «Invitation to Eiffel». From ISE.
  4. «An Overview of Eiffel». Richard Paige.
  5. «Object-Oriented Software Engineering with Eiffel» Jean-Marc Jezequel.
  6. http://www.elj.com/
  7. http://www.cetus-links.org/oo_eiffel.html
  8. http://www.eiffel.com/
  9. news://comp.lang.eiffel/
  10. Документация Эйфель на русском

Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Полезное


Смотреть что такое "Эйфель (язык программирования)" в других словарях:

  • Oxygene (язык программирования) — У этого термина существуют и другие значения, см. Oxygene. Oxygene Релиз: 4.0.25 (20 августа 2010) Испытал влияние: Object Pascal, C# …   Википедия

  • Язык программирования Рубин — Ruby Семантика: мультипарадигмальный Тип исполнения: интерпретатор Появился в: 1995 г. Автор(ы): Юкихиро Мацумото Последняя версия: 1.9.1 …   Википедия

  • Рубин (язык программирования) — Ruby Семантика: мультипарадигмальный Тип исполнения: интерпретатор Появился в: 1995 г. Автор(ы): Юкихиро Мацумото Последняя версия: 1.9.1 …   Википедия

  • Эйфель — Эйфель: Эйфель (национальный парк)  национальный парк в земле Северный Рейн  Вестфалия, Германия Персоналии Эйфель, Гюстав (фр. Gustave Eiffel; 1832 1923)  французский инженер, строитель Эйфелевой башни в Париже. См. также… …   Википедия

  • Хронология языков программирования — Списки языков программирования По категориям Хронологический Генеалогический Хронология языков программирования  упорядоченный в хронологическом порядке список языков программирования. Содержание …   Википедия

  • Список языков программирования — Списки языков программирования Алфавитный По категориям Хронологический Генеалогический Цель этого алфавитного списка языков программирования состоит в том, чтобы дать полный перечень всех существующих языков программирования, как используемых в… …   Википедия

  • Руби IDE — Ruby Семантика: мультипарадигмальный Тип исполнения: интерпретатор Появился в: 1995 г. Автор(ы): Юкихиро Мацумото Последняя версия: 1.9.1 …   Википедия

  • Бертран Мейер — родился 21.11.1950 г. Создатель языка программирования Эйфель Содержание 1 Биография 2 …   Википедия

  • Мейер, Бертран — Бертран Мейер В Википедии есть статьи о других людях с такой фамилией, см. Мейер. Бертран Мейер (родился 21 ноября 1950 года) создатель языка программирования Эйфель. Содержание …   Википедия

  • Eiffel — Класс языка: объектно ориентированный Появился в: 1986 Автор(ы): Bertrand Meyer Типизация данных: строгая, статическая Основные реализации …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»