以下では、非常に膨大なテキストから絞り込みを試みました。 意図的に挑発的な場所で、スティーブの精神で、声明。
一般的に受け入れられているのは:
- 動的言語は本質的に低速です。
- それらに対して通常の開発環境を作成することはできません。
- 動的言語の大規模な(数百万行の)プロジェクトは維持が困難です。
私たちはこれらの声明に反論しようとします。
マーケティング
歴史は、動的言語用の非常に優れた最適化コンパイラの例を知っています:Common LISP、Strongtalk(オプションの静的型付けを伴うSmalltalk拡張)、Scheme、Self。 誰もそれらを使用せず、誰にも知られていません。 アイデアがどんなに優れていても、それが実装されていても、マーケティングがなければ意味はありません。
小規模な研究者チームは、プロトタイプコンパイラの速度を10倍向上させました。 同時に、SunはHotSpot VMに10年間を費やしました。 動的言語が真剣に取り組まれた場合、 その速度がどれほど速いかは誰にもわかりません。
言語は10年ごとに変更されなくなります
慣性は大きすぎます。マーケティングに多くのお金が投資されています。 企業のLISPやHaskell、Erlangの使用を熱狂させることはできません。 世界中の何百万人ものプログラマーは、第二言語を学ぶつもりはありません。 その結果、近い将来、私たちは自分の持っているものに満足しなければなりません。 これは非常に悲しいことですが、我慢する必要があります。
開発環境
動的言語の反対者の好きな議論:
-IDEでメソッドの名前を変更することはできません!
-この機能がSmalltalk環境で最初に登場したことを考えると、問題はありません。
「しかし、彼は何かを見逃すでしょう!」
-Java IDEも間違いではありません。XML構成ファイル、SQL、リフレクション文字列などを常に確認できるとは限りません。
リファクタリングをサポートする言語を含む動的言語の開発環境は、静的に型付けされた言語よりも難しくありません。
動的言語コードは、本質的に常に動的であるとは限りません。 ほとんどの場合、静的解析が可能であり、コード実行のシミュレーションにより精度をさらに向上させることができます。
性能
プログラマは、アーキテクチャを作成するよりも精神的な労力が少なくて済むため、マイクロ最適化を行うのが好きです。
ワシントン大学を卒業後、Geoworksで働きました。 5年間、アセンブラーで書きました。 Geoworksでは、オペレーティングシステム全体、ライブラリ、ドライバー、アプリケーションを作成しました。一般に、組み立てられた8086でデスクトップオペレーティングシステム全体を作成しました。 [...]
ある程度気に入っていました。 オブジェクト指向アセンブラーがありました。 [...]コンパイラーを追い抜くことができることはわかっていました-本当にできたからです。
どうしたの? Geoworksは倒産しました。 なんで? おそらく、この会社の元従業員一人が同意していないことを言うでしょう。これを信じているのは私だけです。 アセンブラー8086で1500万行を書いたからです。世界でも最高の素晴らしいツールがありました。 しかし、ある時点で...
システム全体の仕組みを理解する必要があります。 小規模なシステムは最適化が簡単であるだけでなく、実際の最適化のみが可能です。 したがって、パフォーマンスに関するほとんどの話はナンセンスです。 主なものはシステムのサイズです。
動的言語はどのように加速できますか?
- 言語の改善:オプションの静的型付け、同時実行性のサポート。
現在人気のある動的言語には、スケーラブルなアプリケーションを作成するための通常の機能はありません。 それらのストリームは、実際のタスクでは使用しないほうがよいように機能します。 - 仮想マシンの機能強化:世代別ガベージコレクター、非同期I / O ...
- 高度なコンパイラ。
Javascript
Javascriptクライアントアプリケーションの複雑さが増すと、Javascriptクライアントアプリケーションは最速の言語の1つになります。 真剣に。
起こったことは次のとおりです。このAJAX革命により、業界はJavascriptの最適化を真剣に試み始めました。 そして、これは動的言語の最適化に関する研究の重大な進歩の推進力となりました。
動的言語の最適化は再びクールです。 これがこのレポートの主要な結論です。 ベンチャーキャピタルへの投資や研究助成金を得ることができるという意味でクールです。 Javascriptでマリオクローンを作成する人を助けるという意味でクールです。
プログラミング言語とコンパイラを知っているなら、それを試してください。 この領域には多くの作業があります。これには、だれも到達できなかったものも含まれます。
元のレポートから他に何を含めることができるかについてのコメントと提案を受け入れます。 全体を翻訳するのは素晴らしいことですが、7万人以上のキャラクター-私にとっては、これは最低でも1週間です。