Eiffel
Eiffel のソースは以下のように記述する。
Eiffel は「クラスとはオブジェクトの生成機である」という考え方が徹底しており、このため両者の概念を混同するようなクラス変数やクラスメソッドの機能は存在しない。このことは「クラスもオブジェクトの一種である」と考える Smalltalk とは対照的である。
また「クラス」に対する考え方も独特で、例えば Java ではソースファイルをコンパイルすると「クラスファイル」というファイルを作るのを見てわかるように、一般的には「ソースコード」は「クラスの設計図」という概念であるのに対し、Eiffel では「クラス」とは「ソースコードそのものである」という考え方である。コンパイルして生成されるファイルは「クラス(ソースコード)によって作られたインスタンス」という考え方であり、このため Eiffel ではメインルーチンに相当する処理をコンストラクタで行う。
コンストラクタはcreation下で宣言されたメンバ関数が使用される、このメンバ関数はどんな名称でも構わないが慣例的にmakeとする場合が多い。作成したクラスを使用する場合は
でインスタンスを作成する(コンストラクタが指定されているクラスは上記の構文中で必ずコンストラクタを呼び出さなければならない)。
クラスの継承を省略した場合は ANY というクラスの継承クラスとして扱われる。入出力などのグローバルな機能は ANY クラス内で定義されており、各 Eiffel のクラスではこれらの機能の実装に関して考慮をする必要性がないようになっている。
なお、Eiffelはクラス名は全て大文字で書かなければならないという命名規則がある。