1read 100read
2011年10月1期プログラムコンピュータプログラミングの概念・技法・モデル TOP カテ一覧 スレ一覧 削除依頼
・ 次のスレ
日本語プログラミング言語「プロデル」
Perlについての質問箱 49箱目
【SICP】計算機プログラムの構造と解釈 Part2
新しいプログラム言語作る〜4カ年計画


コンピュータプログラミングの概念・技法・モデル


1 :07/11/28 〜 最終レス :12/01/11
SICPの後継とささやかれている「コンピュータプログラミングの概念・技法・モデル」のお勉強スレです。
略称はCTM、CTMCP、もしくはガウディ本です。
原著『Concepts, Techniques, and Models of Computer Programming』
http://www.amazon.co.jp/dp/0262220695
和書
http://www.amazon.co.jp/dp/4798113468
公式ページ(英語)
http://www.info.ucl.ac.be/~pvr/book.html
CTM Wiki(英語)
http://www.codepoetics.com/wiki/index.php?title=Main_Page
Mozart(Ozの処理系)
http://www.mozart-oz.org/
※emacsが必要です(環境変数OZEMACSにemacsの実行ファイルパスを設定)

2 :
Dr. Chandlar's "No programing artificial children: HAL 9000", 2001
あれ、もう出版されて6年以上経つはずだが...ないね。

3 :
{System.show 'hello, world'}

4 :
http://www.amazon.com/dp/0262220695
外国では大絶賛ですな

5 :
Rubyの実装本読んだ方が為になるんじゃないの。

6 :
君がそう思うならそれを読んでいればいいよ

7 :
ozが日の目を見る日が来たのか?

8 :
アマゾンで英語版衝動買いしたけど読んでねー。翻訳されたのか。

9 :
ozなんてショボイ田舎言語以下の練習言語だろw
logo以下wwwww

10 :
orz

11 :
買ってみた
自然言語解析とかプログラム意味論とかも扱ってるんだな
後半は情報数理のプログラミング本みたいな感じ

12 :
これと比べてどっちが良書?
Amazon.co.jp: 計算機プログラムの構造と解釈: 本: ジェラルド・ジェイ サスマン,ジュリー サスマン,ハロルド エイブルソン,Gerald Jay Sussman,Julie Sussman,Harold Abelson,和田 英一
http://www.amazon.co.jp/exec/obidos/ASIN/489471163X/250-3648248-8159430

13 :
>>12 相補的な関係。どっちじゃなくてどちらも読もう!

14 :
読みやすさは断然CTM

15 :
題名でぐぐって2番目に出てくるpdfファイルはいったい?

16 :
>>15
ドラフト版です

17 :
ドラフト版で十分そうじゃないか

18 :
そのpdfでいいや

19 :
このスレの、社会人と学生の割合はどんなもんだろう

20 :
社会人ですが何か

21 :
へーこんな刷れあるんだ。
立ち読みして面白そうだったから買ってみた。
F#に手を出そうとしてるのでいろいろ参考になりそう。
早く今やってるの終わらした後参加するノシ

22 :
宣伝age

23 :
よくわからないけどOZって(cons 'erlang '(haskell))なのかな?

24 :
いまさらですが、関連スレです。
【SICP】計算機プログラムの構造と解釈【Scheme】
http://pc11.2ch.net/test/read.cgi/tech/1107345738/

25 :
\(^o^)/

26 :
>>25
正三郎乙

27 :
「無茶苦茶」基本的なお話で申し訳ないが…
Mozart(Ozの処理系)って日本語はOKなんでしょうか?

28 :
>>27 アフォ

29 :
>>27
自分で試してみればわかること。

