div.main {margin-left: 20pt; margin-right: 20pt} Eiffel. Краткий обзор
Лапшин А.
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 - возможность задать prepost - 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
|