質問

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

同じことについての説明も良いでしょう

誰か説明してもらえませんか メタ言語の抽象化

役に立ちましたか?

解決

SICPは本当に家には同じもののようにコードとデータを見ることが可能である点を運転します。

Iはまたは(単一のストレージ構造は、コードとデータの両方を保持する)ノイマン型(UTMへの入力は単にプログラムの表現である)万能チューリングマシンを考えると前にこれを理解し、しかしSICPのアイデアを作っはるかに明確。プログラムの構文は、一般的なリストのための構文、すなわちS式とまったく同じであるとしてスキーム(Lispは)、ここで助けます。

あなたは、コードとデータの「等価性」を持っていたら、

、突然たくさんのが容易になります。たとえば、異なる評価方法(怠惰な、非決定性、のなど)を持つプログラムを書くことができます。以前、私は、これはプログラミング言語の拡張が必要になると考えているかもしれません。実際に、私はちょうどので、コア言語を最小限にすることができ、言語自分自身にそれを追加することができます。別の例として、あなたは同様に、オブジェクト指向のフレームワークを実装することができます。再び、これは私が単純に言語を変更する必要だろうと思ったかもしれないものです。

ちなみに、私はSICPを希望する一つのことは、より多くを言及していた:タイプ。 の編集の時に型チェックすることは驚くべきことです。オブジェクト指向プログラミングのSICPの実装では、この利点を持っていませんでした。

他のヒント

私はまだその本を読んでいない、私はビデオのみのコースを見てきましたが、それは私をたくさん教えてくれました。ファーストクラスの市民としての機能は、心が私のために吹いていました。 「変数」を実行すると、私にとって非常に新しいものでした。これらの動画を私は今、JavaScriptを参照し、一般的なプログラミングが大幅に変更されています。

の道を見た後

ああ、私は本当に私を襲ったものは+が機能したということでした、嘘をついたと思います。

私はSICPについての最も驚くべきことは、実際にチューリング完全な言語を作るために必要とされているか、いくつかのプリミティブ見ることだと思います - ほとんど何も、ほぼゼロから構築することができます。

。 我々はSICPを議論しているので、

、私は<のhref = "http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lecturesでビデオ講義のための私の標準プラグに入れますあなたが得ることを望むことができ、コンピュータサイエンスの最高紹介している/」のrel = 『noreferrer』> http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ を、 20時間でます。

私が本当にかっこいいと思ったのは、 ストリーム 評価が遅れます。素数の生成に関するものは、本当に素晴らしいと思いました。シーケンス内の次のプライムを魔法のように分配する「PEZ」ディスペンサーのようなものです。

の一例A.レックスの回答から、「データとコードが同じことをされている」非常に深い方法で私を得ています。

車、CDR、短所:私はLispのバックロシアで教えられたときは、

、私たちの教師は言語がリストについてだったことを私たちに語りました。本当に私を驚かせたことは、あなたがすべてでこれらの機能を必要としないという事実だった - あなたはあなた自身の、与えられたクロージャを書くことができます。だから、Lispは後のすべてのリストに関するものではありません!それは大きな驚きでした。

私はと完全に不慣れだったコンセプト、すなわち二つの機能を持つ、コルーチンするのアイデアでした補完的な仕事をしていると、それらの間のプログラムフロー制御の代替を持っています。

私はSICPを読んだとき、私はまだ高校生だった、と私は第一及び第二章に焦点を当てていました。私にとっては一度、私はあなたがコード内のすべてのそれらの数学的なアイデアを表現し、コンピュータを持って汚い仕事の大半を行うことができると言っています。

私はSICPを家庭教師されたときに

、私はさまざまな側面に感銘を受けました。 1については、コードが実行可能なデータであるため、データとコードは、実際には同じものであることを謎。メタ言語の抽象化の章では、多くに圧倒され、多くの手取りメッセージを持っています。最初は、すべてのルールが任意であるということです。これは一部の学生、心の物理学者いる人に特別にそれらを悩まします。私は美しさは自分自身のルールではありませんが、ルールの結果を検討中だと思います。コード内の1行の変化は、字句スコープと動的スコープの違いを意味することができます。

SICPはまだ多くの楽しさと洞察力のですが、

今日、私はそれが時代遅れになってきていますことを理解してください。一つは、それが今日の巨大なシステムでの作業のために不可欠である、(私はそこに型システムを含む)にスキルやツールをデバッグ教示していない。

私はそれが言語を実装することがいかに簡単であるかの最も驚きました。その一つが黒板にスキームのためのインタプリタを書くことができます。

私は

SICPの章のいくつかを読んだ後に別の意味で再帰を感じました

私は「従来のインタフェースとしてシーケンス」セクションで、今だと、非常に魅力的な第一級オブジェクトとして手続きの概念を発見しました。また、再帰のアプリケーションは、私がどの言語でも見たことのないものです。

クロージャます。

主に不可欠な背景(のJava、C#の、など - 私だけ初めて1年ほど前にSICPを読んで、今それを再度読んでいます)から来て、機能的に考えて、にとって大きな啓示でした私;それは完全に私が今日の私の仕事について考える方法を変更します。

私は(運動なし)本書の大部分をお読みください。私が学んだことはどのように抽象的、現実世界の特定のレベルで、どのように言語を実装することです。

各章にはアイデアが私を驚かあります:

最初の2つの章は私に現実の世界を抽象化の二つの方法を示しています。手順で抽象化し、データを抽象化する

第3章では、現実の世界で時間を導入しています。それは状態になります。我々は問題を提起割り当てを、してみてください。その後、我々はストリームを試します。

第4章では、他の言葉で、我々は表現の意味を判断し、評価を構築することにより、新しい言語を実装し、メタ言語の抽象化についてです。

第4章における評価者はLispのプログラムそのものであるので、下地のLispシステムの制御構造を継承します。そこで、第5章では、我々は、抽象モデルの助けを借りて、実際のコンピュータのステップバイステップの操作に飛び込む、マシンを登録します。

感謝します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top