プログラミング言語の評価基準
プログラミング言語を記述するために私たちの世界の概念を表現するためにシンプルかつ十分な金持ちを提供する必要があります。
そして、十分に高いの実装の効率化
世間話の十分な、どのように我々は、これら二つのgoliathsを比較して行くのですか?実際にはこれは、角度は、フレームワークであるとして、真の比較も、ライブラリに反応することはできません。しかし、我々は我々のプロジェクトのための技術を検討する際に見て重要な側面のいくつかを見てされます。
- 抽象 - 私たちは理解している方法で、複雑な物事を表現することはできますか?
- パフォーマンス - それは速い応答時間で、十分に拡張していますか?私のブラウザで?私のコードでは?
- 統合 - 私はすでに精通していたライブラリ/フレームワークを使用することはできますか?私は問題がある場合、私は助けを得ることができますか?
- シンプル - 学習曲線とは何ですか?それが関係づけ建築の原則に従っていますか?どのようにすぐに新しい開発者が生産性になることができますか?
- テスト容易性 - それはテストするために簡単ですか?
- デバッグ - 問題が発生し、それが何が起こったのか理解することは簡単ですか?
- 状態管理 - それは正確かつ効率的に状態を処理していますか?
https://capgemini.github.io/react/reacting-to-change/
表現力の高いですか?それは読み書きに役立つだろう。言語を持っています:
- Fortran 90の全体の配列を付加するA = B + Cのような演算子?
- 抽象データ型(カプセル化)?
- プログラミング・イン・大型支援するためのモジュールとパッケージの構造?
- 豊富なオペレータは、APLやPerlなどの言語のように、設定されていますか?
- リッチタイプ/オブジェクト構造は、継承は、組成物および凝集を支援しますか?
- ポリモーフィズム、オーバーロードし、エイリアシング?
- 高階関数?
- パターン・マッチング?
- 内蔵の制御フロー(例えば統一、バックトラック)?
- 記号計算のための施設?
- 非同期、同時、および分散プログラミングをサポート?
評価トレードオフを理解します
あなたはすべてのものを持つことができない、それはそうです:
- 動的型、多形型システム、ファーストクラスの値として機能し、高次機能、及びクロージャの表現力は、時には、性能に影響を与えることができます。
- 自動ガベージコレクションは、プログラマの時間に数十億ドルを節約できますが、組み込み、生活に不可欠な、リアルタイムシステムでは常に良い考えではありません。
- 言語は素晴らしい、素晴らしいことと、開発者の生産性を高め、ない才能の人々がそこにない場合、それはどのようにあなたが最高のチームを雇うだろう、言語を知っているかもしれませんか?
- 意図的に恐ろしい(Brainfuck、Java2K、Malbolge、など)になるように設計されている言語は、いくつかの知的・教育的価値を持っている(と娯楽を提供します)。
https://cs.lmu.edu/~ray/notes/evaluatingprogramminglanguages/