30 :
どうも最近のプログラム板は素っ気無い回答が
多いねぇ。昔はもっと親切だった。(^_^;
例えば"表示"や"暴力"と入力すると文字化けするとか
教えてくれれば、それで充分なのに…

31 :
Ozはこの本を読み終われば二度と見たくない言語だなw

32 :
Ozが厭ならAliceもあるけど…^m^

33 :
Cプログラマの為に、ポイントをまとめたドキュメントを販売しています。
プロのプログラマでもあまりにレベルが低い人が多すぎます。
そんな人に限って、自分のレベルの低さを自覚していない、、、
本人は構わないかもしれませんが、その下についた新人プログラマは
たまったものではありません。(私が経験しました。)
今になって分かりました。
彼らもまた、理解できていなかったのです。
プログラミング言語の一番の習得の近道はきちんと理解している人にアドバイスをもらうこと。です。
(何といったって、参考にしようとする市販の本さえ、 きちんと説明してくれていないのですから、
 その証拠にC言語の学習で悩む人がどんなに多いことか)
私のC言語に取り組んだ7年間をすべてぶつけたつもりでテキストを作りました。
私の会社の後輩からは、どんなテキストよりもわかりやすかった!や、
今まで教えてくれていた先輩や、テキストたちが、ちゃんと理解できていないことがわかりました。
と、嬉しいコメントをたくさんもらいました。
そしてなにより、彼らの社内での評価がとても高いということが、私の誇りです。
宣伝と言ってしまえば、そうなってしまうかもしれませんが、ひとりでも多くのプログラマを救いたい。
プログラムの世界そのものの実力を底あげに貢献し、
無意味なバグに、残業したり、悩んだりして欲しくないのです。
興味がある方はどうか、下のサイトをみてみてください。
http://mori.eco.to/

34 :
>>33
>テキストたちが、〜理解できていない

35 :
通報しました

36 :
コードのみてくれが気持ち悪い。

37 :
禿同
けど言語作るバイタリティあるやつって、
こういう妙なところにこだわりがある奴結構多いんだよな。
その辺のこだわりがバイタリティの源になっているというか。
こっちとしては、みてくれは既存の言語と同じで、
機能面だけ新しければそれでいいんだが。

38 :
ozの機能を生かした上で、おまえの納得する見てくれってどういうんだよ?

39 :
まずendを}に代えるところからだな。

40 :
Pascalライクな書き方ではなくてCライクな書き方でおk

41 :
>37
>けど言語作るバイタリティあるやつって、
>こういう妙なところにこだわりがある奴結構多いんだよな。
>その辺のこだわりがバイタリティの源になっているというか。
>こっちとしては、みてくれは既存の言語と同じで、
>機能面だけ新しければそれでいいんだが。
名言だよね!
SICPでも理解を妨げている半分はまずSchemeの仕組みを
覚えないといけないってところだ。
カッコだらけの例文を見るだけで、半分の人は脱落…orz
でも見方を変えればLispなんかを普段いじってる
極少数のオタクっぽい人にとっては、涎が出るような
内容だとは思うが。
つまりは大多数のプログラマーが使用している
言語、例えばJava,C,とか(PHPやVBじゃ、ちときついが)
で、大部分を説明し平行プログラミングとか本書の肝の
部分だけ、Javaのスレッド操作と比較しながらOzで
説明してくれれば、この本の売れ行きは必ずアップする
と思うけどねぇ。(*^^)v
個人的には何故変数が定数じゃないといけないのか?
非破壊という意味ならリストやレコードは破壊的に
操作しても何故良いのか?とか、
無茶苦茶基本的な部分が理解出来てないから
あまり大きなことは言えないけど…(^_^;)


42 :
>SICPでも理解を妨げている半分はまずSchemeの仕組みを
>覚えないといけないってところだ。
…。

43 :
>>42むしろSchemeの仕組みがわかる本なのだが……
Lispの書き方なんて、先頭に関数名を書いてカッコでくくれば終わり、という
数あるプログラミング言語のうちでもトップの単純さなのに。
;;; やっぱ 1 + 1 が (+ 1 1) になるところで拒絶されちゃうのかな

44 :
Lisp/Schemeは確かにとっつきにくい構文だけど、
プログラムが、言語が一番得意なデータ型で表現されている。
そのメリットがでかいから問題ない。

45 :
>>43
アセンブラみたい。
まあ、英語圏の人は命令対象おまけの語順に慣れてるからいいのかもね。

