組織をJavaからScalaに移行することをどのように奨励しますか?[閉まっている]


15

誰かの組織がJavaからScalaへの移行を始めましたか?はいの場合、どのようにそれを行いますか?同僚に同じことを勧めるにはどうすればよいですか?


そうする権限がある場合は、タグにscalaと移行を追加してください
nanda

9
おそらくあなたはその理由を説明する必要があります
-TheLQ

「十分な」バス要素を確保するには、十分な社内知識が必要です。

回答:


15

おそらく最も簡単な方法は、最初にテストのみにScalaを使用することです。この場合、上司に伝える必要さえないかもしれません:-)彼が尋ねた場合、「それは単なる私のプライベートテストケースであり、Scalaを使用する方がはるかに簡単で高速です」と伝えてください。あなた(およびあなたの組織)がScalaで十分な経験を積んだら、「実際の」コードに使用することができます。


これらは、C#からF#への移行に関する私の考えでした。
-GregC

7

企業の観点から見ると、Scalaに移行することで得られる明確な利点がない場合は、Javaにとどまる方が良いでしょう。Javaプログラマーを雇って、アプリケーションを構築および保守する方が簡単です。Scalaですべてを実装した後、そのまま放置することもできます:-)違反なし:-)


1
プレーンジャワはここにあります。Scalaはそうかもしれないし、そうでないかもしれない。伝えるには早すぎます。

「Java開発者を雇う方が簡単です」はおそらく真実です。しかし、「雇用しやすい」人を雇うことは、あなたのプロジェクトを完了する最も安い方法ではないかもしれません。
ケビンクライン

7

上司に次のような経験をしてもらいます。

  1. 現在、ほとんどのことをScalaで行っています。(私はScalaがしばらく前にホイールの発明以来最高のものだと思うことを言及する必要があります。:-D)

    私の謙虚な意見では、それは人々が(より多くの)オブジェクト指向のアプローチと(より多くの)機能的アプローチを不必要に分けることなく、タスクへの最良のアプローチを選択できる唯一の言語です。

    以前にこのようなことを主張した言語を見ると、基本的に2つの競合する言語設計キャンプが見えます:

    • 関数型プログラミングが最近いくつかの牽引力を得て、「その機能的なことを本当に理解していないが、私たちの言語に派手な構文糖を追加して、それが機能的であると主張できるようにしよう」と考えたオブジェクト指向側からのものも!」 (例:Java、Python)

    • それから、機能面の人たちは、「まあ、私たちの機能的アプローチは他のものよりはるかに優れており、オブジェクト指向のナンセンスは迷惑ですが、言語にいくつかの追加のキーワードを入れて、言語を学界から逃れさせましょう」 !」(例:F#、OCaml)

    Scalaのデザイナーは、両側から来る多くのアプローチを統合し、適切に設計された言語を作成しました。これは、私の謙虚な意見では、プログラミング言語設計に「フランケンシュタイン」アプローチを採用することにした他の言語との最大の違いです。

  2. Liftでまだ小さなことをしていて、RailsとDjangoで表面的な経験しかしていないので、ほとんどの場合、Liftの何かが期待どおりに機能しない理由を疑問に思ったことを認めなければなりません。これは、私の期待が欠陥があり、Liftのアプローチが優れています。

    Liftは確かに「Scalaの簡単な紹介」ではありませんが、Liftの仕組みを学ぶことは、Scalaを学ぶ前と同じくらいやりがいがあります。

    ロジックなしで「クリーン」なビューを表示する機能は、同じことを主張しているがそれに欠けている他のフレームワークの大きな改善です。ScalaのXMLリテラルサポートにより、応答の整形式を検証できます。コンパイラは、コンパイル時に整形式のXMLのみをクライアントに送信することを証明します。

  3. Liftは実行可能なテクノロジーであり、現時点では、非常に多くのコードを記述せずに「実際の」デスクトップアプリケーションのように見え、感じ、振る舞うWebアプリケーションを構築する場合の唯一の現実的なアプローチです。

[ ソース ]


3

過去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でテストを作成することから始めます。この方法により、言語に精通し、自信を深めることができ、すぐに実動サーバーにランタイムを追加することに関する不安を克服する必要がなくなります。

  • 新しい技術を試す許可を求めないでください。あなたがする必要がある場合は許しを求める方が良い:-)


