動的言語-どちらを選択すればよいですか?
-
10-07-2019 - |
質問
動的言語は増加の一途をたどっています。 Ruby、Groovy、Jython、Scala(静的ですが、動的言語のルックアンドフィールがあります)など。 私の経歴はJava SEおよびEEプログラミングにあります。将来に備えて、これらの動的言語の1つに知識を広げて準備を整えたいと思います。
しかし、どの動的言語を学習に集中すべきか、そしてその理由は何ですか?これらのうち、近い将来に優先される言語はどれですか?
解決
RubyまたはPython(およびScalaの程度は低い)を学習すると、非常に移行可能なスキルが得られます-Javaバージョン、ネイティブバージョン、または.NETバージョン(IronRuby / IronPython)を使用できます。 Groovyは優れていますが、JVM固有です。
「将来に備えて」特定のシナリオを想定していない限り、注意が必要です。どんなことをやりたいですか?動的言語で便利に実装できるプロジェクトはありますか?それらのいくつかを試して、それらがどのように異なっているかの感覚を得るのに十分小さいですか?
他のヒント
Scalaは動的言語ではありません。型推論は、型付けされていないという意味ではありません。ただし、OOPと関数型プログラミングがうまく組み合わされた非常に優れた言語です。唯一の問題は、途中で遭遇するいくつかの落とし穴です。
すでに経験豊富なJavaプログラマーであるため、スキルセットにうまく適合します。さて、RubyとPythonの両方が素晴らしい言語であるすべての方法で動的に進みたい場合。両方の言語に需要があります。
Clojureを個人的にお勧めします。 Clojureは、私が今まで見たどの言語よりも速く人気を博している素晴らしい新しい言語です。 Clojureは、JVMに実装された強力でシンプルな高速Lispです。もちろん、Scalaと同様に、すべてのJavaライブラリにアクセスできます。これについてはすでに書かれており、バージョン1.0に成熟しており、開発中の3つのIDEプラグインがあり、3つすべてが非常に便利です。
私はScalaを見てみます。なぜ?
- JVM言語なので、現在のJavaスキルを活用できます
- 現在、多くのツール/ IDEサポートがあります(たとえば、IntellijがScalaプロジェクトを処理します)
- それには機能の側面があります。関数型言語は、現在多くの注目を集めているようです。将来的に学ぶ価値のあるパラダイムだと思います
(完全に主観的な)私の見解では、Scalaは1年または2年前にGroovyが得た多くの注目を集めているようです。ここで異議を唱えるつもりはありませんし、それがより良い言語になることを示唆しているわけではありませんが、それは新しいJVM言語のようです de jour 。
余談ですが、一部の動的属性は、Microsoftの F#です。 。私は現在これを見ています(上記のポイント1と2についての私のアドバイスを無視します!)。 .Net上に構築されたオブジェクトを備えた関数型言語であり、現在多くの注目を集めています。
ゲーム業界では、Luaは、AdobeベースのデザイナーであればLuaも優れています。組み込みプログラマーであればLuaは実質的に唯一の軽量ソリューションですが、Web開発と一般的なツールを検討している場合はPythonのスクリプトはより実用的です
Groovyは、広範なJavaの背景からの比較的簡単なジャンプであることがわかりました。これは、Javaのより便利なバージョンのようなものです。そのようなことをする必要がある場合、既存のJavaコードとも非常にうまく統合されます。
Pythonをお勧めします。巨大なコミュニティがあり、成熟した実装があります(いくつかの有望な、まだそれほど成熟していないものもあります)。 Perlは、おそらく「直感的でない」ために、新しい言語に比べて多くの牽引力を失いました。 (いいえ、それを始めさせないでください。)
Pythonでプロジェクトを1つまたは2つ行ったら、他の何かに進んで、より広い視野を獲得してください。 2つの異なる動的言語で重要なことをいくつかやったことがあれば、他の言語を同化しても問題はありません。
JScriptは非常に便利で、確かに動的言語です...
あなたの背景を念頭に置いて、セマンティクスがあなたが知っているものに似ている言語をお勧めします。したがって、Scala、Fan、Groovyのような言語が出発点として適切です。この方法であなたのターンアラウンドタイムが短縮され、多言語プログラマーになれるという事実が得られます。
iはGroovy(およびGrails)に+1を投票します。 JavaスタイルまたはGroovyを使用して入力できます(両方を混在させることもできますが、心配する必要はありません)。また、Javaライブラリを使用することもできます。
原則として、動的に型付けされた言語は避けてください。コンパイル時間のチェックが失われ、強力で静的な型指定の自己文書化の性質は、ソースコードに型情報を入力する必要性が十分あります。コードを書くときに余分に入力する必要がある作業が多すぎる場合は、型推論を備えた言語(Scala、Haskell)が興味深いかもしれません。
型情報を持っていると、コードがはるかに読みやすくなり、読みやすさがコーディングの第1の基準になります。人がコードを読むのは高価であり、読者による明確で正確な理解を妨げるものは何でも悪いことです。 OO言語では、さらに新しいタイプを作成しているため、さらに悪化します。慣れ親しんだ読者は、受け渡されたり変更されたりしている型を知らないので、だまされます。たとえば、Groovyでは、以下は正当な def accountHistoryReport(in、out)
です。それを読んで、 in
と out
が何であるかわかりません。そのように見える20種類のレポートメソッドを見ている場合、殺人行為を完全にすばやく実行できます。 >
非静的型付けが必要だと本当に考えているなら、Clojureのような言語は良い妥協案です。 Lispライクな言語は、主要な抽象概念の小さなセットと、各抽象概念の膨大な能力に基づいて構築されています。 Clojureでは、オブジェクトの属性を持つマップ(ハッシュ)を作成します。それは少し還元主義者ですが、名前のないクラスの実装のためにコードベース全体を調べる必要はありません。
私の経験則では、スクリプトを動的言語で、システムをコンパイル済みの静的に型付けされた言語で記述します。