Re: オブジェクト指向言語
新城@筑波大学情報です。こんにちは。
In article <3992645news.pl@rananim.ie.u-ryukyu.ac.jp>
kono@ie.u-ryukyu.ac.jp (Shinji KONO) writes:
> かなり初期の頃から係わってます。M1の時に、Xerox 1100SIP上でSmalltalk
> をいじってからかな。かなり印象悪かったです。遅かったしね。
Smalltalk にはまっていた友だちがいて、オブジェクト指向って何
と質問したけど、答えられなかったなあ。たぶん、本人もよく分かっ
てなかったんだと思います。
インスタンス生成が偉いとか言っていたけど、私は、Forth から入っ
たから、「別に普通だなあ」としか思いませんでした。
で、最近感動したのは、Concurrent Pascal。あれは、オブジェク
ト指向言語です。今の基準ではね。簡単な例題を書いてみました。
bounded buffer ね。Pascal のプログラムを、type にして new で
きます。これが PDP-11 で動いていたんだからすごい。
------------------------------------------------------------
1: const BUFFER_SIZE = 4;
2: type circular_buffer =
3: monitor
4: var
5: rp : integer ;
6: rp : integer ;
7: data: array [0..BUFFER_SIZE-1] of integer;
8: used: integer;
9: not_empty : condition;
10: not_full : condition;
11:
12: procedure entry put(x:integer);
13: begin
14: while( used = BUFFER_SIZE ) do
15: non_full.wait;
16: data[wp] := x;
17: wp := wp + 1 ;
18: if( wp >= BUFFER_SIZE )
19: wp := 0 ;
20: used := used + 1 ;
21: not_empty.signal;
22: end
23:
24: procedure entry get(result x:integer);
25: begin
26: while( used = 0 ) then
27: not_empty.wait;
28: x := data[rp];
29: rp := rp + 1 ;
30: if( rp >= BUFFER_SIZE )
31: rp := 0 ;
32: used := used - 1 ;
33: not_full.signal;
34: end
35: begin
36: rp := 0 ;
37: wp := 0 ;
38: used := 0 ;
39: end;
40:
41: ...
42: var buf : circular_buffer ;
43: init buf;
44: ...
45:
------------------------------------------------------------
オブジェクト指向っぽいのは、42-43行です。あとは今となっては
普通。
> Perl が ver. 5 になってオブジェクト指向が導入されたので、そ
> っちでいろいろ書いた。Perl のオブジェクト指向は結構好き。
Perl っていうだけで、使う気がしないなあ。
> Java は、1.5 になって良くなったと言われてます。昔のJavaは結
> 構ひどかった。Vector とか Array の扱いとか。C++ の真似すん
> な。なんだが、GC が使いづらい。制御できないから、システムプ
> ログラムに使えない。オブジェクト指向プログラムは「一通りに書
> けない」っていう特徴があるのだが、Java は、それがひどい。
「一通りに書けない」って?
Java 1.5 になって、平行プログラミングまわりがだいぶ入ってき
ましたね。Posix Thread/Concurrent Pascal 風の mutex も入って
しまいました。Object に wait() 入れたのは失敗だったと思った
のかな。
にしても、ReadWriteLock の所はひどい。
rwl.readLock().lock();
...
rwl.readLock().unlock();
まず、1行に点「.」が2つ出てくるのは、ダメだし、ロックのエ
ントリをメソッドで取出すのがダメ。ロックは、静的でないとね。
> JavaScript は良さそうなんだけど「HTMLと組み合わせて使う」あ
> たりが嫌い。僕にしては珍しく、深入りしてない言語の一つ。つま
> らないんだよね。
>
> 問題は学生に何を教えるかだが、実は、JavaScript がいいかも。
> 現状はJavaのようですね。
HTML で自分をいじる感覚は、あんまりぱっとしません。
Apple Dashboard とか Yahoo Widget とか遊んでみたいけれど。
なにかいい教科書とか Web ページないですか。XML Web サービス
が使えると完璧。
> アセンブラも教えて欲しいんだが、今年はCASL教えたらしい。それ
> だけは止めろ〜と思ったが後のまつり。
アセンブラもマクロプロセッサあると、かなりいいんだけどね。
\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報 \\
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735