要件:
AmazonコードベースはC++で書かれています。 GoogleはC++、Python、Javaを使用しています。 Stack Overflow Networkは.Netを使用しています。ウィキペディアはPHPを使用しています。 Facebookは以前PHPで動作していましたが、現在は独自の言語を公開しています。
優れたソフトウェアとはテクノロジーではなく、人々のことです。作業チームに最適なツールを選択する必要があります(Pandoraは単独のプロジェクトではないため、少なくとも2人で手助けする必要があります)。
あなたがリストした最初のものは最も重要です:「多くの異なるユーザーエクスペリエンス:ウェブサイト、モバイルなど」これは、multipleテクノロジスタック(iPhone、Android、Webなど)をサポートすることを示唆しています。そのため、十分に理解された標準を通じて相互運用が容易なものを作成する必要があります。 RESTなどのアーキテクチャテクノロジーを検討し、バックエンドストレージを処理マシン、フロントエンドWebサーバー、モバイルデバイスから分離するようにしてください。
プラットフォームを調査して、どのテクノロジーが最適であるかを確認し、後で(Webサーバーなどの)より柔軟性のあるテクノロジーを選択します。最後に、プロジェクトの規模を検討します。一部の言語では、作成とデバッグの時間を節約できますが、特に大規模プロジェクトの場合、パフォーマンスが低下します。大規模なPythonおよびRuby on Railsデプロイメントが圧倒的なパフォーマンスを発揮したことについての話です。
大規模なスケーラビリティと優れた同時実行性のために、Erlangを検討します。フォールトトレランスが主要な目標であるテレコムビジネス向けに構築された関数型言語。
Erlangのような関数型言語を使用することで、Javaで発生する可能性がある同時実行性の問題の約95%を忘れることもできます。
Guido van Rossumは Pythonの歴史について書く です。 Pythonおよびその他のプログラミング言語の背後でvan Rossumが取り組んできたのは、問題に合わせてカスタマイズされた言語を用意することでした。もちろん、十分な数の研究機関で働いていました。プログラミング言語の設計とコンパイルの経験。
ブログのほとんどを読んだ後、私は手元のタスクに戻りました。これは、10年以上前に書き始めたプログラムにいくつかの新機能を追加しています。長い間コードから離れていたので、新しいタスクに最適に取り組む方法を知るためにコードを勉強する必要がありました。コードのコアが行うことのほとんどは、Delphi Pascalの厳格さを回避して、拡張性、属性継承、および無制限の取り消しが簡単に実行できる環境を作成することです。私は、Pythonのようなプログラミング言語を自分で作成しました。後知恵では(後知恵ではすべてがより明確になります)、Pythonをコアに埋め込むか、先に進んでカスタム言語を実装するのが最善でしょう。
しかし、それはその時でした。今日、主流の言語は、あらゆる種類の高品質のライブラリとツールからの膨大な量のサポートを持っています。これは、自分の言語では非常に難しいものです。
物語は、私の提案はこの実用的な理由のためにPythonを使用することです:
私はJava=男です。Javaを選択します。
何をコーディングしますか?最も生産性の高い言語はどれですか?
Javaはすばらしい理由です。