Personal tools
You are here: Home ブログ 井上 Java講義の裏読本
« July 2010 »
Su Mo Tu We Th Fr Sa
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Recent comments
Re:blogのコメントスパムが多すぎる inoue 2010-07-22
Re:マルチスケジューラv5.1.4をリリース - inspired by salesforceのchatter - inoue 2010-06-09
Re:マルチスケジューラv5.1.4をリリース - inspired by salesforceのchatter - hamabe 2010-06-08
Re:雑誌連載「Emacsのトラノマキ」の原稿(part4)公開 tune 2010-05-27
Re:雑誌連載「Emacsのトラノマキ」の原稿(part4)公開 tune 2010-05-27
Re:Emacs23.2が更に1ビット稼いだ秘密 inoue 2010-05-14
Re:Emacs23.2が更に1ビット稼いだ秘密 ef 2010-05-13
Re:TestLinkのUI考察 ef 2010-04-11
Re:「パーフェクトJava」輪講向け講演資料 kawagoe 2010-04-05
Re:grepに数多くのバグ? matsuyama 2010-03-25
Re:バベル Anonymous User 2010-03-24
Re:「パーフェクトJava」輪講向け講演資料 Asaga 2010-03-18
Categories
カテゴリなし
 
Document Actions

Java講義の裏読本

最近、プログラミング初心者にJava講義をしています。

教科書の指定はありませんが、実は裏読本があります。エイホ等が著者の「コンパイラ―原理・技法・ツール」です(通称、ドラゴンブック)。 講義の1回目は、第2巻の先頭章(7.実行時環境)が下敷きになっています。ソースコードに書かれている「文字の意味」の理解に努めるより、実行時に「何がどう動くか」をイメージする方がJavaの理解の近道になるという判断です。

「コンパイラ」の「7.実行時環境」の章は実に良い章です。例えば、入れ子になった手続き(*)定義がある時、内側の手続きがレキシカルスコープで非局所変数を参照する動作の説明があります。これがいわゆる「クロージャ」です。世の中のクロージャの説明は、たいていはScheme、もしくはCommon Lispで行われますが、この本はPascalでしています。

Pascalには入れ子の手続き定義があります。Cで言えば、関数定義の中に関数定義を書く機能です。Cはこれを許していません。少なくとも今のJavaもそうです。個人的には、Cが入れ子の手続き定義を許さない言語仕様にしたのは正しい決定だったと思っています。このため、手続き間で値を受け渡すためだけのデータ型定義(構造体定義)が濫立する弊害もあります。コールバック関数ごとに(値を受け渡すためだけの)構造体定義があると、うんざりしますが、このデメリットよりも単純さのメリットが上回っていると思います。Cなら、という前提の意見です。他の言語は別です。

(*)ここでの「手続き」は、関数やメソッドを含む総称的な意味で使っています。

The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/inoue/java-and-dragon-book/tbping
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
This helps us prevent automated spamming.
Captcha Image


Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.