Eiffel
出典: フリー百科事典『ウィキペディア(Wikipedia)』
パラダイム: | オブジェクト指向プログラミング |
---|---|
設計者: | バートランド・メイヤー |
型付け: | 強い静的型付け |
影響を受けた言語: | Ada、Simula |
影響を与えた言語: | Sather、Ruby、Java、C# |
Eiffel(アイフェル、エッフェル)は頑健な (robust) ソフトウェアの生産に注力したオブジェクト指向プログラミング言語である。日本では英語と同様「アイフェル」と発音されることが多い。
[編集] 概要
1985年にバートランド・メイヤー (Bertrand Meyer) によって考案された。その文法はPascalを連想させるものである。Eiffelは静的な型指定を強く指向しており、かつ動的なメモリ管理(一般的にガベージコレクションにより実装される)を備えている。
少し前、オブジェクト指向の教科書的言語といえば、SmalltalkかEiffelか、という状況だった。手続き型言語でのPascalのような存在であった。多重継承、ガベージコレクションといった特徴があるが、設計者によってライブラリのメンテナンスが重視されており、契約(Design By Contract)の概念が全面に打ち出されている。同じくオブジェクト指向を取り入れた言語であるJavaほどは普及していない。Assertionなど、Javaが追いかけているところもあるが、インタフェースによる継承、GCあり、とかぶるところが多い。
また、C/C++のようにネイティブコードを直接生成するのではなく、C言語やJavaのコードを生成する、という特徴ももっている。
言語名の由来は、エッフェル塔ではなく、その設計者ギュスターヴ・エッフェルである。
[編集] 基本構成
Eiffel のソースは以下のように記述する。
-- コメント class クラス名 inherit 継承元のクラス(継承しない場合は省略可) creation コンストラクタの宣言(コンストラクタが必要ない場合は省略可) feature{アクセス権限} メンバ変数、メンバ関数の記述 end
Eiffel は「クラスとはオブジェクトの生成機である」という考え方が徹底しており、このため両者の概念を混同するようなクラス変数やクラスメソッドの機能は存在しない。このことは「クラスもオブジェクトの一種である」と考える Smalltalk とは対照的である。
また「クラス」に対する考え方も独特で、例えば Java ではソースファイルをコンパイルすると「クラスファイル」というファイルを作るのを見てわかるように、一般的には「ソースコード」は「クラスの設計図」という概念であるのに対し、Eiffel では「クラス」とは「ソースコードそのものである」という考え方である。コンパイルして生成されるファイルは「クラス(ソースコード)によって作られたインスタンス」という考え方であり、このため Eiffel ではメインルーチンに相当する処理をコンストラクタで行う。
コンストラクタはcreation
下で宣言されたメンバ関数が使用される、このメンバ関数はどんな名称でも構わないが慣例的にmake
とする場合が多い。
[編集] 外部リンク
- Eiffel: 一歩進んだ入門
- SmartEiffel The GNU Eiffel Compiler - SmartEiffel (GNUによるフリーのEiffelコンパイラ)配布ページ