10

SICP - 「コンピュータプログラムの構造と解釈」

同じことの説明はいいだろう

誰かがメタ言語的抽象化について説明できますか

4

12 に答える 12

22

SICP は、コードとデータを同じものとして見ることができるという点を本当に強調しました。

これは以前、ユニバーサル チューリング マシン (UTM への入力はプログラムの表現にすぎません) やフォン ノイマン アーキテクチャ (単一のストレージ構造にコードとデータの両方が保持される) について考えたときに理解していましたが、SICP によってその考えがより明確になりました。 . ここではScheme (Lisp)が役に立ちました。プログラムの構文は、一般的なリストの構文、つまりS式とまったく同じだからです。

コードとデータの「同等性」が得られると、突然多くのことが簡単になります。たとえば、さまざまな評価方法 (遅延、非決定論など) を持つプログラムを作成できます。以前は、これにはプログラミング言語の拡張が必要だと考えていたかもしれません。実際には、自分で言語に追加するだけで、コア言語を最小限に抑えることができます。別の例として、同様にオブジェクト指向フレームワークを実装できます。繰り返しますが、これは言語を変更する必要があると素朴に考えていたかもしれません。

ちなみに、SICP にもっと言及してほしかったことの 1 つは、型です。コンパイル時の型チェックは素晴らしいものです。オブジェクト指向プログラミングの SICP 実装には、この利点がありませんでした。

于 2009-01-27T13:10:47.263 に答える
9

私はまだその本を読んでおらず、ビデオ コースを見ただけでしたが、多くのことを学びました。ファーストクラスの市民としての機能は、私にとって衝撃的でした。「変数」を実行することは、私にとって非常に新しいことでした。これらのビデオを見た後、JavaScript とプログラミング全般に対する見方が大きく変わりました。

ああ、私は嘘をついたと思います。私を本当に驚かせたのは、 + が関数だったということです。

于 2009-01-27T10:06:07.807 に答える
5

カッコいいと思ったのは、評価が遅れた配信です。素数の生成に関するものは、私が本当に素晴らしいと思ったものでした。シーケンスの次の素数を魔法のように分配する「PEZ」ディスペンサーのように。

于 2009-01-27T13:23:37.267 に答える
5

SICP について最も驚くべきことは、Turing の完全な言語を作成するために実際に必要なプリミティブがいかに少ないかを確認できることです。

SICP について話し合っているので、 http: //groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/のビデオ講義用の標準プラグインを挿入します。 20時間で取得できるコンピューターサイエンス.

于 2009-01-28T17:15:37.020 に答える
4

A. Rex の回答からの「データとコードは同じもの」の一例は、私を非常に深く理解させました。

私がロシアで Lisp を教えられたとき、私たちの教師は言語はリストに関するものだと言いました: car、cdr、cons。私が本当に驚いたのは、これらの関数がまったく必要ないという事実でした。クロージャがあれば、独自に記述できます。結局のところ、Lisp はリストに関するものではありません! それは大きな驚きでした。

于 2009-01-27T13:32:12.197 に答える
3

私がまったくなじみのなかった概念は、コルーチンのアイデアでした。つまり、2 つの機能が補完的な作業を行い、プログラムのフロー制御がそれらの間で交互に行われます。

于 2009-01-27T10:51:17.810 に答える
2

言語の実装がいかに簡単であるかに最も驚きました。その人は、Scheme のインタプリタを黒板に書くことができました。

于 2009-02-01T16:19:45.533 に答える
2

SICPを読んだのはまだ高校生で、第一章と第二章に集中していました。当時の私は、これらの数学的アイデアをすべてコードで表現し、コンピューターにほとんどの汚い仕事を任せることができるのが好きでした。

SICP の個別指導をしていたとき、さまざまな側面に感銘を受けました。1 つには、コードは実行可能なデータであるため、データとコードは実際には同じものであるという難問があります。メタ言語の抽象化に関する章は、多くの人にとって気が遠くなるようなものであり、多くの持ち帰り用のメッセージがあります。1 つ目は、すべてのルールが恣意的であることです。これは、一部の学生、特に物理学者である学生を悩ませます。美しさはルール自体にあるのではなく、ルールの結果を研究することにあると思います。コードの 1 行の変更は、字句スコープと動的スコープの違いを意味します。

今日でも、SICP は多くの人にとって楽しく洞察力に富んでいますが、時代遅れになりつつあることは理解しています。1 つには、今日の巨大なシステムでの作業に不可欠なデバッグのスキルやツール (型システムも含まれています) については教えていません。

于 2009-01-29T02:42:40.960 に答える
1

私は現在、「従来のインターフェースとしてのシーケンス」のセクションにいますが、第一級市民としての手順の概念は非常に魅力的であることがわかりました。また、再帰の適用は、私がどの言語でも見たことがないものです。

于 2009-02-18T18:09:15.523 に答える
1

SICP のいくつかの章を読んで、Recursion を別の意味で感じました。

于 2009-01-29T16:23:26.447 に答える
0

閉鎖。

主に必須のバックグラウンド (Java、C# など - 私は 1 年ほど前に初めて SICP を読んだだけで、今それを読み直しています) から来て、機能的な観点から考えることは私にとって大きな啓示でした。今日の仕事に対する考え方が完全に変わりました。

于 2009-01-31T00:22:40.987 に答える