回答:
おそらく最も簡単な方法は、最初にテストのみにScalaを使用することです。この場合、上司に伝える必要さえないかもしれません:-)彼が尋ねた場合、「それは単なる私のプライベートテストケースであり、Scalaを使用する方がはるかに簡単で高速です」と伝えてください。あなた(およびあなたの組織)がScalaで十分な経験を積んだら、「実際の」コードに使用することができます。
上司に次のような経験をしてもらいます。
現在、ほとんどのことをScalaで行っています。(私はScalaがしばらく前にホイールの発明以来最高のものだと思うことを言及する必要があります。:-D)
私の謙虚な意見では、それは人々が(より多くの)オブジェクト指向のアプローチと(より多くの)機能的アプローチを不必要に分けることなく、タスクへの最良のアプローチを選択できる唯一の言語です。
以前にこのようなことを主張した言語を見ると、基本的に2つの競合する言語設計キャンプが見えます:
関数型プログラミングが最近いくつかの牽引力を得て、「その機能的なことを本当に理解していないが、私たちの言語に派手な構文糖を追加して、それが機能的であると主張できるようにしよう」と考えたオブジェクト指向側からのものも!」 (例:Java、Python)
それから、機能面の人たちは、「まあ、私たちの機能的アプローチは他のものよりはるかに優れており、オブジェクト指向のナンセンスは迷惑ですが、言語にいくつかの追加のキーワードを入れて、言語を学界から逃れさせましょう」 !」(例:F#、OCaml)
Scalaのデザイナーは、両側から来る多くのアプローチを統合し、適切に設計された言語を作成しました。これは、私の謙虚な意見では、プログラミング言語設計に「フランケンシュタイン」アプローチを採用することにした他の言語との最大の違いです。
Liftでまだ小さなことをしていて、RailsとDjangoで表面的な経験しかしていないので、ほとんどの場合、Liftの何かが期待どおりに機能しない理由を疑問に思ったことを認めなければなりません。これは、私の期待が欠陥があり、Liftのアプローチが優れています。
Liftは確かに「Scalaの簡単な紹介」ではありませんが、Liftの仕組みを学ぶことは、Scalaを学ぶ前と同じくらいやりがいがあります。
ロジックなしで「クリーン」なビューを表示する機能は、同じことを主張しているがそれに欠けている他のフレームワークの大きな改善です。ScalaのXMLリテラルサポートにより、応答の整形式を検証できます。コンパイラは、コンパイル時に整形式のXMLのみをクライアントに送信することを証明します。
Liftは実行可能なテクノロジーであり、現時点では、非常に多くのコードを記述せずに「実際の」デスクトップアプリケーションのように見え、感じ、振る舞うWebアプリケーションを構築する場合の唯一の現実的なアプローチです。
[ ソース ]
過去2年間にわたって、guardian.co.ukでこの旅に沿って公正な方法で前進しました- オープンプラットフォームはScalaで構築され、コアCMS(元々Javaであった)は徐々により多くのScalaを組み込みます(すぐに移動します私たちのビルドのためにSBTにMavenします)そしてそれは素晴らしい経験でした-私たちの開発者を本当に元気づけました。
私たちの移行に関する次の2つの記事を読むことをお勧めします。また、それらをあなたの先のとがった髪の裏付けとなる証拠として使用することをお勧めします。
http://skillsmatter.com/podcast/home/how-we-moved-from-java-to-scala
http://www.infoq.com/articles/guardian_scala
いくつかの簡単なヒント:
Scalaでテストを作成することから始めます。この方法により、言語に精通し、自信を深めることができ、すぐに実動サーバーにランタイムを追加することに関する不安を克服する必要がなくなります。
新しい技術を試す許可を求めないでください。あなたがする必要がある場合は許しを求める方が良い:-)
私はScalaでJavaアプリのテストを書いていますが、開始するのに良い場所であることに同意します。私のテストカバレッジは、より速く、簡単に記述できるためです(また、Scalaを使用できるようになったので、喜んでテストの記述に集中します)。
また、Scalaでプロトタイプと使い捨てPOCをほぼ独占的に始めました。マネージャーとスーパーバイザーに、これらの1回限りのScalaを使用したことをできるだけ意識させ、Scalaのおかげで何かをすばやく実行できるようにしたことを強調します。ホリデーパーティの白象ゲームを追跡するためのWebアプリが必要です(ScalatraとMongoDBで1.5時間、私の部門全体がこのアプリを見て、それについて尋ねています)。率直に言って、言語がどれほど表現力豊かであるか、または並行性モデルがこれほど優れていることをマネージャーに説明することは決してありません。しかし、それらを見せれば、より早くより多くのことを成し遂げることができます。
しかし、最大の部分は、開発者にScalaに興奮させることだと思います。私たちは皆、積極的に新しいテクノロジーに追いついていない開発者と仕事をしていると確信していますし、時には新しいことをすることに興奮するのが難しい場合もあります(なぜ、私は本当に理解していません)。これらの人々にScalaのいくつかの利点を示す(REPLを試す)ことが重要です。十分な開発者が生産性の同じ利点について話題になっている場合、Scalaが組織で公式に採用される可能性がはるかに高くなります。
言葉を広め、草の根の努力を広めることが2011年の私の主要な目標です。Scalaを大部分の仕事に使う日が待ち遠しいので、それがどのように展開するかを見ていきましょう。
なぜどちらを選ぶのか疑問に思っていますか?Javaをドアから外してScalaに行くことに決めたのはなぜですか?
仕事に最適なツールなどはありません。ある言語の専門知識を完全に排除し、別の言語に置き換える理由はありません。
1つの言語または環境(tbh)に重点を置いている会社では(もう)働きたくありません。多くのことを知り、仕事に適したツールを選択する方が良いでしょう。
その次に、組織をScalaに完全に切り替えることは不可能ではないにしても困難です。代わりに、オールオアナッシングのアプローチではなく、Scalaでいくつかのプロジェクト(またはプロジェクトの一部)を完成させようとします。たとえば、JavaコードをSpecs2でテストすることを選択できます。Specs2は、単純で古いJUnitと比べて非常に優れた構文を持ち、複雑で混乱を招くハードなScalaコードやパラダイムでもありません。 。