Index: [Article Count Order] [Thread]

Date:  Sun, 4 Jun 2000 02:18:32 +0900
From:  "Ken N." <kenn@....nu>
Subject:  [XP-jp:00469] Re: FW: XP Installed Smalltalk Code Samples inJava
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <200006031718.CAA03550@....nu>
In-Reply-To:  Your message of "Sat, 3 Jun 2000 23:48:40 +0900".    <B55F425F.1ABD%khosokawa@....com>
Posted:  Sun, 4 Jun 2000 02:18:18 +0900
X-Mail-Count: 00469

In <B55F425F.1ABD%khosokawa@....com> (Jun.03 2000 23:48 JST),
``[XP-jp:00463] Re: FW: XP Installed Smalltalk Code Samples inJava'',
khosokawa@....com says:

=   そう、Test First Programming は、Smalltalkならではのプログラム手法なのかもし
=   れません。Java や C++ は、定義されていないメソッドをコールするとコンパイルエ
=   ラーになってしまいますね。本当は、章全体をJavaに合うように書き直すべきでしょ
=   うね。
=   
=   Chet: …テスト書いたよ。
=   Ron: じゃ、試そうか?
=   Chet: ちょっと待って!このままじゃ、コンパイルエラーになるだけだよ。空のメソッ
=   ドを定義しないと…
=   Ron: ハァー。Java 止めて、Smalltalk で開発しようか?

しかし、JavaやC++の場合には、コンパイルエラーの検出はコンパイ
ラ組み込みのテストケースだと考えられなくもありません。実際、
Smalltalkの場合でも、メソッド未定義のままで流すテストはエラー
になります。(エラーになることをあらかじめ確信の上でそれでもテ
ストを流すのは、ちゃんとテストされていることの確認、「テストが
機能していることのテスト」でしょうね。)

Javaへの翻訳で、ひょっとすると厄介かもしれないのは、多態に関す
る違いです。例えば、SummarizerクラスのsummarizeItem:メソッドは、
SumクラスとOrderedCollectionクラスのadd:メソッドを利用していま
すが、ここまでの論述で、SumとOrderedCollectionとの間になんらか
の関係があるとは明示されていません。Javaへの翻訳のためには、きっ
とこの点を補う必要があると思います。

あと、ブロッククロージャ(detect: [...] ifNone: [...]なんてのが
ありましたね)の翻訳も、工夫が必要かもしれません。


=   > 前に出てたようなidiom的な違いもありますし。(Smalltalkは何も
=   > 返すものがないようなメソッド、例えばセッターで ^self を返す)とか
=   > 型がコードにでてこないとか。
=   > 
=   
=   そうそう。Java スタイルに書き直すところまでやりたいと思っています。

まずは「直訳」してみて、それから、「超訳 ;-)」してみるとか。


 -.- . -. -.
Ken Nakagaki (kenn@....nu is NOT for private E-Mail)
「人は船ではない。人は会社ではない」-- Gerry Spence