私はコンピュータープログラムの構造と解釈を読んでいます。Lisp は私にその方法で考えるように教えています。Java 開発者として、clojure を学びたいと思っています。
Clojure が Lisp に似ていることは知っています。私の質問は、Lisp を学ぶことで clojure を簡単に学べるでしょうか? 両方の言語に同様の概念はありますか?
私はコンピュータープログラムの構造と解釈を読んでいます。Lisp は私にその方法で考えるように教えています。Java 開発者として、clojure を学びたいと思っています。
Clojure が Lisp に似ていることは知っています。私の質問は、Lisp を学ぶことで clojure を簡単に学べるでしょうか? 両方の言語に同様の概念はありますか?
Clojureは他のLispと多くの類似点を共有しています。SICPは素晴らしい本であり、Schemeに焦点を当てていますが、Schemeが教えていることの多くは、Clojureに直接関連しています。
1つのLispを傾けると、別のLispを拾うのが大幅に簡単になります。
ただし、Clojureには、注目に値する「異なる」ものがいくつかあります。
[]
、ハッシュマップ{}
、セットを使用して従来のLisp構文を拡張します。#{}
()
これを一粒の塩で取ってください。私は、Scheme の経験があり、Clojure を使い始めたばかりの Common Lisper であり、決して専門家ではありません。他の人の経験をググることができます。
Clojure と CL/Scheme の違いは、ほとんどが細部にあるようです。包括的な原則は多かれ少なかれ同じであり、他の Lisp の 1 つを既に知っていると仮定すると、Clojure を学んでもプログラミングに対する考え方が大きく変わるとは思えません。不変性と関数型プログラミングは、Scheme でさえ見られるよりもはるかに強調されており、いくつかの関数は異なる名前が付けられており、単なる括弧ではなく、括弧/括弧/カーリーのバランスを取る必要がありますが、言語レベルではほとんどそれだけです。
CL/Scheme を学んだことで、これまでのところ、Clojure を他の方法よりもはるかに簡単に使用できるようになったようです。
最後に、Scheme を二度と見ないつもりでも、SICP とそれに付随する講義に取り組むことは時間の価値があります。一般的に役立つ CompSci の原則の多くと、最終的にどの言語を使用するにしても、開発者として役立つ特定の考え方を教えてくれます。
各言語には独自のニュアンスがあります。あなたは現在、Lisp のちょっとした癖 (Common Lisp/CL を想定) を学んでいますが、2 番目の Lisp の方言は言うまでもなく、別の言語を習得すれば、それらの癖/違い/ニュアンスも学ぶことができます。
学ぶ時間がたくさんない限り、プログラミングに興味があるならClojureを、プログラミングに興味があるならLispを学ぶでしょう。
Lisp の方言が Algol-C ベースの言語とどのように異なるかを学ぶことに慣れるので、Lisp を学ぶことは悪いことではありません。さらに言えば、Scheme の学習についても同じことが言えます。
Clojure までは、似たような言語でプログラミングしていましたが、Bliss-32 や PL/I IMHO でさえ、Lisp の方言よりも C や Java に似ています。Clojure を学ぶには、(90 年代に) C から C++ に移行するよりもさらに精神的な再調整が必要でした (そして今もなお必要です)。
私は再編成を楽しんでいますが、それは学習曲線を伴う段階的なものです。
私も同じ道をたどりました。私の友人が古い Lisp で、興味から Lisp を学ばせてもらったからです。彼は 70 年代初頭にハッキングを始め、いくつかの Lisp 企業で働いていました。私たちがプログラミング言語について話しているときはいつでも、彼は Lisp に見られる概念に言及していました。
Lisp を学ぶことは、私にとって Clojure の素晴らしいスタートでした。ARM CPU で実行できる Lisp を探していたので、Clojure にたどり着きました。私の目には、Lisp は Java VM と統合されていないため、それほど複雑ではありません。また、Java をよく知らなければ、Clojure を理解することは Lisp よりもはるかに難しいでしょう。私が言えることは、Clojure を学ぶとき、Lisp の基本的な理解が確実に役に立ったということです。