新城@筑波大学情報です。こんにちは。

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教えたらしい。それ
> だけは止めろ〜と思ったが後のまつり。

アセンブラもマクロプロセッサあると、かなりいいんだけどね。

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報       \\