<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://camokathomelab.servebeer.com/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Eiffel</id>
	<title>Eiffel - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://camokathomelab.servebeer.com/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Eiffel"/>
	<link rel="alternate" type="text/html" href="https://camokathomelab.servebeer.com/mediawiki/index.php?title=Eiffel&amp;action=history"/>
	<updated>2026-07-16T09:49:32Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://camokathomelab.servebeer.com/mediawiki/index.php?title=Eiffel&amp;diff=21917&amp;oldid=prev</id>
		<title>imported&gt;Lê Lợi (bot): Автодевикификация Шаблон:Языки программирования.</title>
		<link rel="alternate" type="text/html" href="https://camokathomelab.servebeer.com/mediawiki/index.php?title=Eiffel&amp;diff=21917&amp;oldid=prev"/>
		<updated>2025-12-03T11:40:26Z</updated>

		<summary type="html">&lt;p&gt;Автодевикификация &lt;a href=&quot;/mediawiki/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%AF%D0%B7%D1%8B%D0%BA%D0%B8_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Шаблон:Языки программирования (страница не существует)&quot;&gt;Шаблон:Языки программирования&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Язык программирования&lt;br /&gt;
| название = Eiffel&lt;br /&gt;
| логотип =&lt;br /&gt;
| семантика = [[Объектно-ориентированное программирование|объектно-ориентированный]]&lt;br /&gt;
| класс = [[Объектно-ориентированное программирование|объектно-ориентированный]], [[:en:Class-based programming|класс-ориентированный]], [[Обобщённое программирование|обобщённый]], [[:en:Concurrent object-oriented programming|параллельный]]&lt;br /&gt;
| тип = компилируемый&lt;br /&gt;
| дата выпуска = [[1986]]&lt;br /&gt;
| автор = [[Мейер, Бертран|Бертран Мейер]]&lt;br /&gt;
| developer = Bertrand Meyer &amp;amp; [[Eiffel Software]]&lt;br /&gt;
| последняя версия = EiffelStudio 25.02&amp;lt;ref&amp;gt;{{Cite news|title=EiffelStudio 25.02|url=https://www.eiffel.com/2025/eiffelstudio-25-02/}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| дата выпуска последней версии = {{start date and age|2025|03|03}}&lt;br /&gt;
| система типов = [[Строгая типизация|строгая]], [[Статическая типизация|статическая]]&lt;br /&gt;
| реализации = EiffelStudio&amp;lt;ref&amp;gt;{{Cite web |url=http://www.eiffel.com/products/studio |title=EiffelStudio A Complete Integrated Development Environment |access-date=2010-11-22 |archive-date=2010-11-23 |archive-url=https://web.archive.org/web/20101123125126/http://eiffel.com/products/studio/ |url-status=live }}&amp;lt;/ref&amp;gt;, LibertyEiffel&amp;lt;ref name=&amp;quot;smart-eiffel-site&amp;quot;&amp;gt;{{Cite web |url=https://www.liberty-eiffel.org/ |title=Liberty Eiffel, the free Eiffel compiler }}&amp;lt;/ref&amp;gt;, Gobo Eiffel&amp;lt;ref&amp;gt;{{Cite web |url=http://www.gobosoft.com/eiffel/gobo/gec/index.html |title=Gobo Eiffel Compiler |access-date=2009-01-08 |archive-date=2009-01-16 |archive-url=https://web.archive.org/web/20090116013122/http://www.gobosoft.com/eiffel/gobo/gec/index.html |url-status=live }}&amp;lt;/ref&amp;gt;, The Eiffel Compiler tecomp&amp;lt;ref&amp;gt;{{Cite web |url=http://www.sourceforge.net/projects/tecomp |title=tecomp: The Eiffel Compiler |access-date=2009-01-08 |archive-date=2010-01-17 |archive-url=https://web.archive.org/web/20100117204043/http://www.sourceforge.net/projects/tecomp |url-status=live }}&amp;lt;/ref&amp;gt;, Visual Eiffel&amp;lt;ref name=&amp;quot;visual-eiffel-site&amp;quot;&amp;gt;{{Cite web |url=http://www.visual-eiffel.org/ |title=Visual Eiffel home site |access-date=2022-05-07 |archive-date=2012-09-17 |archive-url=https://web.archive.org/web/20120917123733/http://visual-eiffel.org:80/index.php?title=Main_Page |url-status=dead }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| испытал влияние = [[Ада (язык программирования)|Ada]], [[Algol-60]], [[Simula]], [[Z-нотация|Z]]&lt;br /&gt;
| повлиял на = [[C Sharp|C#]], [[D (язык программирования)|D]], [[Delphi (язык программирования)|Delphi]], [[Java]], [[Lisaac]], [[Ruby]], [[:en:Sather|Sather]], [[Ада (язык программирования)|Ada]]&lt;br /&gt;
| платформа = кроссплатформенный&lt;br /&gt;
| операционная система = [[FreeBSD]], [[Linux]], [[macOS]], [[OpenBSD]], [[Solaris]], [[Windows]]&lt;br /&gt;
| расширение = e&lt;br /&gt;
| лицензия = двойная: [https://www.eiffel.org/license/eiffelstudio/gpl GPL] и [https://www.eiffel.com/eiffelstudio/licensing/enterprise/ корпоративная]&lt;br /&gt;
| сайт = {{URL|https://www.eiffel.org/}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eiffel&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;Эйфель&amp;#039;&amp;#039;&amp;#039;) — объектно-ориентированный язык программирования с алголоподобным синтаксисом, разработанный [[Мейер, Бертран|Бертраном Мейером]]. В этом языке впервые был реализован метод [[Контрактное программирование|контрактного программирования]].&lt;br /&gt;
&lt;br /&gt;
Существуют компиляторы Эйфеля для [[Windows]], [[DOS]], [[OS/2]] и [[UNIX]]. Большинство реализаций Eiffel генерирует код [[Си (язык программирования)|Си]], то есть выполнены, как [[транслятор]]. Далее этот код компилируется с помощью компилятора [[Си (язык программирования)|Си]]. Однако есть системы, которые порождают и непосредственно машинный код. Например, [[Visual Eiffel]].&amp;lt;ref name=&amp;quot;visual-eiffel-site&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Происхождение названия ===&lt;br /&gt;
Язык «Eiffel» был назван в честь инженера [[Эйфель, Гюстав|Густава Эйфеля]], который построил [[Эйфелева башня|знаменитую башню]], названную в его честь. Выбирая такое название языка, его создатели концентрировали внимание на следующих особенностях Эйфелевой башни:&lt;br /&gt;
&lt;br /&gt;
* её построили очень быстро — всего за два с небольшим года;&lt;br /&gt;
* она была возведена без превышения бюджета;&lt;br /&gt;
* она собрана из небольшого числа стандартных деталей;&lt;br /&gt;
* будучи задумана как временная постройка, она тем не менее осталась стоять по истечении намеченного срока и продолжает стоять до сих пор.&lt;br /&gt;
&lt;br /&gt;
Тем самым создатели намекали на то, что система программирования «Eiffel» позволяет быстро и бюджетно построить крупные программные системы, используя относительно небольшое количество программных модулей из библиотек Eiffel Software, а также выражали надежду, что программным комплексам, созданным с помощью системы «Eiffel», будет суждена долгая жизнь&amp;lt;ref&amp;gt;{{cite web |url = https://www.eiffel.com/resources/faqs/eiffel-language/#classic-where |title = Where does the name come from? |website = https://www.eiffel.com |access-date = 2019-07-17 |archive-date = 2019-06-07 |archive-url = https://web.archive.org/web/20190607204247/https://www.eiffel.com/resources/faqs/eiffel-language/#classic-where |url-status = live }}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ключевые особенности ==&lt;br /&gt;
&amp;lt;!-- перевод английского раздела --&amp;gt;&lt;br /&gt;
* Объектно-ориентированная программная структура, в которой класс выступает в качестве основной единицы [[декомпозиция|декомпозиции]].&lt;br /&gt;
* [[Контрактное программирование|Дизайн по контракту]] тесно интегрирован с другими языковыми конструкциями.&lt;br /&gt;
* Автоматическое управление памятью, как правило, осуществляется в процессе [[Сборка мусора (программирование)|сборки мусора]].&lt;br /&gt;
* [[Наследование (программирование)|Наследование]], в том числе [[множественное наследование]], переименование, переопределения, конструкция &amp;lt;code&amp;gt;select&amp;lt;/code&amp;gt; («выбор»), наследование без полиморфизма, и другие механизмы, призванные сделать наследование безопасным.&lt;br /&gt;
* Ограниченное и неограниченное [[обобщённое программирование]].&lt;br /&gt;
* Единая система типов, использующая механизмы как значащих, так и ссылочных типов данных, в которых все типы, включая базовые, например, &amp;lt;code&amp;gt;INTEGER&amp;lt;/code&amp;gt;, являются классами.&lt;br /&gt;
* Типо-безопасность ([[статическая типизация]]).&lt;br /&gt;
* Статическая защита от вызовов по пустой ссылке, используя механизм прикрепления типов ({{lang-en|attached-types mechanism}}).&lt;br /&gt;
* Агенты — объекты, сворачивающие вычисления внутри себя, — тесно связаны с механизмами замыканий и лямбда-выражений.&lt;br /&gt;
* «Единоразовые» ({{lang-en|once}}) процедуры или процедуры выполняющиеся только один раз, для совместного использования объекта и децентрализованной инициализации.&lt;br /&gt;
* Традиционный синтаксис на основе ключевых слов языков [[Алгол]] и [[Паскаль (язык программирования)|Паскаль]], но без использования сепаратора (точка с запятой в конце инструкции не является обязательной).&lt;br /&gt;
* Нечувствительность к регистру.&lt;br /&gt;
&lt;br /&gt;
== [[Hello, world!]] ==&lt;br /&gt;
Коротко:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;eiffel&amp;quot;&amp;gt;&lt;br /&gt;
class HELLO &lt;br /&gt;
  create&lt;br /&gt;
    make&lt;br /&gt;
  feature&lt;br /&gt;
    make&lt;br /&gt;
      do&lt;br /&gt;
        print(&amp;quot;Hello World%N&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
или развёрнуто, соблюдая стиль написания:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;eiffel&amp;quot;&amp;gt;&lt;br /&gt;
note&lt;br /&gt;
   description: &amp;quot;Программа Здравствуй,мир!&amp;quot; &lt;br /&gt;
   author: &amp;quot;Elizabeth W. Brown&amp;quot;&lt;br /&gt;
class &lt;br /&gt;
  HELLO &lt;br /&gt;
create &lt;br /&gt;
  make&lt;br /&gt;
feature&lt;br /&gt;
  make&lt;br /&gt;
    -- Напечатать простое сообщение.&lt;br /&gt;
    do      &lt;br /&gt;
      print (&amp;quot;Hello World%N&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Примеры кода и особенности языка ==&lt;br /&gt;
Пример объявления класса на Eiffel:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;eiffel&amp;quot;&amp;gt;&lt;br /&gt;
class КВАДРАТ&lt;br /&gt;
  inherit ПРЯМОУГОЛЬНИК&lt;br /&gt;
    -- КВАДРАТ - подкласс ПРЯМОУГОЛЬНИКа&lt;br /&gt;
    -- может быть указано более одного блока inherit.&lt;br /&gt;
    -- для каждого родительского класса может быть указан список наследуемых методов.&lt;br /&gt;
    -- таким образом решается проблема конфликтов множественного наследования.&lt;br /&gt;
  create&lt;br /&gt;
    -- перечень имен конструкторов&lt;br /&gt;
  feature&lt;br /&gt;
    -- свойства, описываемые здесь, являются видимыми для всех клиентов. &lt;br /&gt;
    -- Более точно такая запись эквивалентна записи feature {ANY} - &lt;br /&gt;
    -- что означает, что свойства, определенные в этом разделе,&lt;br /&gt;
    -- доступны классу ANY и всем его наследникам. &lt;br /&gt;
    -- А так как класс ANY является родителем всех классов (истоком графа классов),&lt;br /&gt;
    -- у которых в явном виде не заданы родительские классы, &lt;br /&gt;
    -- то это означает доступность для использования любым классом &lt;br /&gt;
  feature {CHILD}&lt;br /&gt;
    -- свойства, описываемые здесь, являются доступными для использования для класса CHILD и его наследников&lt;br /&gt;
  feature {NONE}&lt;br /&gt;
    -- свойства, описываемые здесь, являются скрытыми для использования клиентами.&lt;br /&gt;
    -- Более точно доступны только для класса NONE, который является стоком графа классов&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
где свойства — это общее название полей данных и методов. То есть атрибутов ({{lang-en|attributes}}) и подпрограмм ({{lang-en|routines}}) в терминологии Eiffel. Подпрограммы в подклассах (классах наследниках) могут замещать (переопределять) наследуемые только при конформности (то есть совпадении) их сигнатур.&lt;br /&gt;
&lt;br /&gt;
Ещё пример:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;eiffel&amp;quot;&amp;gt;&lt;br /&gt;
class COMPLEX&lt;br /&gt;
  create&lt;br /&gt;
    make&lt;br /&gt;
  feature&lt;br /&gt;
    real_part, imag_part: REAL&lt;br /&gt;
  feature&lt;br /&gt;
    make(r, i: REAL)&lt;br /&gt;
      do&lt;br /&gt;
        real_part := r&lt;br /&gt;
        imag_part := i&lt;br /&gt;
      end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Описание переменной выглядит сходно с описанием переменных в Паскаль-подобных языках:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;eiffel&amp;quot;&amp;gt;идентификатор_переменной: ТИП&amp;lt;/source&amp;gt;&lt;br /&gt;
Например:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;eiffel&amp;quot;&amp;gt; complex_num: COMPLEX&amp;lt;/source&amp;gt;&lt;br /&gt;
Инициализация (создание) объекта c вызовом конструктора:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;eiffel&amp;quot;&amp;gt; create complex_num.make (2.4, −3.2)&amp;lt;/source&amp;gt;&lt;br /&gt;
Ранее использовался несколько иной синтаксис, при котором служебное слово &amp;lt;code&amp;gt;create&amp;lt;/code&amp;gt; заменялось на двойной восклицательный знак &amp;lt;code&amp;gt;!!&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;eiffel&amp;quot;&amp;gt; !! complex_num.make (2.4, −3.2)&amp;lt;/source&amp;gt;&lt;br /&gt;
В языке Eiffel нет деструкторов, но есть автоматический сборщик мусора. Когда на объект не останется ссылок, он будет уничтожен сборщиком мусора.&lt;br /&gt;
&lt;br /&gt;
Язык Eiffel поддерживает [[множественное наследование]] (несколько разделов &amp;lt;code&amp;gt;inherit&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
[[Абстрактный класс|Абстрактные классы]] определяются добавлением зарезервированного слова &amp;lt;code&amp;gt;deferred&amp;lt;/code&amp;gt; («отложенный»):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;eiffel&amp;quot;&amp;gt;&lt;br /&gt;
deferred class FIGURE&lt;br /&gt;
  -- тело класса&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
«Отложенные» свойства будут определяться в классах наследниках. Для того, чтобы можно было создать объект класса, он не должен содержать ни одного «отложенного» свойства.&lt;br /&gt;
&lt;br /&gt;
Самым характерным свойством языка Eiffel являются встроенные &amp;#039;&amp;#039;утверждения&amp;#039;&amp;#039; для создания принудительного [[Контрактное программирование|контракта]] между вызывающим оператором и вызываемым кодом подпрограмм (см. также: [[Планкалкюль]]).&lt;br /&gt;
&lt;br /&gt;
Все обращения к свойствам объектов по умолчанию динамические, хотя компиляторы могут разобраться, где динамическое связывание может быть заменено на статическое и естественно делают это. Такая особенность позволяет не вводить понятие &amp;lt;code&amp;gt;virtual&amp;lt;/code&amp;gt; («виртуальный»). Наоборот, вводится понятие &amp;lt;code&amp;gt;frozen&amp;lt;/code&amp;gt; («замороженное»), то есть «непереопределяемое» свойство.&lt;br /&gt;
&lt;br /&gt;
Язык различает на уровне описаний два вида данных: ссылочные и &amp;lt;code&amp;gt;expanded&amp;lt;/code&amp;gt; («структурные», «развёрнутые»), что также применимо к описаниям переменных. Это позволяет минимизировать разницу между ссылкой на объект и самим объектом. Разница эта проявляется при присваивании, копировании и создании объектов.&lt;br /&gt;
&lt;br /&gt;
=== Переопределение операций ===&lt;br /&gt;
Для подпрограмм доступен синтаксис операций. То есть инфиксный оператор &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; является псевдонимом для метода &amp;lt;code&amp;gt;plus&amp;lt;/code&amp;gt;, а &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; — для &amp;lt;code&amp;gt;product&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;eiffel&amp;quot;&amp;gt;class INTEGER &lt;br /&gt;
  feature&lt;br /&gt;
    …&lt;br /&gt;
  feature&lt;br /&gt;
    plus alias &amp;quot;+&amp;quot; (other: like Current): like Current&lt;br /&gt;
      do … end&lt;br /&gt;
&lt;br /&gt;
    product alias &amp;quot;*&amp;quot; (other: like Current): like Current&lt;br /&gt;
      do … end&lt;br /&gt;
  …&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Данный синтаксис является развитием способа переопределения операций в языке [[Клу]]. В отличие от [[C++]] и Клу, Eiffel позволяет также определение свободных операций, знаки которых могут состоять из одного или более символов из следующего набора&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;: \ ? = ~ / ! # $ % &amp;amp; * + - / &amp;lt; &amp;gt; @ ^ ` |&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
при условии, что этот символ или комбинация символов не заняты в синтаксисе Eiffel для других целей. Вот примеры возможных свободных операций:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;!-! @ |&amp;gt; &amp;lt;| -|-&amp;gt; &amp;lt;-|- ==&amp;gt; &amp;lt;== ++&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Причины слабого распространения языка ===&lt;br /&gt;
Компиляторы с Eiffel от автора языка дороги и не так распространены, как компиляторы C/C++, что, в своё время, и ограничило распространение этого языка, свободных/бесплатных альтернатив долгое время не было.&lt;br /&gt;
&lt;br /&gt;
== Стиль оформления программ ==&lt;br /&gt;
Язык Eiffel спроектирован с максимальным уклоном в простоту конструкций языка. Так, в нём определена лишь одна конструкция для цикла.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;eiffel&amp;quot;&amp;gt;&lt;br /&gt;
from &lt;br /&gt;
  начальная инициализация&lt;br /&gt;
until &lt;br /&gt;
  условие выхода из цикла&lt;br /&gt;
loop&lt;br /&gt;
  тело цикла&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
При программировании на Eiffel хорошим тоном считается придерживаться определённых правил оформления.&lt;br /&gt;
&lt;br /&gt;
Благодаря этому, исходники читаются так, как если бы это была документация. Дополнительным стимулом соблюдать правила является строгость самих компиляторов к оформлению. Многие из них (в частности [[SmartEiffel]]&amp;lt;ref name=&amp;quot;smart-eiffel-site&amp;quot;/&amp;gt;) не позволяют неправильно оформлять исходные коды, находя многие отступления от стиля, выводя предупреждения или даже отказываясь компилировать.&lt;br /&gt;
&lt;br /&gt;
Вот некоторые рекомендации по оформлению исходных текстов:&lt;br /&gt;
* служебные слова набираются &amp;#039;&amp;#039;&amp;#039;жирным&amp;#039;&amp;#039;&amp;#039; (актуально для печати и вывода на современные мониторы)&lt;br /&gt;
* все идентификаторы — &amp;#039;&amp;#039;курсивом&amp;#039;&amp;#039;&lt;br /&gt;
* в отличие от Си-подобных языков, в Eiffel отрицательно относятся к сокращениям. Вместо drvMngr принято писать driver_manager&lt;br /&gt;
* все классы пишутся прописными буквами&lt;br /&gt;
&amp;lt;source lang=&amp;quot;eiffel&amp;quot;&amp;gt;class LIST&amp;lt;/source&amp;gt;&lt;br /&gt;
* переменные пишутся строчными буквами&lt;br /&gt;
&amp;lt;source lang=&amp;quot;eiffel&amp;quot;&amp;gt;count_of_sheeps: INTEGER&amp;lt;/source&amp;gt;&lt;br /&gt;
* константы всегда начинаются с прописной&lt;br /&gt;
&amp;lt;source lang=&amp;quot;eiffel&amp;quot;&amp;gt;Gravity: REAL = 9.81&amp;lt;/source&amp;gt;&lt;br /&gt;
* рекомендуется использовать немоноширинный шрифт&lt;br /&gt;
* в начале каждого класса желательно вставлять информацию о нём: кто написал, когда, функциональность класса. Вся эта информация записывается в самом начале файла с классом.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;eiffel&amp;quot;&amp;gt;&lt;br /&gt;
note&lt;br /&gt;
   description: &amp;quot;Описание этого класса.&amp;quot;&lt;br /&gt;
   author: &amp;quot;Вася Пупкин&amp;quot;&lt;br /&gt;
class КЛАСС&lt;br /&gt;
   -- тело класса&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* после названия каждой процедуры на следующей строке желательно описывать результат её действия:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;eiffel&amp;quot;&amp;gt;&lt;br /&gt;
feature&lt;br /&gt;
   IP: INTEGER&lt;br /&gt;
         -- IP адрес локальной машины.&lt;br /&gt;
      do&lt;br /&gt;
         -- тело запроса&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* особенностью Eiffel является необязательность точки c запятой «;» в конце синтаксических конструкций.&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
{{примечания}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* Бертран Мейер. Почувствуй класс.&lt;br /&gt;
* Bertrand Meyer. Object-Oriented Software Construction. 2nd edition, Prentice Hall, 1997.&lt;br /&gt;
* Bertrand Meyer. Eiffel: The Language&lt;br /&gt;
* Invitation to Eiffel. From ISE.&lt;br /&gt;
* Richard Paige. An Overview of Eiffel&lt;br /&gt;
* Jean-Marc Jezequel. Object-Oriented Software Engineering with Eiffel&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* http://www.elj.com/&lt;br /&gt;
* https://web.archive.org/web/20040604193933/http://cetus-links.org/oo_eiffel.html&lt;br /&gt;
* http://www.eiffel.com/&lt;br /&gt;
* news://comp.lang.eiffel/&lt;br /&gt;
* [http://darviarush.narod.ru/eiffel/ Документация Эйфель на русском]&lt;br /&gt;
&lt;br /&gt;
{{Ecma International Standards}}&lt;br /&gt;
{{Внешние ссылки}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Объектно-ориентированные языки программирования]]&lt;br /&gt;
[[Категория:Языки формальных спецификаций]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Lê Lợi (bot)</name></author>
	</entry>
</feed>