web-dev-qa-db-ja.com

JavaScript(Node.js)に対するDart言語の利点は何ですか

彼らが解決しようとしている問題の観点から、 Dart のポイントはわかりません。

JavaScriptの短所が原因で作成されたと読みましたが、短所はありませんでした。

Node.jsを学ぶのではなく、Dartを学ぶことの利点を誰かが説明できますか?

49
Phil Hannent

技術概要 違いを非常によく要約しているようです:

  • クラス:JavaScriptオブジェクト指向であり、はクラスを提供しません少なくとも最新の化身では)、それは実際にはプロトタイプベースの言語であり、クラスベースの言語ではありません。それは本質的に悪いではありませんが、ほとんどの主要なOO言語とは異なり、学習が難しくなります。ほとんどの人。

  • (オプション)静的型付け:プレーンJavaScriptでは静的型付け(「コンパイラーによるチェック」など)を行うことはできません。長所(および短所)はよく知られており、広く議論されています。

  • ライブラリの言語サポート:「この前にそのファイルをロードする」は、ライブラリを実装する非常に原始的な方法であり、ほとんどの現代言語は何らかの方法でライブラリを明示的にサポートしています。

そのページではツールについても触れていますが、それは言語間の本質的な違いではありません。確かに、静的にコンパイルされ型付けされた言語は、優れたツールを作成するのに簡単ですが、これはプログラミングでは解決できない根本的な違いではありません。

41
Joachim Sauer

主な問題は、大規模なマルチ開発者アプリケーションの作成の問題を解決することだと思います。

Javascriptでは、完全に有効なコードを書くことができます。

function x(y) {
 return y*y;      
}

document.write(x(3,4,5));

そして、これは正常に実行されますが、明らかにエラーです。

ここで、数千行のコードのコードベースで、数人の開発者と数か月による関数定義と関数呼び出しを分離します。

元の関数x(y)は元々関数x(y、z、a)であった可能性がありますが、その後、時間の経過とともにリファクタリングされました。これは、JavaScriptが失敗する場所であり、これがDartです。解決に役立ちます。

編集(2013年5月)上記の答えは今でも当てはまると思いますが、パフォーマンスストーリーもかなり説得力があると思います。 LarsBakとKasperLundの Google I/Oからの話 いくつかの証拠を提供します。

64
Chris Buckett