5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

オブジェクト指向言語Eiffelを学ぶ

1 :デフォルトの名無しさん:02/05/01 07:43
多重継承と総称をサポートする言語Eiffelを学ぼう!

http://www.gembook.jp/html/moin/moin.cgi/EiffelLanguage

class HELLO create make
feature
  make is
    do
      print("Hello World%N")
    end
end

2 :デフォルトの名無しさん:02/05/01 07:44
Eiffelとsatharってどっちが先なの

3 :デフォルトの名無しさん:02/05/01 07:50
>>2
Eiffel - 1985年頃
Sather - 1990年頃

4 :デフォルトの名無しさん:02/05/01 07:52
ありがとう。まさかレスもらえるとは……

5 :デフォルトの名無しさん:02/05/01 08:01
意味不明なコード。

class FOO
feature
  a: INTEGER
end

class BAR
inherit FOO FOO FOO FOO
end

6 : ◆KZzSjq56 :02/05/01 15:37
_


7 :デフォルトの名無しさん:02/05/01 23:30
俺も興味あるんで age

>>1
頑張ってくれ。

8 :デフォルトの名無しさん:02/05/01 23:51
Eiffel#には興味がある。

9 :デフォルトの名無しさん:02/05/01 23:53
Eiffel# って何?
.NET のやつ?

10 :デフォルトの名無しさん:02/05/02 00:00
>>9
そう。それ。

11 :1:02/05/02 00:05
>>8 >>9
Eiffel#はCLRの都合上、多重継承や総称やデリゲートなどが
使えないので、できればEiffel#は外したい。

12 :デフォルトの名無しさん:02/05/02 02:10
5はエラーにならないよ。

13 :デフォルトの名無しさん:02/05/02 02:14
どっかにエラーになるって書いてあった?

14 :デフォルトの名無しさん:02/05/02 02:17
アイフェルってCやJavaのバイトコード出力するんでしょ?


15 :デフォルトの名無しさん:02/05/02 02:18
アイフェルって読むの?
C や Java のバイトコードって何?


16 :デフォルトの名無しさん:02/05/02 02:20
あ、

C
Java のバイトコード

ってことか。


