意見:なぜClojureを学び、使用すべきか

画像



アメリカの会社Gaslightの開発者は、RubyとRuby on Railsの愛で知られている組織が、Clojureなどの新しいテクノロジーの開発に投資することを決めた理由について興味深い資料を書きました。 その後、Hydraの通信事業者向けの請求書を作成し、このプログラミング言語でも動作するため、Gaslightチームの主要な点を別の資料として強調することにしました。



それでは、なぜClojureを研究して実際のプロジェクトで使用する必要があるのでしょうか?



RubyとRoRだけでなく



GasjuブログにClojureで投稿したJeff Lane氏によると、彼のチームはRubyで処理できない問題を解決することができます。 彼はこの論文を、ガスライトの創始者の一人であるダグ・アルコーンの言葉で説明しています。



「1つのプログラミング言語を永遠に保持することはできないと確信しています。 Rubyが新しい言語に取って代わる時が来ます。 環境自体が変わるからです。 この王位を奪う者がより良く慈悲深くなることを願っています。」


レーンによると、同社はまだRubyに親切だという。 ここでも、RailsはWebアプリケーションを作成するための最良のソリューションと考えられています。 ただし、他のツールと同様に、独自の制限があります。





代替としての関数型プログラミング



関数型プログラミングは、まったく異なる考え方です。 ウィキペディアを見てみましょう:



「関数型プログラミングは、離散数学の一部であり、計算プロセスが後者の数学的理解における関数の値の計算として解釈されるプログラミングパラダイムです。」


関数型言語は、オブジェクト指向のRubyやJavaScriptとは異なり、問題を解決するためのまったく異なるアプローチを提供します。 このアプローチを研究することで、すでに慣れ親しんでいるプログラミング言語の快適な状態に常にある場合には利用できない新しい知識を獲得することができます、とレーンは確信しています。



Clojureはサーバーで実行されます

Clojure.orgから言語の仕組みを説明してください



「Clojureは、業界標準を明確に守り、オープンJVMプラットフォームを使用することにより、その目標を達成しています。 これは、使い慣れたLispへのアップグレードです。 安定した安定したデータ構造で機能的なプログラミングを提供します。 トランザクションメモリソフトウェアと非同期エージェントを使用したマルチスレッドプログラミングの組み込みサポートを提供します。 Clojureは、ニーズに対する高速で信頼性の高いソリューションです。」


そのため、ClojureはJava Virtual Machine(JVM)上で実行されます。つまり、このツールが提供する間違いない利点があります。





Clojureは、最新の効率的な安定したデータ構造が必要な場合に使用できます。 また、core.asyncを使用した新しいマルチスレッドプログラミングモデルも紹介しています。 そして、現在、論理プログラミング、パターンマッチング、オプションタイプなど、実践に役立つその他の多くの有用なライブラリが開発されています。



Clojureはブラウザで動作します

別の引用。 ClojureScript Wikiの利点を説明する方法は次のとおりです。



「優れた移植性、幅広いリーチ、マルチベンダーサポートを備えた開発プラットフォーム。 すべての新しいデバイスと互換性のある、より優れた信頼性の高いアプリケーションを作成するための十分に開発されたツール。


ClojureScriptはJavaScriptで簡単にコンパイルでき、ブラウザーで実行できます。 これらはすべて、クライアントアプリケーションを作成するためのまったく新しいアプローチを提供します。 開発者のコ​​ミュニティでは、JavaScriptは多くの理由で好まれていません。 Clojureは、優れた非同期サポートを備えた便利で簡潔な言語であるLispの完全に独立した子孫と呼ぶことができます、とLaneは書いています。 他のJavaScriptライブラリと対話できます。 これにより、クライアント部分とサーバー部分に同じ言語を使用して、不必要な犠牲や時間の浪費を回避できます。



クライアントアプリケーションで現在のステートフルネスを完全に維持することは簡単なことではありません。 JavaScriptフレームワーク(たとえば、ReactやEmber)はこの問題に近づいていますが、質問する価値はあります。アプローチ自体を根本的に変更することは可能ですか? おそらく、これらのフレームワークのいずれかとペアになっている言語があり、そのような困難に対処する方法を教えてくれるでしょう。



もちろん、あらゆる種類の問題を解決するのに適した万能ツールはありません。 ただし、Clojureをクライアントとサーバーの相互作用の「バリケードの両側」で使用できるという事実は、間違いなく利点です。



予想ゲーム



レーンは偉大な​​ホッケー選手のウェイン・グレツキーも引用しています。



「どうすればいいの? 「私はいつもパックが次の瞬間にいる場所にいるようにしています。彼女が既にいた場所ではありません。」


Clojureを使用すると、特定の種類のアプリケーションを作成するプロセスのギャップを埋めることができます。 大量の情報の高速処理を必要とするもの。 マルチコアプロセッサの時代は長い間始まっていますが、ほとんどの従来のプログラミング言語はまだそのようなアーキテクチャに適応していないと、レーンは確信しています。 関数型プログラミングは、ソフトウェアの作成時にこの問題を解決できます。 Clojureには、プログラマが大量のデータを効果的に使用できるようにするために必要なすべてのツールがあります。 実際、データをリアルタイムで合理化および変換できます。



あまりイノベーションなし



技術の世界では、物事が非常に高度で新しいため、それらの利点が明らかではない場合があります-少なくとも将来的には重要である可能性があります-しかし、アプリケーションには大きなリスクが伴います。 このような技術を指定するために、特別な用語「ブリードエッジ」を考案しました。 彼らと働くことは、新しいものすべてを愛する人にとってのみ快適です。



Clojureは、安定性が問題となっている最先端の技術に起因するものではありません。 言語のリリースは5年以上前に行われ、新しいツールは開発者コミュニティで非常にフレンドリーなレビューを受けました。 したがって、先駆者のリスクにさらされることを恐れることなく、彼をよりよく知る時間です、とレーンは言います。



Clojureの基盤は有名なテクノロジーです。たとえば、同じJVMが15年以上にわたって取り組んでいます。 したがって、Clojureを使用して、現在存在するすべての高品質Javaライブラリを使用できます。



好奇心は進歩の原動力です



まあ、Clojureを学ぶための最後の議論は、好奇心と何か新しいことを学びたいという願望です。 常に最前線に立ち、市場で最高のテクノロジーを所有し、処理できるようにしたいという要望があります。 Clojureはこれらの目的に最適です。 新しいタスクを設定することは常に興味深いです。 そして、それらの解決策を見つけることは比類のない喜びです。



現在、Laterでは、Clojureを使用して機器管理チームを実行しています。 タスクの特異性は、コマンドの実行の同時性と柔軟な制限の要件にあります。 一方では、1つのデバイスをコマンドで「満たす」ことはできませんが、一方で、すべてのコマンドを異なる機器で同時に実行できるため、すべてのコマンドを順番に実行するのは非効率的です。 このタスクはcore.asyncライブラリで簡単に解決できます。core.asyncライブラリは、Go言語でよく知られているGoブロックとチャネルのサポートを追加します。



同時に、Clojureは汎用言語であり、見つけるのは難しくありません。 JVMに基づいているため、すでに多くのライブラリが選択されているため、使用する際にすべてを書き直す必要はなく、エントリのしきい値が大幅に削減されます。



たとえLispを気に入らなくても、言語に組み込まれている概念に慣れておく必要があります。それらの多くは、プログラミングを新鮮に見させてくれます。



All Articles