1read 100read
2012年1月1期プログラム35: 【SICP】計算機プログラムの構造と解釈 Part2 (697) TOP カテ一覧 スレ一覧 2ch元 削除依頼
・ 次のスレ
36: Delphiで無料でプログラミングしてみるお (384)
37: 【node.js】サーバサイドjavascript【Rhino】 (429)
38: 3Dアルゴリズム全般 (310)
39: ネットワークプログラミング相談室 Port27 (754)

【SICP】計算機プログラムの構造と解釈 Part2


1 :08/02/16 〜 最終レス :12/01/09
「計算機プログラムの構造と解釈」に関する議論とQ&Aの為のスレです。
SICP(英語)
http://mitpress.mit.edu/sicp/full-text/book/book.html
「計算機プログラムの構造と解釈」の原書です。
全てオンラインで読めます。
訳者の計算機プログラムの構造と解釈に関するホームページ
http://www.ipl.t.u-tokyo.ac.jp/sicp/
問題の解答もおいてます。
書籍情報(Amazon)
http://www.amazon.co.jp/exec/obidos/ASIN/489471163X/250-3648248-8159430
前スレ
【SICP】計算機プログラムの構造と解釈【Scheme】
http://pc11.2ch.net/test/read.cgi/tech/1107345738/
【入門】Common Lisp その4【質問よろず】
http://pc11.2ch.net/test/read.cgi/tech/1201402366/

2 :
Web上のSICP読書会
http://www29.atwiki.jp/sicpstudygroup/
翻訳の良し悪しについて語るスレではありません。
翻訳して下さっているだけ有難いという心を持ちましょう。

3 :
>>1

4 :
■関連リンク
本家MITのSICP OpenCourseWare
http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-001Spring-2005/CourseHome/index.htm
東京大学:『Scheme演習』
http://www-ui.is.s.u-tokyo.ac.jp/~hara2001/scheme/
京都大学:『アルゴリズムとデータ構造入門』
http://winnie.kuis.kyoto-u.ac.jp/~okuno/Lecture/07/IntroAlgDs/
ここに図形言語に関する詳しい説明もあります。

5 :
>>2
> 翻訳して下さっているだけ有難いという心を持ちましょう。
それはないわw

6 :
>>5
またおまえか

7 :
前スレで紹介された関連書籍
Friedman, Felleisen "Little Schemer"
Sussman, Abelson, Sussman "Structure and Interpretation of Computer Programs"
Chris Hankin "An Introduction to Lambda Calculi for Computer Scientists"
Raymond Smullyan "To Mock A Mockingbird"
W. Kluge "Abstract Computing Machines: A Lambda Calculus Perspective"
Friedman, Wand, Haynes "Essentials of Programming Language"

8 :
>>1 乙
>>7
Simply Schemeは?

9 :
>>8
わすれてた。d。

10 :
ケント・ディヴィグ "Scheme"

11 :
Paul Graham "On Lisp"
Paul Graham "ANSI Common LISP"

12 :
How to Design Programs(HtDP)ってSICPとどんな関係なのかな?
SICPを簡単にした物? SICPを読む準備? 関係無し?

13 :
>>12
読んだ事ないけどJavaなんかの話も出てくる。デザイン(パターン)の話が入ってるらしい。
関係ある話もあるみたいだけど、Schemeを学ぶ目的には向いてない。

14 :
http://pc11.2ch.net/test/read.cgi/tech/1107345738/996
>Lispマシンが失敗した理由はLisperにしか使いこなせないからじゃないです。
>そういうものを目指していたわけでもありません。

>単に、ごく普通のコンピュータのほうがLispを実行しても速くなってしまったので、
>存在価値が無くなっただけです。
マシーンが遅いとLispマシンに何か優位性でもあるわけか?

15 :
>>14
> >単に、ごく普通のコンピュータのほうがLispを実行しても速くなってしまったので、
> >存在価値が無くなっただけです。
>
> マシーンが遅いとLispマシンに何か優位性でもあるわけか?
普通のコンピュータでLispを実行するよりも速いなら、
Lispマシンに優位性がありますよね?

