オブジェクト指向言語Eiffelを学ぶ
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGhttp://www.gembook.jp/html/moin/moin.cgi/EiffelLanguage
class HELLO create make
feature
make is
do
print("Hello World%N")
end
end
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNGEiffel - 1985年頃
Sather - 1990年頃
0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNGclass FOO
feature
a: INTEGER
end
class BAR
inherit FOO FOO FOO FOO
end
0007デフォルトの名無しさん
NGNG>>1
頑張ってくれ。
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG.NET のやつ?
0010デフォルトの名無しさん
NGNGそう。それ。
0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNGC や Java のバイトコードって何?
0016デフォルトの名無しさん
NGNGC
Java のバイトコード
ってことか。
001712
NGNGC++な人のため(w
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNGclass BASE1
feature
foo is do print("BASE1%N") end
end
class BASE2
feature
foo is do print("BASE2%N") end
end
class DERIVE
inherit
BASE1 rename foo as foo1 end
BASE2 rename foo as foo2 end
end
0023デフォルトの名無しさん
NGNGttp://www.geocities.co.jp/SiliconValley/8632/
の「はじめてのエッフェル」を参照すれば良いかと
0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNG早すぎる言語だったということか。
0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNG総称はまだベータでしょ
0029デフォルトの名無しさん
NGNGJavaの表明は Design by Contract とはいえない。
0030デフォルトの名無しさん
NGNGhttp://www.geocities.co.jp/SiliconValley/8632/BOOK.maker.html
0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNG003330
NGNGJava 2 SDK 1.4 の提供が開始された。
0034デフォルトの名無しさん
NGNGHaskellマンセーとどっちが多いの?
0035デフォルトの名無しさん
NGNG関数型のHaskellとは比較できるもんじゃない
0036デフォルトの名無しさん
NGNG00371
NGNGEiffelに興味ある人って少ないんだね。
Eiffel#は外したいなんて書かなければよかった。>>8さん ゴメン。
Eiffel#は多重継承や総称やデリゲートがないのが残念だけど、
表明のあるC#として使うといいのかなあ。
Java 1.4 の表明はなんか中途半端。
C#のinterfaceはEiffel#ではどういう構文になっているのだろう?
Eiffelの多重継承は
JavaやC#のinterfaceより便利だと思うんだけどなあ。
0038_
NGNG多重継承も簡単にできそうだし。
表明も便利っぽい。あまり神経質にやると面倒臭そうだけど。
.netで開発するならEiffel#を主力にしたいな。python#でもいいけど。
でもsatherの方が好きです・・・
0039デフォルトの名無しさん
NGNGこういう発言を見ると.NETがもたらす物って実はとても大きいのかもしれないと思えてくるな
00401
NGNGpython#も多重継承できないの?
他の .NET対応の言語はどれくらい標準と違うのかな〜?
004138
NGNGちょっと分からない。スマソ。でもJPythonができるところを見ると
できるように作るんじゃないかな?
でもpythonはパフォーマンスの問題がありそう。
(GCは自前管理だって)
JPythonも生Javaよりちょっと遅いし。
Eiffelみたいな静的言語はそんなことないだろうから、やっぱEiffelだな。
0042デフォルトの名無しさん
NGNGよいかな。
あと、他の言語との差異とかね。
00431
NGNG>CLR は単一継承のみをサポートするように設計されたので、
>最も挑戦的なことは多重継承のサポートです。
>Eiffel# は、CLR を使用する必要があるので、
>.NET Framework オブジェクト モデルに従う必要があります。
>そのため有効なクラス、または部分遅延クラスの多重継承を不可能にしています。
>ただし、純粋遅延クラスの多重継承は可能です。
>この場合、クラスはインターフェイスとして生成されます。
>部分遅延クラスまたは有効な親クラスがある場合は、それらはベース型になります。
>>41
python#も多重継承をサポートするのは難しいと思う。
JPython が多重継承できるのは
Eiffelが Java バイトコードを出力できるのと同じなんじゃないかなあ。
言語非依存にしなければ .NET Framework でも多重継承できると思うんだけど、
そうすると .NET Framework に対応するメリットがあまりないような…
0045デフォルトの名無しさん
NGNG00461
NGNGおれは SmallEiffelというフリーのコンパイラを使っています。
1.3MBとサイズが小さいので気軽にダウンロードできます。
インストールの仕方は
http://www6.plala.or.jp/sEiffel/se_install.html
http://www.alles.or.jp/~corey/eiffel2/smalleiffel.htm
を参照してください。
本格的なコンパイラがほしい人には本家 ISE Eiffel があります。
サイズは50MBです。 http://www.eiffel.com/
他の言語との差異は多くあります。いくつかあげると
●表明に基づいた例外処理
●柔軟な多重継承
●制約された総称
などがあります。
>>45
> and then とか、implies とかなに?
(A and B) は Aが偽のときもBは評価されるが、
(A and then B) は Aが偽のときはBは評価されない。
(A or B) は Aが真のときもBは評価されるが、
(A or else B) は Aが真のときはBは評価されない。
(A implies B) は Aが真であり Bも真のとき真になる。
Aが偽のときは真になる。(Bは評価されない)
0047デフォルトの名無しさん
NGNG関数(ルーチン?)の詳しい情報ってどこにあるの?
0048デフォルトの名無しさん
NGNG多重継承が容易でfeatureには全てo(1)ででアクセスできるというが
クラスの構造、または呼び出し方法はどうなっているのだろう。
C++と同じvtbl式ではないよね
00491
NGNG参考になるかも…
http://www.geocities.co.jp/SiliconValley/8632/EiffelFAQ.html
0050デフォルトの名無しさん
NGNGQEIF アイフルって何ですか?
~~~~~
005150
NGNG00521
NGNG探してみたけど見つけられなかった。
ホント、どこにあるんだろう?
0053デフォルトの名無しさん
NGNGここはどう?
http://smalleiffel.loria.fr/libraries/classes.html
0054デフォルトの名無しさん
NGNG業務で使ってる人いるの?
00551
NGNG> なんでこんな化石言語のスレなんてあるんですか?
Eiffel関係の翻訳本を読んで興味を持ったから。
●オブジェクト指向言語のはなし 2000年 日本語版発売
●契約とデザインパターン 2001年 日本語版発売
Eiffelのバイブルともいえる OOSC2も酒匂さんが翻訳中。
> 業務で使ってる人いるの?
海外では使われているんじゃないかなあ。
でないと、こんなマジな開発環境をつくらないと思う。
http://www.eiffel.com/products/studio51/feature_matrix.html
http://www.eiffel.com/doc/online/eiffel50/intro/studio/
0056デフォルトの名無しさん
NGNGEiffel自体以外にも、ACEって言う言語も必要なんですか?
00571
NGNGLACE は C言語の makefile みたいなものです。
ソースのある場所やコンパイラ・オプションを指定します。
00581
NGNG●デザインパターンと契約 2001年 日本語版発売
ACE は C言語の make みたいなものです。
005956
NGNG0060デフォルトの名無しさん
NGNGensure
___事後条件1
___事後条件2
とした時、事後条件1か2かによってrescue節での
処理を分けたい場合はどうすればいいわけ?
それともそんな時は処理自体を分割しろって事?
0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNG(手元にはASCIIのEiffel本しかないので情報が古いかもしれないが。)
事後条件はラベル(タグ)が付けられる以外は
基本的に単なる「一個の論理式」だからなぁ。
(";"はラベルに関すること以外は"and"と同等)
そのラベルはエラーメッセージとかで処理系は利用してるけど、
rescue節で利用できるかというと……。
ま、論理式に副作用がなければ、rescue内で
どの事後条件が原因だったかをつきとめる再テストは可能。
副作用があったり、処理が重かったり、あるいは再試行も含めて考えると
処理がどういう進捗状況かを表す状態変数をもっておくのかなぁ。
再試行を含め事後処理は呼び出し側に任せるJavaのアプローチなら
適宜例外オブジェクトを投げるところだが……。
0063デフォルトの名無しさん
NGNG0064デフォルトの名無しさん
NGNGしかしEiffelのユニークな機能は失われました。って、
これってなんかおかしくない?
.NETの前では、言語の違いなんて唯の上っ面の違いでしかないと
言ってるようなもんだな。
0065デフォルトの名無しさん
NGNGEiffelの多重継承は最強!
0066デフォルトの名無しさん
NGNG0067デフォルトの名無しさん
NGNGつーか、Eiffel#って何に使うの?
0068デフォルトの名無しさん
NGNG0069デフォルトの名無しさん
NGNGclass FOO
inherit
BAR
rename ...
export ...
undefine ...
redefin ...
select ...
end
BAZ
rename ...
export ...
undefine ...
redefin ...
select ...
end
feature
...
end
0070訂正
NGNGclass FOO
inherit
BAR
rename ...
export ...
undefine ...
redefine -- オーバーライド
select ...
end
BAZ
rename ...
export ...
undefine ...
redefine ...
select ...
end
feature
...
end
0071デフォルトの名無しさん
NGNG...が無いとオーバーライド。覚えた。俺の貴重な脳の空き容量に焼き付けた。
貴重だから1バイト5000円だ。お前がウソ書いてたら請求する。
0072デフォルトの名無しさん
NGNG■ Eiffelの多重継承 ■
class FOO
inherit
BAR
rename ...
export ...
undefine ...
redefine ...
select ...
end
BAZ
rename ...
export ...
undefine ...
redefine ...
select ...
end
feature
...
end
0073デフォルトの名無しさん
NGNGundefineだけはなぁ。
継承を部分型だと考える場合、
代数的な意味でインターフェースの型が変わっちゃって
部分型じゃなくなるから静的な型付けに問題が。
他はまぁ単に略記/シンタクティック・シュガーだけど。
0074デフォルトの名無しさん
NGNGEiffelは表明が継承されるので
代数的な意味が変わるときは undefineを避けられる。
0075デフォルトの名無しさん
NGNG0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNG全然違う。
007876
NGNG0080
NGNG0081デフォルトの名無しさん
NGNGtemplate
008276
NGNG008377
NGNGC++より仕様がデカイ言語ってほとんどないと思う。
0084デフォルトの名無しさん
NGNG008577
NGNGAdaもデカイと思うけどC++ほど複雑じゃない。
0086デフォルトの名無しさん
NGNGちょうど、Java2のコアAPIが、言語仕様に含まれている感じ。
CommonLispのコアは ISO Lispかな?(単なる当て推量)
ところで Eiffel、歴史的にはなかなか興味深い言語でありますが、
今現役で使ってる人居るの?
0087デフォルトの名無しさん
NGNG008877
NGNG知らなかった。 それならCommonLisp使ってみようかなあ。
Eiffelは本当に興味深い。
Eiffelの多重継承を知って衝撃を受けた。
Design by Contract やデッドロックにならないマルチスレッドにも驚いた。
でもメジャーにはならないんだろうなあ。
せめてSmalltalkぐらい広まって欲しい
0089デフォルトの名無しさん
NGNGまだ未発表だから名前出したら怒られるかも。
一応RAD環境なので、まぁ良ければファンが付くんじゃないかと。
0090デフォルトの名無しさん
NGNG0091デフォルトの名無しさん
NGNG同感。
0093デフォルトの名無しさん
NGNGtryだって普通のtryの他に関数tryブロックとか、
おなじみのstaticとか、C++の場合はconstとか。
0094デフォルトの名無しさん
NGNG009592
NGNG0096デフォルトの名無しさん
NGNG論拠を述べろ。
009792
NGNGたとえばSmalltalkの言語機能は小さいけど
ライブラリを含むとSmalltalkは大きな言語になる。
ライブラリを含むかどうかで見方が変わってくる。
0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNG・学習の困難さ。
・処理系の複雑さ、必要資源量
の話になるんじゃないのすか?
どうやってそれらを評価するかはそれ自身問題だけど。
(特に前者。)
0100デフォルトの名無しさん
NGNG0101_
NGNGEiffelがC風味文法でCっぽいシャレた名前だったら
きっとこっちが使われてたと思う。。。
■ このスレッドは過去ログ倉庫に格納されています