]]> ]]>
Править | Обсудить | История

Eiffel

Русское название:
Эйфель
Дата создания:
1986
Создан под влиянием:
Повлиял на:
Парадигма:
Типизация:
Язык программирования

Язык Eiffel был разработан Бертраном Мейером (Bertrand Mayer) в 1985 году. Язык имеет ALGOL-подобный синтаксис, поддерживает множество передовых парадигм программирования, в том числе “Проектирование по контракту” (Design by Contract), основоположником которой, по сути, и является.

Eiffel — объектно-ориентированный язык программирования с Pascal-подобным синтаксисом, разработанный Бертраном Мейером (Bertrand Meyer). Он работает в MS Windows, DOS, OS/2 и большинстве платформ UNIX. Компилятор Eiffel генерирует код C, который далее компилируется в исполняемый код с помощью компилятора C. Автор Eiffel создавал не только язык объектно-ориентированного программирование, но и инструмент проектирования программ.

Несмотря на сильное влияние Simula, Eiffel — вполне самостоятельный объектно-ориентированный язык со своей собственной средой разработки. Eiffel поддерживает динамическое связывание и статическую типизацию, тем самым обеспечивая гибкость интерфейсов классов в сочетании с безопасным использованием типов. В Eiffel есть несколько важных черт, поддерживающих более жесткий стиль программирования, в том числе параметризованные классы, утверждения и исключения. Мейер считает, что обобщенные классы хорошо дополняют наследование, учитывая горизонтальный уровень общности; новые классы на одном уровне иерархии можно создавать, используя тип в качестве параметра, а не плодя практически одинаковые подклассы.

Неотъемлемой частью языка являются пред- и постусловия, то есть утверждения, которые должны выполняться при входе в метод и выходе из него. Нарушение утверждения вызывает исключительную ситуацию. Ее можно перехватить, обработать и попробовать вызвать тот же метод еще раз.

Eiffel поощряет хорошее программирование, добротную спецификацию классов, сильную типизацию и повторное использование, как через наследование, так и через параметризацию. Формальная трактовка исключительных ситуаций позволяет жестко специфицировать интерфейсы классов при реализации.

Одним из преимуществ Pascal-подобных синтаксисов перед C++ и ему подобными языками — в удобочитаемости текстов программ. Простота самих языков способствует этому. Язык Eiffel спроектирован с максимальным уклоном в простоту конструкций языка. Так, в нем определена лишь одна конструкция для цикла.

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

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

  • в отличие от C++ в Eiffel отрицательно относятся к сокращениям
  • все классы пишутся прописными буквами
  • переменные пишутся строчными буквами
  • константы всегда начинаются с прописной
  • рекомендуется использовать немоноширинный шрифт
  • служебные слова набираются жирным
  • все идентификаторы — курсивом
  • в начале каждого класса желательно вставлять информацию о нем: кто написал, когда, функциональность класса. Вся эта информация записывается в самом начале файла с классом
  • после названия каждой процедуры на следующей строке желательно описывать результат её действия
  • приятной особенностью Eiffel является необязательность точки-запятой «;» в конце каждой строки

Элементы синтаксиса:

Комментарий до конца строки --
Регистрозависимость нет
Регулярное выражение идентификатора переменной [a-zA-Z][_a-zA-Z0-9]*
Присваивание значения переменной :=
Объявление переменной variable: type
Группировка выражений ( ... )
Блок foo ... end foo где foo из{ if, do, ... }
Равенство =
Неравенство /=
Тождественное равенство deep_is_equal
Тождественное неравенство deep_is_equal
Сравнение < > <= >= three_way_comparison
Определение функции f (p1 : type1; p2, p3 : type2; ...) : returntype is do ... end
Вызов функции f(a, b, ...)
Вызов функции без параметров f
Последовательность пробел
Если - то if condition then ... end
Если - то - иначе if condition then ... else ...
Цикл с предусловием from until not condition loop ... end
Цикл for - next для диапазона целых чисел с инкрементом на 1 from i := 1 until i > 10 loop ... i := i + 1 end
Цикл for - next для диапазона целых чисел с декрементом на 1 from i := 10 until i < 1 loop ... i := i - 1 end

IDE/Редакторы:


Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам