Лапшин А.
Eiffel это Обьектно-Ориентированный язык,
предназначенный для проектирования и разработки высококачественного программного
обеспечения. Наиболее полно преимущества Eiffel раскрываются в больших и сложных
проектах. Eiffel это не расширение или подмножество какого либо другого языка,
это самостоятельный язык прграммирования. Частично, то что заложено в Eiffel,
позаимствовано из более ранних языков - таких как Simula, Ada, Pascal...
Eiffel имеет стройную Обьектно-Ориентированную модель,
различные методологии поощряющие написание хороших Обьектно-Ориентированных
программ. Среди таких методологий особенно выделяется "Design By
Contract" - которая по сути является "сердцем" Eiffel. Несмотря
на очевидные достоинства данной методологии она достаточно медленно проникает в
мир разработки программного обеспечения. До недавнего времени в чистом виде это
методология была реализована только в Eiffel. На сегодняшний день применение
"Design By Contract" можно увидеть, например, в скриптовом языке Ruby,
компания ISE(Interactive Software Engineering) разрабатывает для Microsoft .NET
"Contract Wizard" позволяющий использовать преимущества технологии
"Design By Contract" с любым .NET компонентом. Также существуют
попытки привнести эту методологию в такие традиционные языки как C++, Java.
Кроме того что Eiffel является языком программирования,
он может рассматриваться как метод разработки программного обеспечения.
Eiffel был создан Бертрандом Мэйером (Bertrand Meyer) и
поддерживается компанией под его руководством - Interactive Software Engineering
(ISE) of Goleta, CA. Принципы языка были сформулированы в 1985 году и уже в 1986
году появился первый компилятор. Свое имя Eiffel получил в честь конструктора
Густава Эйфеля(Gustave Eiffel) - который спроектировал и построил знаменитую
французскую башню.
Наиболее распространенными Eiffel компиляторами
являются продукты компаний ISE( www.eiffel.com )
ISE Eiffel, Object-Tool( www.object-tools.com
) - Visual Eiffel, Halstenbach ACT GmbH(www.halstenbach.com) - ISS Base и свободно
распространяемый компилятор SmallEiffel ( http://smalleiffel.loria.fr/ ). Часть из
этих компиляторов компилируют Eiffel программы в промежуточный код на C и затем
полученный код компилируется в выполняемые файлы. Компилятор VisualEiffel от
Object Tools генерирует непосредственно выполняемые файлы. Так же некоторые из
компиляторов могут компилировать в Java байт - код. Вместе с выходом Microsoft
.NET Beta 2 вышла версия компилятора ISE Eiffel 5.0 которая поддерживает
генерацию с языка Eiffel# в байт код(MSIL) для Microsoft .NET. (Eiffel# это
диалект языка Eiffel поддерживающий пока не все возможности Eiffel - было
анонсировано, что со временем Eiffel# будет обладать теми же возможностями что и
Eiffel)
- Design By Contract - возможность задать pre\post - conditions для методов и
invariant для класса
- Все обьекты в Eiffel имеют общий базовый класс.
- Статическая система контроля типов и динамическое связывание.
- Сборщик мусора
- Эффективная реализация множественного наследования - решена проблема с
совпадающими именами методов, проблема двойного наследования.
- Гибкий контроль области видимости - возможность для каждого метода указать
типы клиентов которые имеют доступ к этому методу.
- Система обработки исключительных ситуаций - ориентирована именно на
обработку исключительных ситуаций и делает использование исключений в других
целях неудобным.
- Unified Access Principle - минимизация последствий для кода клиента при
смене реализации атрибутов
- Создание интерфейсных классов - абстрактные классы в C++.
- Параметризованные типы - шаблоны в C++, generic types.
- Ковариантное переопределение параметров.
- Более мощный аналог delegates чем в С#.
- Expanded values (boxed/unboxed values в С#).
- Простой механизм работы с многопоточными приложениями(SCOOP).
-
"Object-Oriented Software Construction", Bertrand Meyer, Prentice
Hall, 2nd edition 1997.
-
"Eiffel: The Language". Bertrand Meyer
-
"Invitation to Eiffel". From ISE.
-
"An Overview of Eiffel". Richard Paige.
-
"Object-Oriented Software Engineering with Eiffel" Jean-Marc
Jezequel.
-
http://www.elj.com/
-
http://www.cetus-links.org/oo_eiffel.html
-
www.eiffel.com
-
comp.lang.eiffel
Языки программирования: разное
|