17 :12:02/05/02 02:20
>>13
C++な人のため(w

18 :1:02/05/02 02:27
>>14
出力します。
>>15
アイフェルって読むらしいです。

19 :デフォルトの名無しさん:02/05/02 02:28
エッフェルじゃないのか、と書いてみるテスト。

20 :デフォルトの名無しさん:02/05/02 02:39
(ΦωΦ)フフフ・・・

21 :デフォルトの名無しさん:02/05/02 02:53
そうそう。Machは「マッハ」だよな。

22 :デフォルトの名無しさん:02/05/02 03:03
合体!

class 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

23 :デフォルトの名無しさん:02/05/02 03:15
名前に関しては
ttp://www.geocities.co.jp/SiliconValley/8632/
の「はじめてのエッフェル」を参照すれば良いかと


24 :デフォルトの名無しさん:02/05/03 23:58
C++の多重継承やJavaのinterfaceよりEiffelの多重継承はスゴイ!

25 :デフォルトの名無しさん:02/05/04 00:01
アイフルです。

26 :デフォルトの名無しさん:02/05/04 00:04
Eiffel の表明や総称は Java に受け継がれたな。
早すぎる言語だったということか。

27 :デフォルトの名無しさん:02/05/04 00:07
僕のティンコはエッフェル塔


28 :デフォルトの名無しさん:02/05/04 00:07
表明って何?
総称はまだベータでしょ

29 :デフォルトの名無しさん:02/05/04 00:07
>>26
Javaの表明は Design by Contract とはいえない。

30 :デフォルトの名無しさん:02/05/04 00:15
>表明って何?
http://www.geocities.co.jp/SiliconValley/8632/BOOK.maker.html

31 :デフォルトの名無しさん:02/05/04 00:20
assertionのことだったら、まだjavaで正式に採用されてないんじゃ。

32 :デフォルトの名無しさん:02/05/04 00:21
1.4

33 :30:02/05/04 00:24
>>31
Java 2 SDK 1.4 の提供が開始された。

34 :デフォルトの名無しさん:02/05/04 01:11
Eiffelマンセーっているの?
Haskellマンセーとどっちが多いの?

35 :デフォルトの名無しさん:02/05/04 01:15
Eiffelは所詮オブジェクト指向言語
関数型のHaskellとは比較できるもんじゃない

36 :デフォルトの名無しさん:02/05/04 01:17
言語の比較してるわけじゃないだろ。


37 :1:02/05/11 00:19
やっぱり下がってるのか〜

Eiffelに興味ある人って少ないんだね。
Eiffel#は外したいなんて書かなければよかった。>>8さん ゴメン。

Eiffel#は多重継承や総称やデリゲートがないのが残念だけど、
表明のあるC#として使うといいのかなあ。

Java 1.4 の表明はなんか中途半端。

C#のinterfaceはEiffel#ではどういう構文になっているのだろう?

Eiffelの多重継承は
JavaやC#のinterfaceより便利だと思うんだけどなあ。

38 :_ :02/05/11 05:58
確かに親クラスのラベルを変更して継承できるのは凄そう。
多重継承も簡単にできそうだし。
表明も便利っぽい。あまり神経質にやると面倒臭そうだけど。

.netで開発するならEiffel#を主力にしたいな。python#でもいいけど。

でもsatherの方が好きです・・・

39 :デフォルトの名無しさん:02/05/11 08:15
>>38
こういう発言を見ると.NETがもたらす物って実はとても大きいのかもしれないと思えてくるな

40 :1:02/05/11 23:28
>>38
python#も多重継承できないの?

他の .NET対応の言語はどれくらい標準と違うのかな〜?

41 :38:02/05/12 08:34
>>40
ちょっと分からない。スマソ。でもJPythonができるところを見ると
できるように作るんじゃないかな?
でもpythonはパフォーマンスの問題がありそう。
(GCは自前管理だって)
JPythonも生Javaよりちょっと遅いし。
Eiffelみたいな静的言語はそんなことないだろうから、やっぱEiffelだな。

42 :デフォルトの名無しさん:02/05/12 13:21
インストールの仕方とか、そういうのがアホでも解るように書かれてると
よいかな。

あと、他の言語との差異とかね。

43 :1:02/05/13 07:57
http://www.microsoft.com/japan/msdn/net/general/pdc_eiffel.asp から引用。

>CLR は単一継承のみをサポートするように設計されたので、
>最も挑戦的なことは多重継承のサポートです。
>Eiffel# は、CLR を使用する必要があるので、
>.NET Framework オブジェクト モデルに従う必要があります。

>そのため有効なクラス、または部分遅延クラスの多重継承を不可能にしています。

>ただし、純粋遅延クラスの多重継承は可能です。
>この場合、クラスはインターフェイスとして生成されます。
>部分遅延クラスまたは有効な親クラスがある場合は、それらはベース型になります。

>>41
python#も多重継承をサポートするのは難しいと思う。

JPython が多重継承できるのは
Eiffelが Java バイトコードを出力できるのと同じなんじゃないかなあ。

言語非依存にしなければ .NET Framework でも多重継承できると思うんだけど、
そうすると .NET Framework に対応するメリットがあまりないような…

44 :_:02/05/13 18:37
>>43
他言語のクラスを継承できるのがウリの一つだもんね。
マイナー言語ファンにはいい時代になた。

45 :デフォルトの名無しさん:02/05/13 23:15
and then とか、implies とかなに?

46 :1:02/05/14 17:12
>>42
おれは 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は評価されない)

47 :デフォルトの名無しさん:02/05/14 17:31
SmallEiffelのサンプルにあるio.put_stringみたいな
関数(ルーチン?)の詳しい情報ってどこにあるの?

48 :デフォルトの名無しさん:02/05/15 23:18
eiffelの実装詳細が知りたい。
多重継承が容易でfeatureには全てo(1)ででアクセスできるというが
クラスの構造、または呼び出し方法はどうなっているのだろう。
C++と同じvtbl式ではないよね

49 :1:02/05/16 03:05
>>48
参考になるかも…
http://www.geocities.co.jp/SiliconValley/8632/EiffelFAQ.html

50 :デフォルトの名無しさん:02/05/16 23:36
EIFFEL FAQ の質問の先頭にある 4 文字英字は何を意味してるの?

QEIF アイフルって何ですか?
~~~~~

51 :50:02/05/17 00:44
スマソ。読んですぐ分かった。

52 :1:02/05/19 02:05
>>47
探してみたけど見つけられなかった。
ホント、どこにあるんだろう?

53 :デフォルトの名無しさん:02/05/20 19:00
>>47
ここはどう?
http://smalleiffel.loria.fr/libraries/classes.html

54 :デフォルトの名無しさん:02/05/20 19:54
なんでこんな化石言語のスレなんてあるんですか?
業務で使ってる人いるの?

55 :1:02/05/21 11:16
>>54
> なんでこんな化石言語のスレなんてあるんですか?