46 :
>>41
まず計算モデルありきの本だから
Javaでは説明にならない。
そもそも計算モデルが違う。

47 :
OzとSchemeを比べてはいかんだろ
Ozを見たらC++も逃げ出すよw

48 :
>>47
お前C++なめすぎ。

49 :
SICPもこっちも今読んでる最中だけど、
こっちの方が読みやすい気がする。

50 :
いま4章の途中だけどここで書いてるようなデータフロー的な並列性をC#とかで実装しようとしたらどうなる?
クリティカルセクションとかイベント使えば動くようにはできそうだけど重そう

51 :
スレッド起こしたらだめなん?
別スレッドにすればそのまま順番に実行するだけ。

52 :
スレッドおこすのはいいんだけど、データを追加したり
束縛するときの別のスレッドがそれを消費する仕組みをどう実装しようかと。
イベントとか使うと重くなりそうで・・・・

53 :
>27,30,32,39,41です。
Ozの言語仕様,計算モデルに遠い順から「なでしこ」HSP、
VB,PHP,JavaScript,C,Java,C++,Ruby,Python,
Perl,C#3.0と来て…
Ocaml,Haskell,Clean,Erlang!
特にErlangなんかやってるエリクソンの連中に
とっては、Schemeに対するLisp同様、ほとんど
抵抗がないのではなかろうか?

54 :
悪い。Scalaを忘れていました。
これも結構近いんじゃ?

55 :
Ozはなでしこからかなり遠いのか・・・
厳しいな・・・Orz

56 :
>>52
データフロー並列は言語の計算モデル。
C#でどう実装もクソもない。
それと、性能を当て推量で予想するのはやめろ。
スレッドまわりのパフォーマンスなんて誰にも
予想がつかない。実装と最適化あるのみ。

57 :
>>56
おまいがいってる言語の計算モデルってのは何のことだ?
原語特有の機能だからC#には無理といってるのか、言語にかかわらず普遍的な計算モデルといってるのか。
いずれにしてもここでの質問はC#で同じような動きを効率的に動作させるためにはどうしたらいいのかということで、ただの否定なら小学生にも出来るんだよ僕。
実装して動作させることも大事だけど、コストのかからないものを頭の中で作り上げることも大事だよ?それない奴は無駄にデバッガー使って時間を浪費する。

58 :
>55
いや、なでしこが遠いのは単にコードが日本語だから…
Ozなんかを扱ってるアングロサクソン民族の言語から
すれば、まず日本語を覚えることが障害になる。(^_^;)
つまらん話だが、これって結構重要。
例えば
>43
>むしろSchemeの仕組みがわかる本なのだが……
SICPをそう考えるところから、もうかなりズレてる。
このCTMCPもOzなりMozartの入門書と考えると
やはり本質を外している。
重要なのはまず概念だと思う。
それをサンプル言語でどう表現するか?
ところが、その言語の習熟度により概念の理解に
格差が生まれ、なかには躓いたまま立ち上がれない
人もいる。Orz
入り口でずっころんで、中にも入れない。
だから、もっと親しみのある言語で初歩的なところは
説明したらどうか?と。
Ozの言語説明ならラクダ本じゃないが、魔法本?かなんか
書けばよいと思うわけ。