16 :
>>前スレ987
>おまえらそんなに頭が良いのにどうしてSchemeのOSとか、
>SchemeのEmacsとか、更にもっと気の利いたプログラム作らないの?
SICP読んでSchemeのOS作ってる人はいるよ
ttp://d.hatena.ne.jp/higepon/

17 :
>>7
Essentials of Programming Languageはもうすぐ3版が出るんだな

18 :
>>15
そこがよくわからない。Lispマシンと他のマシンが同じ速さだとして、Lispマシンに優位性がないなら特定ユーザに特化しているから衰退したんじゃないの?
つまり一般ユーザ向けに出来ていなかったという主張の方が正しそうだけど。

19 :
http://www.oreilly.co.jp/editors/archives/000158.html
面白そうな本を発見。Lispの話はあるのかな?

20 :
どうでもええやん

21 :
>>19
Chapter 31: Emacspeak: The Complete Audio Desktop
Chapter 33: Writing Programs for "The Book"
 Warning to Parenthophobes
その他ちらほら話題が。

22 :
>>14
引用元を書いた人だが、何を言いたいのかさっぱり判らない。
日本語でお願いしたい。

23 :
>>18
仮にLispだけでも普通のマシンより速かったなら失敗しなかっただろう。(仮定法過去)w
と書けば理解できるか?

24 :
前スレ>>987
> MIT Schemeのエディタ
なにそれ?

25 :
エドウィンのことじゃね?

26 :
速度なんかもんだいじゃないだろ。
他のマシンはユーザーフレンドリになったけどLispマシーンはそうじゃなかった。
ただそれだけ。

27 :
ドザやマカーが喜びそうなOSではないなw

28 :
SmalltalkマツーンのALTOも高価だったのがネックで速度とかユーザーフレンドリーとか関係ないよ。

29 :
lisp shellで十分

30 :
>>26
おいおい、Lispマシンはもっとも最初のまともな統合GUI環境の一つだぞ。

31 :
>>26
凄い無知だな

32 :
マックの原型はInterlisp-Dでそ。

33 :
>>30-31
論点ずれてるぞ。いま当時のLispマシーンを見て最先端の統合GUI環境なのかよw
そうじゃないから衰退したって話だろ。

