On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru






 

Eiffel. Краткий обзор

Лапшин А.

1. Что такое 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 является языком программирования, он может рассматриваться как метод разработки программного обеспечения.

2. Как появился Eiffel ?


Eiffel был создан Бертрандом Мэйером (Bertrand Meyer) и поддерживается компанией под его руководством - Interactive Software Engineering (ISE) of Goleta, CA. Принципы языка были сформулированы в 1985 году и уже в 1986 году появился первый компилятор. Свое имя Eiffel получил в честь конструктора Густава Эйфеля(Gustave Eiffel) - который спроектировал и построил знаменитую французскую башню.

3. Какие существуют реализации языка на сегодняшний день ?


Наиболее распространенными 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)

4. Основные свойства Обьектно-ориентированного языка Eiffel:


  • Design By Contract - возможность задать pre\post - conditions для методов и invariant для класса
  • Все обьекты в Eiffel имеют общий базовый класс.
  • Статическая система контроля типов и динамическое связывание.
  • Сборщик мусора
  • Эффективная реализация множественного наследования - решена проблема с совпадающими именами методов, проблема двойного наследования.
  • Гибкий контроль области видимости - возможность для каждого метода указать типы клиентов которые имеют доступ к этому методу.
  • Система обработки исключительных ситуаций - ориентирована именно на обработку исключительных ситуаций и делает использование исключений в других целях неудобным.
  • Unified Access Principle - минимизация последствий для кода клиента при смене реализации атрибутов
  • Создание интерфейсных классов - абстрактные классы в C++.
  • Параметризованные типы - шаблоны в C++, generic types.
  • Ковариантное переопределение параметров.
  • Более мощный аналог delegates чем в С#.
  • Expanded values (boxed/unboxed values в С#).
  • Простой механизм работы с многопоточными приложениями(SCOOP).

5. Где найти дополнительную информацию ?


  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. www.eiffel.com

  9. comp.lang.eiffel



Языки программирования: разное