- 移植性: 少なくとも Linux と Windows は期待しています。携帯電話についてはどうですか?そこで実行することに成功した人はいますか?
はい。Android の Scala についてはかなりの動きがあります。J2ME に関しては、その点で何かが見えましたが、それほど多くはありませんでした。ソース コード リポジトリには、J2ME に関連するコードがいくつかあります。それがどれほど実行可能かはわかりませんが、それに対する需要はあまりないように見えます。
また、必要なターゲット プラットフォームについて Scala-Lang にプールがある/あったことにも言及します。J2ME はその 1 つであり、トーテム ポールの非常に低いものでした。
- C++ の互換性: C++ コードと Scala を混在させることはできますか? (JNI?)
また、C++ と Java を混在させることもできます。そのような経験がない場合は、Java リソースを読むだけでかまいません。Java リソースに含まれるものは、何も変更せずに Scala に適用できるからです (Scala 構文は別として)。
- プログラミング パラダイム: 現時点で FP に切り替えることに不安を感じています。最初にオブジェクト指向とプロシージャルをいくつかの FP で使用し、学習に応じてプロポーションを変更できますか?
絶対そうです。Scala は、関数型のスタイルでプログラミングする必要がないことを確認するために最善を尽くしています。実際のところ、これは関数型の人々からの Scala に対する主な批判です。プログラマーに関数型スタイルで書くことを強制しない限り、言語を関数型と見なさない人もいます。
とにかく、自分の思い通りに物事を進めることができます。ただし、機能的であることに気付かずに、機能的な習慣を習得することは間違いありません。
おそらく、Matrix クラスの作成に関する私自身のブログのMatricesシリーズを参照してください。標準的な OO コードのように見えますが、実際には非常に機能的です。
- ツール チェーンの成熟度: IDE とデバッガーの経験は? 現在Eclipseを使用していますが、問題ないようです。
IDEA (IntelliJ)、NetBeans、および Eclipse はすべて、Scala を適切にサポートしています。IDEA が最良のようであり、NetBeans/Eclipse はお互いに蛙跳びを続けていますが、NetBeans は最近の Eclipse よりも確実に安定しています。一方、Eclipse でのサポートは、今後 6 か月ほどで結果が得られる非常に有望なルートをたどっています。:-)
これらの環境向けの Scala ツールのいくつかの興味深い兆候は、開発中の Eclipse プラグインが AOP を使用して IDE 全体とよりシームレスにマージされていること、NetBeans プラグインが Scala で完全に書き直されていること、IDEA に Scala Power Pack があることです。とりわけ、Java コードから Scala コードへの変換をサポートします。
EMACS 関係者は Scala 用の広範なツールも持っており、多くの小さなエディターもそれをサポートしています。たとえば、小さなプログラムやスクリプトに対する jEdit のサポートには非常に満足しています。
また、優れた Maven サポートもあります。実際、Liftをインストールする標準的な方法は、maven をインストールしてから Lift アーキタイプを構築することです。これにより、適切な Scala バージョンが取り込まれます。scala:cc
トリガーされた再コンパイルも行うターゲットがあります。
再コンパイルといえば、Maven も、特に Ant も、再コンパイルが必要なものを特定するのに適していません。その問題から、Scala で書かれたSBT (Simple Build Tool) が生まれました。これは、Scala コンパイラ プラグインを使用してその問題を解決します。SBT は Maven と同じプロジェクト レイアウトと Maven/Ivy リポジトリを使用しますが、プロジェクトの構成は XML ではなく Scala コードで行われ、Maven/Ivy 構成ファイルもサポートされます。
- 学習速度: 私の経験を考慮して、Scala で実行可能なレベルに到達できる速さはどれくらいだと思いますか?
とても早い。純粋な OO 言語として、Scala はすでにいくつかの優れた機能を導入しています。これは、C++ には存在するが Java には存在しない機能に匹敵しますが、動作は異なります。その点で、そのような機能が何のためにあるのかを理解し、それらを C++ のものに関連付けると、Java プログラマーよりもはるかに先を行くことになります。
- 配備: Scala プログラムを正確にどのように配備しますか? それはjarですか、それは実行可能ファイルですか?
ジャバと同じこと。scala コンパイラーがクラス・ファイルを生成するため、JAR、WAR、またはその他の Java ターゲットをデプロイできます。実際、Java の jar を使用してクラス ファイルから Scala の JAR ファイルを生成し、Lift の Maven ターゲットは WAR ファイルの構築をサポートします。
ただし、スクリプト ファイルには別の方法があります。「scala」を呼び出して、シェル スクリプトの Perl と同様に、Scala ソース コードを直接実行できます。Windowsでも実行できます。ただし、実行を高速化するためにコンパイルデーモンを使用しても、起動時間は十分に遅いため、負荷の高いスクリプト環境で Scala を効果的に使用するには、Nailgunのようなものが必要です。
Scala の欠点については、このスタック オーバーフローの質問にある私の回答 (およびその他の回答) をご覧ください。