Eiffel関係の翻訳本を読んで興味を持ったから。

●オブジェクト指向言語のはなし 2000年 日本語版発売
●契約とデザインパターン 2001年 日本語版発売

Eiffelのバイブルともいえる OOSC2も酒匂さんが翻訳中。

> 業務で使ってる人いるの?

海外では使われているんじゃないかなあ。
でないと、こんなマジな開発環境をつくらないと思う。
http://www.eiffel.com/products/studio51/feature_matrix.html
http://www.eiffel.com/doc/online/eiffel50/intro/studio/

56 :デフォルトの名無しさん:02/05/27 16:51
Eiffelでプログラムを書くのに必要な知識にはどんなものがあるんでしょう?
Eiffel自体以外にも、ACEって言う言語も必要なんですか?

57 :1:02/05/27 23:26
ACE用の言語が LACE です。
LACE は C言語の makefile みたいなものです。
ソースのある場所やコンパイラ・オプションを指定します。

58 :1:02/05/28 23:09
訂正

●デザインパターンと契約 2001年 日本語版発売

ACE は C言語の make みたいなものです。

59 :56:02/05/29 14:03
なるほど。ありがとうございます。


60 :デフォルトの名無しさん:02/06/07 15:09
ensure節に
ensure
___事後条件1
___事後条件2
とした時、事後条件1か2かによってrescue節での
処理を分けたい場合はどうすればいいわけ?
それともそんな時は処理自体を分割しろって事?

61 :デフォルトの名無しさん:02/06/07 16:30
私の中では Eiffel->吉田弘一郎 って連想してしまう

62 :デフォルトの名無しさん:02/06/13 21:24
>>60
(手元にはASCIIのEiffel本しかないので情報が古いかもしれないが。)

事後条件はラベル(タグ)が付けられる以外は
基本的に単なる「一個の論理式」だからなぁ。
(";"はラベルに関すること以外は"and"と同等)
そのラベルはエラーメッセージとかで処理系は利用してるけど、
rescue節で利用できるかというと……。
ま、論理式に副作用がなければ、rescue内で
どの事後条件が原因だったかをつきとめる再テストは可能。

副作用があったり、処理が重かったり、あるいは再試行も含めて考えると
処理がどういう進捗状況かを表す状態変数をもっておくのかなぁ。

再試行を含め事後処理は呼び出し側に任せるJavaのアプローチなら
適宜例外オブジェクトを投げるところだが……。

63 :デフォルトの名無しさん:02/06/30 17:10
たまにage

64 :デフォルトの名無しさん:02/06/30 20:16
Eiffelってよく知らんけどさ、.NET対応でEiffel#になりました。
しかしEiffelのユニークな機能は失われました。って、
これってなんかおかしくない?
.NETの前では、言語の違いなんて唯の上っ面の違いでしかないと
言ってるようなもんだな。

65 :デフォルトの名無しさん:02/07/02 00:00

Eiffelの多重継承は最強!


66 :デフォルトの名無しさん:02/07/02 17:47
Satherを勉強中なんだけど、このスレで質問しちゃっていい?

67 :デフォルトの名無しさん:02/07/02 18:34
Eiffel#の必要性ってあるの?
つーか、Eiffel#って何に使うの?

68 :デフォルトの名無しさん:02/07/02 20:54
まー、どんな言語も機械語列に落ちるわけだからある意味上っ面なんだが。

69 :デフォルトの名無しさん:02/07/06 02:43
知らない人が見たらEiffelの多重継承ってどう思うのかなあ?

class FOO
inherit
  BAR
    rename ...
    export ...
    undefine ...
    redefin ...
    select ...
    end
  BAZ
    rename ...
    export ...
    undefine ...
    redefin ...
    select ...
    end
feature
  ...
end

70 :訂正:02/07/06 02:47
知らない人が見たらEiffelの多重継承ってどう思うのかなあ?

class FOO
inherit
  BAR
    rename ...
    export ...
    undefine ...
    redefine -- オーバーライド
    select ...
    end
  BAZ
    rename ...
    export ...
    undefine ...
    redefine ...
    select ...
    end
feature
  ...
end

71 :デフォルトの名無しさん:02/07/06 02:50
>>70
...が無いとオーバーライド。覚えた。俺の貴重な脳の空き容量に焼き付けた。
貴重だから1バイト5000円だ。お前がウソ書いてたら請求する。

72 :デフォルトの名無しさん:02/07/06 02:56

■ Eiffelの多重継承 ■