34 :
もしもApple][がLispマシンとして成功してたらMacもWinもLispマシンになってただろうな。

35 :
「今当時のLispマシーンを見て」?
何を言っているのだ、お前は?

36 :
>33
そんな話してるのはあんただけ
特殊用途でもコストを支払う需要があれば存続できるんだよ

37 :
>>33
当時最先端のGUI環境だったんだよ。衰退した原因は明らかに別。

38 :
せいぜいWin95あたりからの歴史しか知らない人なんだろうな

39 :
今見たら、
昔のものは、
非最先端

40 :
>単に、ごく普通のコンピュータのほうがLispを実行しても速くなってしまったので、
>存在価値が無くなっただけです。
とかいってたのに
>特殊用途でもコストを支払う需要があれば存続できるんだよ
と主張をどんどんすりかえてるねw

41 :
なんだ禿自慰かよwww

42 :
おまえの敵は一人じゃないんだよw

43 :
>>40
その特殊用途(Lispの高速実行)すら叶わなくなったから存在意義が無くなったんだよ

44 :
聞く耳持たない人なのかな。だったら議論やめるよ。

45 :
聞く耳がないだけでなく
「いま見て当時の〜が最先端ではない。
だから廃れた。」
と異常な理屈の持ち主なので…

46 :
今見たらとか全然ズレてるよな。
いや、今見てもかなりイケてるんじゃないのかな。

47 :
Lispマシーンとか解析概論を話したいならスレチなのでよそってくれ。迷惑だ。

48 :
そうだなスレチだからやめよう。

49 :
http://pc11.2ch.net/test/read.cgi/tech/1107345738/964
前スレで行列演算を探してたので。Gauche用みたいだけどSchemeなので読めるでしょう。
てか使ってる処理系ぐらい書けよ常考。
http://homepage3.nifty.com/oatu/gauche/nuage.html

50 :
行列演算のデータ構造に処理系云々がどう関わるのか

51 :
>>50
ぐぐれかす

52 :
>>47
ごめんなさい。もうしません。

53 :
スレ違いかも知れませんがどうしても聞きたいことが・・・
ニコニコ動画などで、有料会員登録をすると特別サービスが受けられる代わりに毎月銀行からお金が引かれますよね?
あの仕組みはどうなっているのでしょうか?自分で作る事はできますか??

54 :
ニコニコはわからないが、
アクセスした奴のlP抜いて銀行システムをハックして引き落とすとか
そういうスーパーハッカーがいるという話は噂で聞くね。
実際どうやってるかはググった方が良いよ。
スレ違いだから怖いおじさんに叱られるよ?

55 :
スレ違いだが特別に教えてやる
まずクレジットカード番号をこのスレに入力しろ

56 :
「計算機プログラムの構造と解釈」に関するQ&Aなんでスレ違いじゃないんじゃないかなぁと思って。
誰か答えてくれませんかね。ググっても出ない。

57 :
じゃあソース出せ。

58 :
いや何のソースを

59 :
>>56
という名前の本のスレだ
すれ違いだ

60 :
プログラムのソースに決まってるw

61 :
>>56
ひろゆきにメールしろよ

62 :
>>59
関連性は大いにある
>>60
プログラムのソースがわからんから構造を聞いてる

63 :
ソースがないのに構造を聞かれても

64 :
ソースがあれば構造は分かる

65 :
http://www.amazon.co.jp/dp/489471163X/
まず↑の本と>>53の話がどう関連性があるか言ってもらおうか?
それが示せないならスレ違いで終了

66 :
そろそろ
頭固いですね、意地っ張りですね、低脳の集まりですか?
みたいなレスが来る

67 :
結局、翻訳が悪いから解釈出来ないんですよね?

68 :
的外れになってまいりました

69 :
頭固いですね
意地っ張りですね
低脳の集まりですか?

70 :
ここには頭が柔らかい奴なんかいないよ。
タマゴ当てるとタマゴが割れる位に頭が堅いはずだよ。俺にはわかる。
だからLispマシンも消えたし翻訳もこれで満足だしニコニコのシステムもわからない。

71 :
SICPをアマゾンで買ったんですけど代引きってありますよね、
配達の人にお金払ってそれがどこへ行くんですか?
構造を教えて下さい。

72 :
ワロスw
面白いけどよそでやってくれw

73 :
Edwinてデバッグモードも付いてるし、使いこなせばなかなか楽しいのかも。
Dr.Schemeは使いやすいんだが、メモリ食うし時々暴走して落ちるw
今読んでるみんなは何使ってますか?

74 :
アマゾンも冗談ではなくかなりLisp使っているという話をどこかで読んだ。

75 :
へえ、amazonも?
グレアムの事例と混同してないだろうな

76 :
バベル案内で昔はLisp使ってたけど、今は使わなくなった。
糞ばかりだ。みたいなことはかかれて棚。

77 :
今、4章の超循環評価器を作っている。
フレームについてなんだけど、連想リストを使わないで
((var1 var2 ... varn) val1 val2 ...valn)
とするのはその方が扱いやすいからなのかい?

78 :
>>73
ChezEdit-NTとMzSchemeを主に使っているよ。

79 :
既存のelispの資源を活用しつつschemeが動くようなeclipseの拡張がほしい
pymacsはそれっぽいけどpythonはマクロが使えないのでいま一つ

80 :
>>77
言語仕様として連想リストなんてあったっけ?
俺的にはそれで内側の環境からさかのぼっていく感じで十分分かりやすいと思うけどなぁ

81 :
>>80
別に連想リストに拘っているわけじゃないんだけど、
慣習として(((x . 1)(y . 2)) ((z . 3)))みたく
やる人が多いんじゃないかって思ったんだ。
岩手大学の講義資料を見ると↑式に説明してるみたいだし。
ま、どっちでもいいのだけど。

82 :
4章の評価器をベースにcall/ccを実装しようと
思うのだけどなかなか難しい。
誰かやった人いる?
スタックコピー方式という方法があるらしいのだけど。

83 :
いや、そんな事言ったら東大京大はSICPに準拠してるけどね
まぁ好みじゃない?別に連想でも悪いとは思わないし

84 :
キケロ・イン・ロンドン
キケロ・イン・ロンドン

85 :
>>82
一度SECDマシンで考えて、
<S,E,C,D>(のコピー)が継続そのものであることを理解したら、
継続パッシングスタイルに評価器を書き換える。

86 :
>>85
ありがとう。考えてみるよ。

87 :
Schemeって本当にエレガントだ。一切無駄がなく、明晰だ。

88 :
>>82
call/ccを実装する前に、非再帰的にevalを定義してみ
非再帰的に書くってことは、スタックや継続の代用品を自分で作るってことだから

89 :
いきなり非再帰的にevalが難しいなら、ステップとして非再帰的なクイックソートを作る事オススメ

90 :
>>88
「スタックや」は不要なんじゃね?

91 :
>>90
非再帰的ならいるでしょ。線形再帰じゃないし

92 :
SICPが難しいと感じるレベルの人間ですが、
ものまね鳥の本ってSICP読むのに役立つの?

93 :
>>88
最初、Guy Steele博士の1975年の論文に掲載されている
処理系を参考にしようとしたんだ。これは非再帰で書かれていた。
だけどこれだとbeta式なんてのがでてこてよくわからなかった。
CPUのプログラムカウンターに相当するものをScheme処理系でも
作ることができればそのカウンターと環境とを保存しておけば
call/ccをしたときの状態に復帰できるんじゃないかって考え
はじめたところ。ひげぽんさんの考察も参考にしている。
生のCPU、機械語ならレジスタとプログラムカウンターと
スタックを保存しておいて継続が呼ばれたらそれらを復元して
プログラムカウンターを継続が作られたアドレスにすればいいの
ではないかと思う。関数型の言語は抽象度が高いので簡単には
いかなさそう。

94 :
CPSでevalを書き直して、
continuationを処理するところを追加するのがいいと思う。
Tail recusionだから、CPSなら当然非再帰に実行される。
コードでは再帰を使っていても。
非再帰にこだわってスタックを使い廻すのはscheme的でない。
演習としては面白いと思うけれど。
カンニングしたければ、
Essentials of Programming Languages
71. Continuation Passing Interpreterで。

95 :
>>94
ありがとう。その本、持っていたと思う。
帰ったら読んでみるよ。

96 :
ガイLスチールJrって凄いよな…
どうしたらあんな風になれるんだ?

97 :
CPSな関数は戻ってこないらしいけど、
それならdelayして戻してからforceするスタイルもありえるよね。
こんな感じ
(lambda (x y ... k)
(do ((p (xxcpsxx ... k) (force p))) (#f)))
なら (do以外は) 完全に非再帰になる。
末尾最適化のない言語でも書ける。

98 :
82ではないが
(define-syntax cps
(syntax-rules () ((_ (fn arg ...) k) (delay (k (fn arg ...))))))
(define (cps-factorial n k)
(cps (= n 0)
(lambda (b)
(if b
(k 1)
(cps (- n 1)
(lambda (n-1)
(cps-factorial
n-1
(lambda (f-n-1)
(cps (* n f-n-1) k)))))))))
(define (factorial n)
(call/cc (lambda (k) (do ((p (cps-factorial n k) (force p))) (#f)))))

99 :
>>94
> Essentials of Programming Languages
> 71. Continuation Passing Interpreterで。
3章がenvironment passing interpreterで、
7.3がimperative interpreger。

Reflection
http://library.readscheme.org/page11.html
Continuations and Continuation Passing Style
http://library.readscheme.org/page6.html
あたりもいいんじゃね?
Kenichi Asai. "Reflecting on the Metalevel Interpreter Written in Direct Style"とか。

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
・ 次のスレ
36: Delphiで無料でプログラミングしてみるお (384)
37: 【node.js】サーバサイドjavascript【Rhino】 (429)
38: 3Dアルゴリズム全般 (310)
39: ネットワークプログラミング相談室 Port27 (754)