Lispから来るClojureを学ぶ[閉じた
-
16-10-2019 - |
質問
私はLispが大好きなので、Clojureを私の新しいハッキング言語にすることを真剣に考えていますが、CLとスキームにいくつかの問題があります。私はこれまでJava環境で働いたことがなく、私のLISPの経験は「SICP」と「The Little Schemer」を通じて作業することに限定されています。
何を知る必要がありますか? 「The Clojure Way」に良いリソースはありますか? Clojureスタイルに関するリソースはありますか? Mark Volkmannの優れたページを見つけましたが、私が見た本は少し予備のようです。
また、Javaについて何を知る必要がありますか? Clojureを学ぶためだけにJavaを学びたくないのですが、少なくとも少し知る必要があると思います。また、ワークフローはどのようなものですか?私の経験は動的な言語に限定されているので、JVMにソースなしでアプリケーションを配布するために何をしなければならないか分かりません。
私はこれを明らかにグーグルで検索しましたが、大量の情報があり、「Clojure固有の」ものではありません。
ある種の論理的なシーケンスで読むべき文学の種類に関するいくつかの賢明な提案を探していると思います。
解決
あなたは多くの人を見て間違って行くことはできません Clojure ビデオ blip.tv あなたが扱うことができるように、特にリッチ・ヒッキー自身によるもの。これらは、Clojureに固有の概念的なポイントと側面を家に持ち帰るのに役立ちます。
LISPの概念に十分に精通している場合は、最初にプレイしたLISPに「マップ」する方法を学ぶことに集中することをお勧めします。 Rich Hickeyのビデオをご覧ください 「LISPプログラマーのためのClojure。」
Clojureはそれを使用することを恥ずかしがらないので、Javaにある程度精通している必要があります。 Javaを賢い場所で使用することは、どういうわけか(私が言うことができる限り)クロイエリーを非クロイリーではありません。私は少なくともスルーをスキムします APIドキュメント のために java.lang
と java.io
パッケージ、なぜなら java.lang
Clojureプログラム内で自動的に使用できます java.io
頻繁に使用されます。
私の頭の中に私のクロジュアからリスクへの辞書を、私のジャワの基本を私の後ろに置いて、私は選びます 取り組むべき小さなプロジェクト. 。 ClojureおよびClojure-Contrib APIドキュメントを便利に保ちます(Web上で、またはREPLの(doc)コマンドを使用してください)、多くの多くのClojureブログを熟読します。私のお気に入りの2つはです http://nakkaya.com/ と http://stuartsierra.com/. 。 Diigoを使用している場合、たくさんのブログがブックマークされています Clojureグループ.
注:開発環境に夢中にならないでください。にリストされているオプションが多数あります Wikiページを開始します. 。 Clojureと最初の小さなプロジェクトを学ぶために、私はあなたのプレーンテキスト編集者を選んで、の基本を学び、使用するだけです レインニンン すべてのパスと依存関係を備えた素敵なプロジェクトディレクトリのセットアップを取得するには、コマンド「Lein Repl」を使用して、すべての依存関係をロードして利用できるようにしてREPLを起動します。 (以前のLISPエクスペリエンスに基づいて)EMACを使用すると仮定すると、 describe-variable
あなたの inferior-lisp-program
することが lein repl
, 、そして、すべてが自動的に動作するために、あなたの例プロジェクトのルートからemacsを開始します。
がある 本 あなたは読むことができます、特にClojureの喜び、プログラミングClojure、実用的なClojureを読むことができます。後者の2つは、最初のものよりも「実用的」であり、より「哲学的」です(グロスの一般化を許します)。実用的なClojureはClojure 1.2で最新ですが、プログラミングClojureは少し古いです。
最後に、#clojure IRCチャンネルにアクセスして、Clojure Googleグループを使用してください。
他のヒント
他の方向からClojureに来た人からのちょっとした視点(Java-> Clojure)
- 私は実際に、Clojureのリスピーな部分が、構文と一般的なイディオムを取り囲んだら、学習しやすいことがわかりました。それはあなたにとってさらに簡単になると思います。
- あなたはほとんどのことをするためにJavaの多くの知識を本当に必要としません - あなたが望むなら、あなたは純粋なClojureでほとんどすべてをすることができます。
- おそらく、Java Interopに飛び込む必要があるJavaライブラリを使用したいときだけです。幸いなことに、インターナットは非常にシンプルです - それはJavaスタイルよりもLispスタイルであるため、あなたが把握する必要があるのはJavaインターフェイスを理解し、Clojure側から適切な呼び出しを行う方法だけです。
私の環境では、私は使用しています 日食 + 反時計回り. 。これは、IDESが好きな場合や、最終的にJavaで仕事をしたいと思うかもしれないと思うなら、非常にうまく機能します。それ以上の依存関係は必要ありません、あなたに優れたデバッガーを与え、完全なREPLを持っています(埋め込まれた nrepl 私は信じています)、すべてのプロジェクトファイル管理(GIT、SVNなど)を行い、Java ClassPathのセットアップのようなものを自動的に処理します(これはJavaの新人にとって大きな障害になる可能性があります!)。それがあなたのスタイルに合っているかもしれないと思うなら、私はそれをチェックすることをお勧めします、私はまた良いことを聞いたことがあります enclojure 同じように。
IDESに興味がないなら、Semperosが彼の優れた答えで示唆しているように、お気に入りのテキストエディターとコマンドラインツールでおそらく最善です。