59 :
>>58
> 重要なのはまず概念だと思う。
> それをサンプル言語でどう表現するか?
概念と言語の結びつきを誤解してる。
概念を理解すればすなわちOzを理解したことになる。
てか、そんなに強烈に複雑難解な機能は入ってないじゃん、
Oz。
予約語だってほんの少数。昔の人はN88-BASICを(ry
他の言語はそれぞれ別の概念にもとづいているから、
他の言語を使って説明するのは、同時に2つの言語を
説明するに等しい。
まわりくどくなるし、たぶんバグが出る。
もしJavaを理解してるつもりなら、Javaのメモリモデルとか
調べてみ。
「Ozちょーかんたん」と思うようになると思うぞ。

60 :
多分、セルフフィードバックで説明を完結させるやりかたに、納得がいかない
人なんじゃないかな?
そういう人は、どんな本を読むよりも、インタプリタを機械語かCで作るしか、
ダメなんじゃないかと。超循環評価器にたどりつくのは自分には向いてないと
すっぱりあきらめて。

61 :
>59,60
昨日ようやくCTMCPがある本屋に置いてあったので、序章と
第一章と個人的に興味のある制約プログラミングの章及び
付録Dを立ち読みし、後は斜めにパラパラと…
それでも一時間かかった。
重いよぉ。この本。今日も肩と腰が痛い…^m^
確かにOzの言語仕様は簡単で分かりやすい。
Schemeでプログラムの最後が))))))とかなって
どのカッコがどれに対応しているのかさっぱり
分からん言語よりはるかにまし。
実用的かどうかは分からんが…
でも命令型、関数型、論理型、オブジェクト指向、並列型と
ほぼ全てのパラダイムを一つの言語でカバーしている。
C#なんかが関数型言語の書き方を3.0で取り込んだり
Ruby1.9でラムダ表記が仕様に入ったりで世の中の
流れは確かにマルチパラダイム言語の方向に進んでいる。
CTMCPが面白い試みであることは間違いない。(*^^)v

62 :
リフレクション系のAPIはたくさんあるけど、
S式ベースの言語のプログラム表現が一番分かりやすいだろ。
それを無視して()を批判しても意味がない。
逆に考えると、初歩の初歩で終わるなら、S式の意味はない。
マクロやDSLは扱わないような。

63 :
Ozで書かれたプログラムで有名なものって何があります?

64 :
Orz

65 :
>>63
Mozart

66 :
それはOzの実装

67 :
自分自身で実装されていない言語は
で、MozartはまさかCで書いてあったりしないよな?

68 :
頭大丈夫かしら

69 :
gccはC言語で書いてある。
あとはわかるよな?

70 :
PythonはCで書いてある実装がある
Javaもそう
あとはわかるよな?

71 :
自分自身以外での実装があるのは普通だろ。
よほど小規模でもハンドアセンブルするより楽なことが多い。
が、自分自身での実装がないってのは
言語としてB級。
ちなみにJavaはJava自身での実装がある。

72 :
>>63
× Ozで書かれたプログラムで有名なものって何があります?
○ Mozartで書かれたプログラムで有名なものって何があります?

73 :
>>71
>ちなみにJavaはJava自身での実装がある。
な、なんだってーーー!!kwsk!!
APIセットじゃないよね?コンパイラだよね!?

74 :
>>73
バイトコードへのコンパイラは当然Javaだろ昔から。
Javaで書かれたJava VMがあるんだよ。
ttp://jikesrvm.org/

75 :
>>74
やべー面白そうwww

76 :
失礼しました
Mozartで書かれたプログラムで有名なものって何があります?

77 :
Orz

78 :
>>76
Oz

79 :
それはMozartの対象言語

