Google
ブログ(iiyu.asablo.jpの検索)
ホットコーナー内の検索
 でもASAHIネット(asahi-net.or.jp)全体の検索です。
 検索したい言葉のあとに、空白で区切ってki4s-nkmrを入れるといいかも。
 例 中村(show) ki4s-nkmr

ウェブ全体の検索

ガウディ本(CTMCP)の紹介と懐かしい話など2006年06月12日 01時36分54秒

ASAHIネット(http://www.asahi-net.or.jp)のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
 魔術師本(SICP)、ガウディ本(CTMCP)。どっちを先に読むべきかを書いたの
で、勢いで、以前、紹介した、いい教科書といわれている
http://www.amazon.co.jp/exec/obidos/ASIN/0262220695/showshotcorne-22/ref=nosim
Seif Haridi, Peter Van-Roy著「Concepts, Techniques, and Models of
Computer Programming」(MIT Press)
(以下、ガウディ本(CTMCP))を、もう少し詳しく紹介しておきます。
 これは、ゴールデンウィーク前に届いたんですけど、夜、寝る前に寝酒代わ
りに少しずつ読んでいます。順には読んでなくて、あっちこっち適当に飛びな
がら読むスタイル。
 Oz言語とMozartシステムをベースにプログラミングのいろんなコンセプトや
モデルを解説してあります。
 Oz言語の最小セットを使った核言語で一番簡単な計算モデルやコンセプトを
記述して、だんだん、必要最小限の基本操作を追加して(たとえば、並行プロ
グラミングにはスレッドを追加など)、命令的/手続き的/オブジェクト指向プ
ログラミングも、宣言的な(関数型、論理型)プログラミングも、全部扱います
し、並列・並行なモデルも、分散モデルも扱います。そして、これらのプログ
ラミングの概念やモデルの長所、短所をまとめてあるし、どういう場面でどう
使えばいいかも解説してあります。
 そういう風に解説しつつ、Ozの核言語でプログラム例を示してあるし、Oz/
Mozart(Ozのプログラミングシステム)で実行できるので理解しやすいでしょう。
いい教科書といわれるはずです。
 全体的には、C/C++/Javaみたいな命令的、手続き的プログラミングより、宣
言的な(関数型、論理型)プログラミングの話がメインだし、全体の通奏低音に
なっています。
 手続き的な言語より、宣言的な言語のほうが、より高水準な言語ですし、ハ
ードとソフトの発達で、高水準な言語でも十分実用的になってきてますから、
プログラミングの教科書、それも概念やモデルをしっかり教える教科書として
は、当然でしょう。
 以上からわかるように、Ozは、並列分散マルチパラダイム言語です。だって、
そうじゃないと、これだけの概念やモデルをOzで記述できませんからね。
 届いて最初、ぱらぱらめくっていたら、GUIの画面があったので、Mozartは、
マルチプラットフォームのGUIのIDEかと期待したんですが、実際にダウンロー
ドして動かしたら、Emacsを使ったものでした。ちょっとがっかり。
 いまどきなら、Eclipseのプラグイン書くか、自分でマルチプラットフォー
ムなGUIを使ったIDEを書いてほしかったですね。そこまで期待しちゃいけない
んだろうけど。
 なんでがっかりしたかというと、EmacsをIDEとして使うものは、まだまだ多
くて、Emacsはその言語と一緒にパッケージングされているんです。だもんで、
いろんな言語を試しているぼくのパソコンには、いくつもEmacsが入ってます。
\(^O^)/
 20年前、Emacsをパソコンで動かすのは大変だったけど、いま、10個くらい
Emacsが入っているから、おれも偉くなって金持ちになったなあと感慨深いで
す。\(^O^)/
 しかも、おれはEmacsはあんまり使えないというね。\(^O^)/ だから、新
しい言語を試すときには、キーバインドもそれぞれの言語用で違うし、毎回、
Emacsの初歩からやり直し。\(^O^)/

 ここで、目次をざっと紹介しておきます。
 amazon.co.jpでは無理でも、amazon.comなら目次が出ているかと思ったら、
中身は目次すら見えませんね。ちゃんと見せてくれる本もあるんだけど。
 900ページもある本なので、一部だけです。
 まず、Short Contentsのページ。全角の(1)や(2)は、本来、ローマ数
字なんですけど、文字化けするといけないので、全角数字の(1)や(2)に
しています。

Preface
Running the Example Programming

1 Introduction to Programming Concepts

(1) GENERAL COMPUTATION MODELS
2 Declarative Computation Model
3 Declarative Programming Techniques
4 Declarative Concurrency
5 Message-Passing Concurrency
6 Explicit State
7 Object-Oriented Programming
8 Shared-Stated Concurrency
9 Relational Programming

(2) SPECIALIZED COMPUTATION MODELS
10 Graphical User Interface Programming
11 Distributed Programming
12 Constraint Programming

(3)SEMANTICS
13 Language Semantics

(4)APPENDIXES
A Mozart System Development Environment
B Basic Data Types
C Language Syntax
D General Computation Model

References
Index

 Haskellは、4 Declarative Concurrencyで、Erlangは、5 Message-Passing
Concurrencyで、Prologは、9 Relational Programmingで、Javaのsequential
partは、7 Object-Oriented Programmingで、Javaのconcurrent partは、8
Shared-Stated Concurrencyで、1つの節を割り当てて言及されています。
 このように節になってなくても、その他、Common Lisp, Scheme, ML,
Eiffel, Cleanなどいろんな言語に対して、適宜言及しています。索引で、
languageの下にある項目の数を数えたら、50個くらいのプログラミング言語に
言及してますね。Obliqなど、名前すら知らなかった言語もあります。

 1 Introduction to Programming Conceptsだけは、詳しい目次も載せておき
ます。20数ページを割いていますが、その中でこれだけのことをざっと紹介し
て、後の章で詳しく分析・解説してあります。

1 Introduction to Programming Concepts
1.1 A calculator
1.2 Variables
1.3 Functions
1.4 Lists
1.5 Functions over lists
1.6 Correctness
1.7 Complexity
1.8 Lazy evaluation
1.9 Higher-order programming
1.10 Concurrency
1.11 Dataflow
1.12 Explicit State
1.13 Objects
1.14 Classes
1.15 Nondeterminism and time
1.16 Atomicity
1.17 Where do we go from here?
1.18 Excerises

 余談ですが、1.17の「Where do we go from here?」は、Chicagoのデビュー
当時のアルバムに入っている曲と同じ名前ですね。ピーターセテラのボーカル
で、アコースティックギターがメインのシンプルな曲。
 懐かしくなって、いま、LPレコードを探しまくりました。\(^O^)/
 もう、レコードプレーヤーもばらしているし、レコード針もないから聴けな
いけど、まだ取ってあるんです。
 見た途端に曲と、中学から高校生のころが蘇ってきます。\(^O^)/
 昔のLPはいいね。ジャケットがでかいから、ジャケット写真や中のデザイン
も迫力があるし、ライナーノーツも面積がでかいからいっぱい書いてあるし。
 Where do we go from hereが収録されているのは、Chicagoの2枚目のアル
バム。日本語タイトルは、「シカゴと23の誓い」。これもデビューアルバム
と同様2枚組。その最後の最後の曲です。
23 約束の地へ WHERE DO WE GO FROM HERE (P. Cetera)(2:33)
と書いてある。ボーカルだけじゃなくて、作曲もピーターセテラなんだ。ひょ
っとしてピーターセテラ、この曲が公式には初の作曲じゃないのかな。
 あ、長い夜があった。
14 長い夜 24 OR 6 TO 4 (R. Lamm)(4:55)
 これが、シングルカットされて大ヒットして、Chicagoは地位を築くんです
よ。このアルバム、Chicagoの音楽性の高さとバリエーションの広さが非常に
よく出ていて傑作です。
 「ぼくらに微笑を(Make me smile)」から始まる組曲もまたいいんですよ。
「ぼくらの世界をばら色に(COLOR MY WORLD)」は、何度もピアノで弾いて歌っ
たなあ。簡単なアルペジオだけれど、コード進行がきれいなんですよね。
 アマゾンで調べると、
http://www.amazon.co.jp/exec/obidos/ASIN/B0000A124H/showshotcorne-22/ref=nosim
II(シカゴと23の誓い)
のほかに、
http://www.amazon.co.jp/exec/obidos/ASIN/B00006JLK1/showshotcorne-22/ref=nosim
シカゴII シカゴと23の誓い デラックス・エディション
というのがある。しかも、こっちは品切れだ。くそー、知ってれば買ってたの
に。うーん。
 でも、この辺、CDを集めようかな。とはいえ、やっぱ、モノがほしいんです
よね。ジャケットとか当時のライナーノートとか。あ、LP持ってるんだから、
当時のジャケットもライナーノーツも、おれ、持ってるんだった。じゃ、CDで
もいいか。\(^O^)/

 す、すみません。寄り道しすぎました。
 本書を、やはり、ヨーロッパ的な教科書、あるいはいまどきの教科書だなと
思うのは、プログラムの理論、意味論の話をちゃんとやっていることです。
 ヨーロッパ的というのは、ぼくの中では、アメリカはアメリカンプラグマテ
ィズムで理論より実践、ヨーロッパは実践より理論で土台を固めるというイメ
ージが、コンピュータサイエンスに限らず、文化や文明全般に対してあるから
です。
 いまどきというのは、昔なら意味論や仕様記述に近い高水準な言語は、一般
レベルのマシンではまともに動かなかったけれど、いまのパソコンなら十分動
くから、意味論や仕様記述に近い高水準な言語を教科書に使えて、学生に動く
プログラムで教えられるという意味です。その意味では、SICPとSchemeの組み
合わせは、昔といまどきの中間の世界です。

 プログラムの意味論は、数学の世界で、操作的意味論、ホーア先生の公理的
意味論、スコット先生の表示的意味論などありますが、この本では、操作的意
味論でやっています。
 25年ほど前、ぼくらが学生のときは、プログラミングの教科書の中で意味論
をしつこくいうのはあまりなかったと思うし、授業でも意味論はさほどやって
ませんでした。研究では、荒木先生は当然やってらっしゃいましたが。
 覚えているのは、荒木先生の招きで、京大の中島礼二先生が九大に特別講義
でいらして、当時、ブームだった?スコットの表示的意味論の講義をしてくだ
さったことです。中島先生の本を買って読んだけど、書名、なんだっけなと思
って、ぐぐったら、あなた。ちゃんと言及している奴がいる。やっぱ、ネット、
すごいなと思ったら、あなた。それは、
http://www.asahi-net.or.jp/~ki4s-nkmr/wabijo64.html
乳の詫び状(2003/02/27)
じゃんよ。おれじゃん。おれ、こんなこと書いてたんだ。もう、なんも覚えて
ない。いいなあ、どんどん、忘れて自分で知を再発見。\(^O^)/
 で、その教科書は、
中島玲二「数理情報学入門 スコット・プログラム理論」朝倉書店
ですね。
あと、ぼくが昔読んでよかったのは、岩波の算法表現論です。これ、電脳騒
乱節で書いたと思う。調べたらあったあった。2回、言及しています。長くな
るけど、ちょっと引用しましょう。どちらも初出は1990年です。
 雑誌「The BASIC」1990年4月号に掲載された、
電脳騒乱節
工学部卒唯野狂獣
presented by
歌舞伎界の至宝
嘘八百代目 中村勘三郎
の回から。
--- ここから ---
 プログラムの形式的意味論は一時盛んに研究され,でも現場への移転がそう
易々とできる世界じゃないから実用化はされてないけれど,プログラムの意味
をラムダ・カリキュラスなんかで形式的に記述しちゃうんです.有名なのが,
ホーアの公理的意味論とスコットの表示的意味論.スコット理論とも呼ばれま
す.参考書としては,毎度おなじみ,木村泉,米澤明憲「岩波講座 情報科学
12 算法表現論」(岩波書店).プログラムの理論の教科書として昔からよく登
場するのが,Manna 著,五十嵐滋 訳「プログラムの理論」(日本コンピュータ
協会).嫌いな出版社だけど,昔押さえたものは,いい本が多い.スコット理
論は,中島玲二「数理情報学入門 スコット・プログラム理論」(朝倉書店)が
定番です.洋書もありますが,英語力はもとより数学力も要求される分野です
から,下手すると2重苦を味わう恐れがあります.ご自分でよく考えて手を出
してください.
 でさ,くやしいのな.おれみたい数学できないと.数学の奴ってさ,みんな,
「ああ,スコットのあの論文.実によかった.刺激的だったですよ」とか言う
の.くそーと思うよね.でもさ,表示的意味論とかスコット理論って「なんだ
か知らないけど難しそう」,「わけわかんねえ」って意味にも,よく使われる
言葉なの.わけわかんねえことくっちゃべってると「スコット理論か,お前は」
と言われちゃうわけ.
--- ここまで ---

 次は、雑誌「The BASIC」1990年9月号に掲載された、
電脳騒乱節
やつ当たりばっかり
涜書日記(ショの3)
presented by
ピーヒャラ ピーヒャラ
おどるポンポコリン
の回から。
 文中のY氏というのは、当時、一緒に連載していた吉田弘一郎(これはペン
ネームで本名は別)だね。
 そういえば、この前、読んだブログについたコメントで、最近、マイクロソ
フトのこと書いてないからつまんないみたいな感想があって、吉田さん、がん
ばってくださいなんて書いてあったと思うけど、おれ、名前は、吉田じゃなく
て中村なんですけど。^^; 吉田弘一郎とおれを混同してるのかな。よーわか
らん。
--- ここから ---
x月x日
 OOP と言えば Smalltalk であった時代が続いたためか,より根源的で魅力
的なモデルでありながら,あまり知られていないものに Actor がある.
Windows 用の開発ツールの Actor ではなく,MIT で '70年代に考えられた計
算モデルである.
 Actor では計算を,舞台上で俳優(Actor)が台詞(message)をキャッチボール
し,その台詞に対応する台本(script)に書かれた動きをすることにより進んで
いくものとみなす.
 文芸プログラミングの一種で戯曲プログラミングと呼ばれる所以である.こ
のモデルでシェイクスピアもプログラムしたという.真っ赤な嘘.
 Actor は示唆に富んでいる.かじると視野が広がる.
 自律的な実体としての Actor,メッセージ伝送と継続(continuation) によ
って,手続きとデータの統一,制御フローとデータフローの統一がなされる.
私はSmalltalk のモデルより根源的に美しく強いと思う.
 Actor のメッセージ伝送を見ると Smalltalk のそれは従来の手続き呼び出
しと変わらないことが分かる.行って帰って来いのブーメラン呼び出しで,結
果が戻るまで待っているんだから.
 Actor では行ってこいの単方向で鉄砲玉だ.通常の言語の枠内で考えれば,
これは手続き呼び出しの次に制御が戻ってくる保証がないことを意味する.し
かも複数の Actor が並列に自分勝手に動く.ちょっと頭がウニ化しそうでし
ょう.でも並列分散処理って本質的にはこういう頭が割れそうな世界なのだ.
 Y氏が継承を親バカ子バカと解説したのが,なぜ本質ではないかが分かる.
本質的には,彼が想像したような遺伝的,固定的な上下関係ではない.本来み
な対等で上下はなく,全てはダイナミック.つまり Smalltalk や C++ のよう
な継承は,その特殊形,ひとつの実現形態にすぎなくなる.
 継承は遺伝のイメージより,苦しいときの神頼みの相手を見つけるイメージ
の方が豊かだと思うけれどなあ.つまり,送られてきたメッセージが自分で処
理できないとき,誰にすがって生きればいいかを決めることだと思うの.遺伝
的なイメージだと,どうしても生みの親にしか頼れない感じでしょ.ところが
そんな固定的上下関係から離れて考えてみれば,隣人,友人,親,兄弟,神様
仏様稲尾様,頼れる人がいっぱいいることに気づく.逆に自分は多くの人に支
えられて生きていることにも気づく.これといい,全てはダイナミックといい,
仏教の宇宙観だね(笑).
 真面目な話,個人的には Actor と密教はすごく相性がいいと思っている.
Actor も仏教のひとつの特殊形態ではないかとは言いすぎか.

x月x日
 以上の話に興味がある方は,木村泉,米澤明憲著「岩波講座情報科学12 
算法表現論」をお読みください.OOP や Actor に関係あるのは6章や8章で
す.
 この本,このシリーズで唯一自分で購入した本なの.木村先生の文章が読み
たくて買ったの.米澤先生担当分はほとんど目を通さず,λ算法の話か程度が
当時の認識だった.今,取り出してつらつら眺めてみると,木村先生の部分は
古くなっている.それは覚悟の上と断わりがあるけれどね.
 逆に米澤先生の部分.ねそべって読んでいたが,ガバと起き上がり正座した.
これは大変な労作だと今ごろになって気づいた.よくまとまっていて,学校を
出て10年経つさびついた脳みそには,あれこれ考えたり思い出したりする手
がかりが豊富なのである.
 Actor をもっと知りたい場合,わざわざ俳優養成所に通う必要はない.大き
な鍋とたっぷりのお湯に塩を一振り,さっとゆでればよい.この熱々の Actor
にチリソースをかけて食べると格別にうまい.是非ご賞味あれ.このパラグ
ラフを塵芥(ちりあくた)という.
--- ここまで ---

 どちらも絶版(出版界では、版元品切れといい、版はあるけど在庫はないし、
もう印刷する気もないという意味。版が廃棄してない以上、絶版とはいわない
のが出版会のしきたりだけど、読者にとっちゃ、絶版と同じ)で、amazon.co.
jpにはないですね。
 岩波書店に行っても、
http://www.iwanami.co.jp/.BOOKS/01/5/0101620.html
にページはあるけれど、
http://www.iwanami.co.jp/.BOOKS/01/X/010151+.html#SERIES
を見ても、品切重版未定ばかり。
 ま、意味論を勉強したい人は、図書館で探すか、いまはほかにもいい教科書
があるはずなので、自分で漁ってみてください。

 さて、あまりに長い寄り道ですみません。ガウディ本(CTMCP)に戻ります。
 意味論をしつこく書いてあるといっても、数学的にややこしい話じゃなくて、
核言語を使った操作的意味論だから、意味論としてはわかりやすいです。
 そして、意味論をやっているからといって、本書全体は実践的な面をおろそ
かにしてないので、内容は数学がちがちの堅苦しいものではなく、ほとんどは
概念やモデルの丁寧な解説であって、核言語でプログラムを見せているので、
わかりやすし、解説の最後に意味論でまとめる感じです。

 最後に、日本の読者には悲しいというか寂しいお知らせ。
 日本語訳は当分出ないと思います。この前、出版社の人たちと会ったんです
が、この本のことを話したら、教科書かつ900ページもあるとなると、まず出
す気になる出版社がどれくらいあるか、そして翻訳から出版まで1年じゃ、ま
ず出ない。出るとしても2、3年かかるでしょうねといわれました。
 英語で読むのが話が早いです。

 あ、メキシコが先制。イラン、いい勝負してたのに。もう寝ないと、明日は、
あ、もう今日か。早めに仕事を切り上げて日本対オーストラリアだ。

中村(show)
-----
MS Office, PDF文書を携帯向けに変換できるよ
詳しくは、http://conv.antenna.co.jp/をどうぞ。