+1!「新しい技術を試す許可を求めないでください。必要なら許しを求める方が良いです:-)」
ジョルジオ

2

この質問は別の質問にあります。それは、どのような種類またはプロジェクトのScalaへの移行が付加価値を提供するのですか?私は1日の仕事でJavaをやっていますが、Scalaを「怒り」で使える日を夢見ています。

私自身の質問に答えるカップル:

  • アクターベースの同時実行が大きなメリットをもたらす問題(Akka)

  • データがCOMET(Lift)を介してプッシュされるWebアプリケーション

他の洞察またはより良いまだ経験ですか?


1

私はScalaでJavaアプリのテストを書いていますが、開始するのに良い場所であることに同意します。私のテストカバレッジは、より速く、簡単に記述できるためです(また、Scalaを使用できるようになったので、喜んでテストの記述に集中します)。

また、Scalaでプロトタイプと使い捨てPOCをほぼ独占的に始めました。マネージャーとスーパーバイザーに、これらの1回限りのScalaを使用したことをできるだけ意識させ、Scalaのおかげで何かをすばやく実行できるようにしたことを強調します。ホリデーパーティの白象ゲームを追跡するためのWebアプリが必要です(ScalatraとMongoDBで1.5時間、私の部門全体がこのアプリを見て、それについて尋ねています)。率直に言って、言語がどれほど表現力豊かであるか、または並行性モデルがこれほど優れていることをマネージャーに説明することは決してありません。しかし、それらを見せれば、より早くより多くのことを成し遂げることができます。

しかし、最大の部分は、開発者にScalaに興奮させることだと思います。私たちは皆、積極的に新しいテクノロジーに追いついていない開発者と仕事をしていると確信していますし、時には新しいことをすることに興奮するのが難しい場合もあります(なぜ、私は本当に理解していません)。これらの人々にScalaのいくつかの利点を示す(REPLを試す)ことが重要です。十分な開発者が生産性の同じ利点について話題になっている場合、Scalaが組織で公式に採用される可能性がはるかに高くなります。

言葉を広め、草の根の努力を広めることが2011年の私の主要な目標です。Scalaを大部分の仕事に使う日が待ち遠しいので、それがどのように展開するかを見ていきましょう。


1

なぜどちらを選ぶのか疑問に思っていますか?Javaをドアから外してScalaに行くことに決めたのはなぜですか?

仕事に最適なツールなどはありません。ある言語の専門知識を完全に排除し、別の言語に置き換える理由はありません。

1つの言語または環境(tbh)に重点を置いている会社では(もう)働きたくありません。多くのことを知り、仕事に適したツールを選択する方が良いでしょう。

その次に、組織をScalaに完全に切り替えることは不可能ではないにしても困難です。代わりに、オールオアナッシングのアプローチではなく、Scalaでいくつかのプロジェクト(またはプロジェクトの一部)を完成させようとします。たとえば、JavaコードをSpecs2でテストすることを選択できます。Specs2は、単純で古いJUnitと比べて非常に優れた構文を持ち、複雑で混乱を招くハードなScalaコードやパラダイムでもありません。 。


0

良い方法は、同じプログラムの2つのバージョンをデモンストレーションすることです。そうすることで、同僚に(実際には)Scalaの表現力を示すことができます。他の問題(XML、同時実行性など)に対して同じことを行うと、特定の問題に取り組むためにJavaの代わりにScalaを使用する利点を示すことができます。

もちろん、1日で移行が行われるとは思わないでください。過小評価する可能性のある多くの問題があります:学習曲線、既存のコードベースなど。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.