80 :
>76
Ozはカーネル言語だから、つまり実用性はなく
プログラミング概念を簡潔に言語化し
それがユーザーの前で「実験的」に
動き、概念を理解するのを補助するために
開発された言語だと思う。
そう言った意味ではこの本が書かれた時点で
既にその目的の大半は達成している。
今後は教室や研究室でほそぼそと使用される
言語じゃないだろうか…(・・?
従って重要なのはプログラミングパラダイムの
理解であって、実用性は考慮の範囲外。

81 :
>>Ozはカーネル言語だから
そこ、まちがい
ほんとにスイーツが増えたなあ

82 :
アセンブラをアセンブラで書くこともあればLLで書くこともある。
自分自身の処理系の記述能力には、チューリング完全性と同程度の意味しかない。

83 :
> チューリング完全性と同程度の意味
それ重要じゃねーか。

84 :
>>80
なんでOzがカーネル言語だって知ってるんだ?
日本でカーネル言語なんて単語あんまり使わんだろ。
研究者?
Oz/K: a kernel language for component-based open programming
http://portal.acm.org/citation.cfm?id=1289980

85 :
カーネル記述言語とは別にカーネル言語ってのがあるんだ?

86 :
カーネルを記述する言語がカーネル言語じゃない?
カーネルって別にLinuxのとかWindowsでいってるkernelだけじゃないし

87 :
>>84
この本に書いてあるだろうよ。。

88 :
>>84
おまい、読者じゃないだろw

89 :
Schemeよりとっつきやすいな、Ozて
学習用としてはたしかにいいかもしれん
まぁ言語うんぬんより、計算モデルの本質を学ばなきゃこの本を買った意味ないんだけど

90 :
>>83
> それ重要じゃねーか。
逆だろ? たとえば、
sendmail.cfがチューリング完全だからといって、それがどれくらい重要かというと
・記法が配送の記述に向いてるかどうかは関係ない
・プログラミングに向いてるかどうかとは関係ない
つまり、向き不向き(優劣)の議論と、チューリング完全かどうか、は、
全く関係ない。
と昨日までは思っていたのだが、どこぞでPyPyはpartial evaluationだ二村射影だ
という記事を読んで少々意見が変わった。そのへんの理論を実用のシステムに
応用するのがあたりまえになってくると重要になってくるかも。

91 :
Futamura projectionが出てくるとはアカデミック。感心した。

92 :
あとはわかるよな。

93 :
現在の実用上でも、もしHTMLがPostscriptみたいに
チューリング完全だったら、今のWebはなかっただろうな。

94 :
HTMLもJavaScript込みで考えればチューリング完全だった希ガス

95 :
>81 ほんとにスイーツが増えたなあ
そこ、まちがい
スイーツ(笑) だから

96 :
考える脳はスイーツを欲しています。
何も考えてないような奴がスイーツを食うとピザるだけだけどねw

97 :
>89
>まぁ言語うんぬんより、計算モデルの本質を学ばなきゃ
>この本を買った意味ないんだけど
この本は確かに計算モデルの本質=概念を理解させる
ことが目的なんだが、概念って本質じゃないよね?
つまり人間側がどう計算モデルを理解しているかという
認知モデルだ。
例えば関数型のA.再帰計算モデルとB.末尾再帰計算モデルが
あって、Ozで実行すると確かにスピードは圧倒的にBが速い。
しかし、実装レベルでは…
字句解析で再帰モデルは全てfor文に書き換えられており、
Aでは同じfor文を余計に回すように組まれてるって
可能性も否定出来ない。「C言語」で…
あとはわかるよな。

98 :
>>97
お前C言語脳になってるぞ。
この世にはな、ハードウェアを無視して数学から発生する
言語があるんだよ。

99 :
そうだね。
どうも「あとはわかるよな。」は自分の認知モデルこそ本質と
思ってるようだが、以下「本質」を禁止ワードにして説明してみる。
認知モデルとして脳内に操作的意味論しか存在しないと苦労するよ。
(俺もそうなので苦労している)。
何かの学習で重要なのは、自分の既存の認知モデルを足がかりに、
新しい何かの認知モデルを頭の中に構築すること、それがすなわち、
新しい概念を理解する、ということなわけだ。
古式ゆかしいBASICには、まともなサブルーチンの概念もないし、
(フォールスルー的に前の行から侵入できちゃうから)
グローバル変数しかない。
もし、その状態の脳のまま、C(でもPascalでもAlgolでも)の
ローカル変数を「BASICでそれに相当するもの」に置き換えて
考えようとしている限り、進歩はないよね。
> しかし、実装レベルでは…
と、実装の話で強弁してるけど、全ては機械語に落ちているという
ことに異論がある奴はいないだろうが、それは、世界には一種類の
万能チューリング機械さえ存在していれば何もいらない、と言って
いるようなものだ。

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 削除依頼
・ 次のスレ
日本語プログラミング言語「プロデル」
Perlについての質問箱 49箱目
【SICP】計算機プログラムの構造と解釈 Part2
新しいプログラム言語作る〜4カ年計画