class FOO
inherit
  BAR
    rename ...
    export ...
    undefine ...
    redefine ...
    select ...
    end
  BAZ
    rename ...
    export ...
    undefine ...
    redefine ...
    select ...
    end
feature
  ...
end

73 :デフォルトの名無しさん:02/07/06 12:52
>>72
undefineだけはなぁ。

継承を部分型だと考える場合、
代数的な意味でインターフェースの型が変わっちゃって
部分型じゃなくなるから静的な型付けに問題が。
他はまぁ単に略記/シンタクティック・シュガーだけど。

74 :デフォルトの名無しさん:02/07/06 23:28
>>73
Eiffelは表明が継承されるので
代数的な意味が変わるときは undefineを避けられる。

75 :デフォルトの名無しさん:02/07/08 23:58
Eiffel#ってなくなりそうな感じ。

76 :デフォルトの名無しさん:02/07/09 00:01
effelってあれかhaskiiみたいなそうじゃないような言語

77 :デフォルトの名無しさん:02/07/09 00:09
>>76
全然違う。

78 :76:02/07/09 00:13
ごめんなさい出直してきます( つД`)

79 :77:02/07/09 00:38
>>78
Eiffelは表明と多重継承と総称とデリゲートをサポートするOO言語です。

80 : :02/07/09 01:01
総称ってなんですか?


81 :デフォルトの名無しさん:02/07/09 01:05
Generics
template

82 :76:02/07/09 01:08
確か風の便りによるとC++より仕様がデカイって聞きましたが・・・

83 :77:02/07/09 01:14
小さい。
C++より仕様がデカイ言語ってほとんどないと思う。

84 :デフォルトの名無しさん:02/07/09 01:24
AdaとCommonLispはデカイよ

85 :77:02/07/09 01:34
CommonLispは確かにデカイ。
Adaもデカイと思うけどC++ほど複雑じゃない。

86 :デフォルトの名無しさん:02/07/09 03:09
CommonLispのデカサは、ほとんど標準ライブラリのでかさ。
ちょうど、Java2のコアAPIが、言語仕様に含まれている感じ。

CommonLispのコアは ISO Lispかな?(単なる当て推量)

ところで Eiffel、歴史的にはなかなか興味深い言語でありますが、
今現役で使ってる人居るの?


87 :デフォルトの名無しさん:02/07/09 03:37
情数研はもう使ってないのかな?

88 :77:02/07/09 12:00
>>86
知らなかった。 それならCommonLisp使ってみようかなあ。

Eiffelは本当に興味深い。
Eiffelの多重継承を知って衝撃を受けた。
Design by Contract やデッドロックにならないマルチスレッドにも驚いた。
でもメジャーにはならないんだろうなあ。
せめてSmalltalkぐらい広まって欲しい

89 :デフォルトの名無しさん:02/07/09 12:20
Win32(非.NET)用のコンパイラ制作してる会社知ってるけど
まだ未発表だから名前出したら怒られるかも。
一応RAD環境なので、まぁ良ければファンが付くんじゃないかと。

90 :デフォルトの名無しさん:02/07/09 15:17
ISE Eiffel で十分だと思う。

91 :デフォルトの名無しさん:02/07/09 16:49
>>82
同感。


92 :デフォルトの名無しさん:02/07/10 01:02
>>89
それってフリー?

>>91
言語仕様のデカさって何で決めるの?
俺は予約語と演算子の数だと思うんだけど…

93 :デフォルトの名無しさん:02/07/10 03:19
予約語なんて言ったら、C++は使い回しのオンパレードじゃん。
tryだって普通のtryの他に関数tryブロックとか、
おなじみのstaticとか、C++の場合はconstとか。

94 :デフォルトの名無しさん:02/07/10 05:09
標準ライブラリは、でかさの中に入るんだろうか・・・

95 :92:02/07/10 23:04
言語のでかさの議論は無意味ということで(w

96 :デフォルトの名無しさん:02/07/11 11:41
>>95
論拠を述べろ。

97 :92:02/07/11 23:39
>>96
たとえばSmalltalkの言語機能は小さいけど
ライブラリを含むとSmalltalkは大きな言語になる。

ライブラリを含むかどうかで見方が変わってくる。

98 :デフォルトの名無しさん:02/07/12 17:09
つか、大きさを測ったところで、その先の議論が無い気がする…

99 :デフォルトの名無しさん:02/07/13 22:44
>>98
・学習の困難さ。
・処理系の複雑さ、必要資源量

の話になるんじゃないのすか?

どうやってそれらを評価するかはそれ自身問題だけど。
(特に前者。)

20 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)