web-dev-qa-db-ja.com

SchemeではなくClojureでSICPにアプローチする

私はソフトウェアエンジニアリングプログラムの3年目の学部生です。私が設計したこのソフトウェアすべての背後にある原則について、より深く、より根本的な理解を得るために、SICPを読むというアイデアをアドバイザーに持ち込みました。

彼は、Schemeを学習して本を完成させることはせず(LISPの現代方言ほど一般的ではないため)、代わりにClojureで練習することを提案しました。

それはすでに難しい本ですが、私がより現代的なClojureで本の演習を試みた場合、それはどのように機能しますか?たとえば、実際の解決策が見つからない、Schemeで教える構文が異なるなどです。

11
ironicaldiction

大学での最初の年、私が最初に受けたプログラミングコースはSICP(1988年)を使用することでした。しかし、私はあなたのような同様の問題を抱えていました:私のコンピューター(実際にはCommodore Amiga)では、その時点で使用できるScheme実装はなく、別のLISP方言しかありません(その名前を覚えていません)。

ただし、LISPの柔軟性を考えると、不足しているLISPマクロと関数をいくつかのスクリプトに追加するだけで、Scheme構文を「エミュレート」することは非常に簡単でした。これは実際に、コース中に必要な第1章から第3章までのすべての演習を実装するのに十分でした(SICPは実際には完全なSchemeスタックを必要とせず、小さなサブセットで十分です)。

したがって、Clojureは現代のLISP方言であるAFAIKなので、Scheme、Clojure、またはその両方を組み合わせて書くことを完全に自由に選択できる、同じようなことができると思います。

もちろん、Clojureで直接演習を解くことも可能です。どちらの言語も非常に似ています。より重要なのは、SICP プログラミング言語の構文に関するものではない、プログラミングにおける抽象化の正しい使用についてです(たとえば、関数、データ、およびオブジェクトを使用)。したがって、考えられる構文の問題をあまり考えないでください。これらはこの本の焦点では​​なく、おそらく軽微な問題です。

14
Doc Brown

私はあなたの質問をこのサイトを見つけた直後に見つけました。それはあなたの路地のすぐ上にあるようです(数か月のうちにそれまたは別の方法を見つけたかもしれませんが): SICP in Clojure

0
Paul Bissex