Описание тега eiffel

Eiffel - это объектно-ориентированный язык программирования со статической типизацией, тесно связанный с одноименным методом программирования. Оба основаны на наборе принципов, таких как проектирование по контракту, разделение команд и запросов, унифицированный доступ и т. Д. Многие концепции, первоначально введенные Эйфелем, нашли свое отражение в C#, Java и других языках. Программа на Eiffel может быть скомпилирована без изменений практически для любой целевой платформы.

Задний план

Цель разработки, лежащая в основе языка Eiffel, библиотек и методов программирования, - дать программистам возможность создавать надежные, многократно используемые программные модули. Eiffel поддерживает множественное наследование, универсальность, полиморфизм, инкапсуляцию, безопасные преобразования типов и ковариацию параметров. Самый важный вклад Эйфеля в разработку программного обеспечения - это проектирование по контракту (DbC), в котором утверждения, предварительные условия, постусловия и инварианты классов используются для обеспечения корректности программы без ущерба для эффективности.

Дизайн Эйфеля основан на теории объектно-ориентированного программирования с незначительным влиянием других парадигм или заботой о поддержке устаревшего кода. Eiffel формально поддерживает абстрактные типы данных. По замыслу Эйфеля, программный текст должен иметь возможность воспроизводить свою проектную документацию из самого текста, используя формализованную реализацию "абстрактного типа данных". См. Википедию для получения дополнительной информации.

Стандарты

Определение языка Eiffel является международным стандартом ISO / IEC DIS 25436. Последний идентичен версии ECMA International: Standard ECMA-367, Eiffel: Analysis, Design and Programming Language.

Ключевые характеристики

  • Объектно-ориентированная программная структура, в которой класс служит основной единицей декомпозиции.
  • Дизайн по контракту тесно интегрирован с другими языковыми конструкциями.
  • Автоматическое управление памятью, обычно реализуемое сборкой мусора.
  • Наследование, включая множественное наследование, переименование, переопределение, "выбор", наследование, не соответствующее требованиям, и другие механизмы, предназначенные для обеспечения безопасности наследования.
  • Общее программирование с ограничениями и без ограничений.
  • Единая система типов, обрабатывающая семантику значений и ссылок, в которой все типы, включая базовые типы, такие как INTEGER, основаны на классах.
  • Статическая типизация.
  • Защита от аннулирования или статическая защита от вызовов нулевых ссылок с помощью механизма прикрепленных типов.
  • Агенты или объекты, которые обертывают вычисления, тесно связанные с замыканиями и лямбда-исчислением.
  • Один раз подпрограммы или подпрограммы, оцениваемые только один раз, для совместного использования объектов и децентрализованной инициализации.
  • Синтаксис на основе ключевых слов похож на ALGOL/Pascal, но без разделителей, поскольку точки с запятой являются необязательными, а синтаксис операторов доступен для подпрограмм.
  • Нечувствительность к регистру.
  • Встроенная поддержка параллелизма с использованием модели SCOOP (Simple Concurrent Object-Oriented Programming).

Ресурсы