読者です 読者をやめる 読者になる 読者になる

BlogIsHowMuch

鑑賞した作品のレビューやプログラミング系のネタをダラダラ書いていくだけのブログ

Clojureを学んでみた

プログラミング

ロゴ

f:id:HowMuch:20150427222642p:plain

 こちらもHaskellと同じでラムダ記号がモチーフですね。陰陽の図形にも見えますねちなみにClojureでの無名関数はlambdaではなくfnで表します。lambdaって綴りミスりやすいんでありがたいです笑

設計思想

リッチ・ヒッキー (Rich Hickey)がClojure言語を設計した目的は、既存のJavaプラットフォーム上で動作して、並行コンピューティングができる、関数型のLISP系の言語を作ることである。[3][4] Clojure言語が並行コンピューティングを実現する手法は、不変(イミュータブル)な状態の連鎖という概念によって特徴づけられる。 [5]状態が不変であるため、ひとつの状態に対して複数の操作を並列に行うことができ、並列性という問題が「状態遷移の管理」になる。そのため、Clojure言語には、状態遷移に関して明確な定義をもつ可変な参照型がいくつか用意されている。

wikipediaより引用

特徴

  • REPLによる動的な開発ができる
  • 関数が第一級のオブジェクトで、副作用に基づいたループを使わずに、再帰呼び出しを動作原理とする
  • 遅延シーケンス
  • 並列コンピューティング
  • Java仮想マシンバイトコードを生成するコンパイラ言語
  • JavaAPIの呼び出しも容易に行える

wikipediaより引用

学んだサイト

学んでみて

 LISP系の言語はずっとやってみたいと思っていたのですが、ちょっと敷居が高い気がして手を出せずにいました。 しかし、最近Javaを大学で学んだのでJavaの資源が利用できることでも注目されているこのClojureに挑戦してみました。

 Clojureという名前が示す通りあらゆる言語の利点を最強とうたわれるLispに囲いこんだ、まさに究極の言語でした!笑  三日間でPerl5, Haskell, Clojureと学んできて一番この先も使ってみたいと思える言語です。Lispの美しいS式やマクロは以前からなんとなく理解していたのですが、 こんなにすごいのかと感銘を受けました。そして何よりもJavaの資源が生かせるのがでかい!Javaはアンチが多いですが(笑)資源自体はとても有用なものだと思っています。 それがLispで生かせるならこんなにいい言語無いでしょ!!マルチパラダイムということでHaskellほど縛りなく今話題の関数型プログラミングにも挑戦できるし、遅延評価にも対応している! いうことなし!

 まだまだClojureの入り口に立ったばかりですが、これからメインで学ぶべき言語だと確信しました。しかし、日本語のClojureの解説サイトって結構少ないんですよね~(T_T) 英語を頑張って読んでみてもいいんですけど時間がかかると思うので本でも買って勉強するかな~ これから日本でもっとメジャーになってほしいです。