[отпатрулированная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
поправил
Строка 24:
Существуют компиляторы Эйфеля для [[Windows]], [[DOS]], [[OS/2]] и [[UNIX]]. Большинство реализаций Eiffel генерирует код [[Си (язык программирования)|Си]], то есть являются своеобразным [[препроцессор]]ом. Далее этот код компилируется с помощью компилятора [[Си (язык программирования)|Си]]. Однако есть системы, которые порождают и непосредственно машинный код. Например, [[Visual Eiffel]].<ref name="visual-eiffel-site"/>
 
Тем=== самымПроисхождение создатели намекали на то, что система программирования «Eiffel» позволяет быстро и бюджетноназвания построить крупные программные системы из относительно небольшого количества программных модулей из библиотек Eiffel Software, а также выражали надежду на то, что программным комплексам, созданным с помощью системы «Eiffel» будет суждена долгая жизнь<ref>{{cite web
=== Происхождение названия ===
Язык «Eiffel» был назван в честь инженера [[Эйфель, Гюстав|Густава Эйфеля]], который построил [[Эйфелева башня|знаменитую башню]] названную в его честь. Этим названием создатели языка хотели подчеркнуть следующее:
 
* Эйфелева башня была построена очень быстро, всего за два с небольшим года.
* Эйфелева башня была построена без превышения бюджета.
* Она собрана из небольшого числа стандартных деталей
* Она была задумана как временная постройка, но осталась стоять, и продолжает стоять до сих пор.
 
Тем самым создатели намекали на то, что система программирования «Eiffel» позволяет быстро и бюджетно построить крупные программные системы из относительно небольшого количества программных модулей из библиотек Eiffel Software, а также выражали надежду на то, что программным комплексам, созданным с помощью системы «Eiffel» будет суждена долгая жизнь<ref>{{cite web
|author =
|url = https://www.eiffel.com/resources/faqs/eiffel-language/#classic-where
Строка 41 ⟶ 33 :
|date =
|accessdate = 2019-07-17
}}</ref>. ===
 
== Ключевые особенности ==
<!-- перевод английского раздела -->
* Объектно-ориентированная программная структура, в которой класс выступает в качестве основной единицыкачестницы [[декомпозиция|декомпозиции]].
* [[Контрактное программирование|Дизайн по контрактуконт]] тесно интегрирован<nowiki/>сноинтегрирован с другими языковыми конструкциями.
* Автоматическое управлениеупрвление памятью, как правило, осуществляется в процессе [[Сборка мусора (программирование)|сборки мусора]].
* [[Наследование (программирование)|Наследование]], в том числечсле [[множественное наследование|множественное н]], переименование<nowiki/>еиенование, переопределения, конструкция <code>select</code> («выбор»), наследование без полиморфизма, и другие механизмы, призванныепр сделатьслть наследованиенследове безопасным.
* Ограниченное и неограниченноенеограничеое [[обобщённое программирование|ооб]]<nowiki/>й слк,исползтора (точка скции не является обязательной).
* Нечувствительность к регистру.
* Единая система типов, использующая механизмы как значащих, так и ссылочных типов данных, в которых все типы, включая базовые, например, <code>INTEGER</code>, являются классами.
* Типо-безопасность ([[статическая типизация]]).
* Статическая защита от вызовов по пустой ссылке, используя механизм прикрепления типов ({{lang-en|attached-types mechanism}}).
* Агенты — объекты, сворачивающие вычисления внутри себя, — тесно связаны с механизмами замыканий и лямбда-выражений.
* «Единоразовые» ({{lang-en|once}}) процедуры или процедуры выполняющиеся только один раз, для совместного использования объекта и децентрализованной инициализации.
* Традиционный синтаксис на основе ключевых слов языков [[Алгол]] и [[Паскаль (язык программирования)|Паскаль]], но без использования сепаратора (точка с запятой в конце инструкции не является обязательной).
* Нечувствительность к регистру.
 
== [[Hello, world!]] ==
Строка 116 ⟶ 101 :
end
</source>
где свосо общ назвие поле ности (то есть совпадении) их сигнатур
где свойства — это общее название полей данных и методов. То есть атрибутов ({{lang-en|attributes}}) и подпрограмм ({{lang-en|routines}}) в терминологии Eiffel. Подпрограммы в подклассах (классах наследниках) могут замещать (переопределять) наследуемые только при конформности (то есть совпадении) их сигнатур.
 
Ещё пример: