ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript: 世界で最も誤解されている言語

JavaScript: 世界で最も誤解されている言語

little bottle
little bottle転載
2019-04-10 14:45:032871ブラウズ

Mocha、LiveScript、JScript、ECMAScript とも呼ばれる JavaScript は、世界で最も人気のあるプログラミング言語の 1 つです。事実上、世界中の誰もが少なくとも 1 つの JavaScript インタプリタを自分のコンピュータにインストールしており、広く使用されています。 JavaScript がこれほど人気が​​ある理由は、JavaScript が World Wide Web 上でスクリプト言語として果たす役割のためです。

名前

接頭辞 Java のヒントにより、人々は常に JavaScript を Java と関連付け、JavaScript が Java のサブセットであるか、JavaScript であると考えます。 Java よりも機能が劣るバージョン。 JavaScript という名前は混乱を招くことを意図しているようで、この混乱がその後の誤解につながります。 JavaScript は Java として解釈されません。Java は Java です。 JavaScript は別のプログラミング言語です。

Java が C に似ているのと同様、JavaScript の構文も Java に似ています。ただし、Java が C のサブセットであるのと同様に、JavaScript は Java のサブセットではありません。アプリケーション内での JavaScript のパフォーマンスは、Java (Oak) が当初意図していたパフォーマンスよりも優れています。

JavaScript は、Java の発祥の地である Sun Microsystems ではなく、Netscape で開発されました。元々は LiveScript と呼ばれていましたが、その名前で人々があまり混乱することはありませんでした。接尾辞

Script のヒントは、JavaScript が本当の「プログラミング言語」ではないことを示しています。スクリプト言語としては、プログラミング言語との間にはまだギャップがあります。しかし、これはまさに専門的な問題です。 C 言語と比較すると、JavaScript はより豊かな表現力とダイナミクスと引き換えにパフォーマンスを犠牲にします。

C

JavaScript は、中かっこや巨大な for ステートメントなどの C に似た構文により、通常の手続き型言語のように見えます。 JavaScript は C や Java よりも Lisp や Scheme などの関数型言語との共通点が多いため、これは誤解を招きます。リストの代わりに配列を使用し、プロパティ リストの代わりにオブジェクトを使用します。関数は最初のタイプであり、関数はクロージャを持つことができます。匿名関数を使用するために、これらすべてのかっこのバランスを取る必要はありません。

言語入力

JavaScript はもともと Netscape Navigator 上で実行するように設計されました。その成功により、すべての Web ブラウザで事実上の標準になりました。その結果、言語タイプのステレオタイプ化が生じます。 JavaScript はプログラミング言語のジョージ・リーブスであると言えます。 JavaScript は、Web ページと関係のない多くのアプリケーションにも適しています。

(言語設計) 目標の変更

JavaScript の最初のバージョンは非常に弱かったです。例外処理、組み込み関数、継承が欠けています。現在の形式では、完全なオブジェクト指向プログラミング言語です。しかし、この言語に対する議論の多くは、その未熟な形式に基づいています。
言語の管理を担当する ECMA 委員会は拡張機能を開発しており、これは善意によるものですが、バージョンがますます増えているという、より大きな問題も悪化させています。そしてこれがさらなる混乱を引き起こしました。

設計エラー

完璧なプログラミング言語はありません。 JavaScript には、加算を表すオーバーロードや型変換による文字列連結など、独自の設計エラーもあるため、エラーが発生しやすい with ステートメントも避ける必要があります。予約語ポリシーが厳しすぎます。正規表現の表記法と同様に、セミコロンの埋め込みも大きな間違いです。これらのエラーはプログラミング エラーにつながる可能性があり、言語全体の設計に疑問を投げかけます。幸いなことに、これらの問題の多くは、非常に優れた lint プログラムで軽減できます。

この言語の全体的な設計は非常に健全です。驚くべきことに、ECMAScript 委員会はこれらのエラーを修正することに関心がないようです。おそらく、彼らは新しい言語を作成することにもっと興味があるのでしょう。 (注:これは作者の冗談であるはずです)。

貧弱な実装

JavaScript の初期の実装にはエラーがたくさんありました。これは言語にも反映されます。さらに悪いことに、これらの実装はさらにバグの多い Web ブラウザに埋め込まれていました。

悪い参考書

JavaScriptに関するほぼすべての本はかなりひどいです。間違い、不適切な例、役に立たない練習問題が満載です。この言語の重要な機能は十分に説明されていないか、完全に無視されています。私は JavaScript に関する多くの本を改訂してきましたが、私がお勧めするのは 1 冊だけです。『The Definitive Guide to JavaScript (Fifth Edition)』 - 著者: David Flanagan。 (著者注: 良い本を書いたら、無料の本を送ってください。)

無資格標準

JavaScript の公式仕様は ECMA によって公開されています。この公式仕様の品質はかなり低いです。そして、読んで理解するのが難しい。著者は標準のドキュメントを使用して言語の理解を向上させることができないため、これが悪質な書籍の問題の一因となっています。 ECMA と TC39 委員会は、これに非常に当惑し、動揺しているはずです。

アマチュア

JavaScript を使用する人の多くはプログラマーではありません。彼らには、良いプログラムを書くための専門性と訓練が欠けています。いずれにせよ、JavaScript は表現力が非常に豊かなので、JavaScript を使用して多くの意味のあることを行うことができます。これにより、JavaScript は完全にアマチュア向けに設計された言語であり、プロのプログラミングには適さないという評判が JavaScript に与えられました。実際にはそうではありません。

#オブジェクト指向

JavaScript はオブジェクト指向ですか?これにはオブジェクトがあり、そのオブジェクトにはデータとデータを処理するメソッドを含めることができます。オブジェクトには他のオブジェクトを含めることができます。これにはクラスはありませんが、クラス変数やメソッドのコンテナとして機能するなど、クラスのような操作を実行できるコンストラクターがあります。クラス指向の継承はありませんが、プロトタイプ指向の継承はあります。

オブジェクト システムを作成する主な方法は、継承による方法と集約による方法の 2 つです。 JavaScript には両方のメソッドがありますが、その動的な性質により、集約に基づいてさらに優れたものになります。

JavaScript は情報の隠蔽をサポート (提供) しないため、真のオブジェクト指向ではないと主張する人もいます。つまり、オブジェクトはプライベート変数やメソッドを持つことができません。すべてのメンバーはパブリックです。

しかし、JavaScript のオブジェクトがプライベート変数やプライベート メソッドを持つことができるという証拠があります。 (注: 元の記事では、著者がここにオブジェクトのプライベート変数とプライベート メソッドに関するドキュメントへのリンクを示しています) もちろん、JavaScript は世界で最も誤解されているプログラミング言語であるため、これを理解している人はほとんどいません。 (注: 著者はここで気楽な嘲笑の方法を使っています)。

JavaScript は継承をサポートしていないため、真のオブジェクト指向ではないと主張する人もいます。しかし、これは、JavaScript が従来の継承をサポートするだけでなく、他のコード再利用パターンも適用できることを証明しています。 (注: 元のテキストはまだここにリンクされています)

Copyright 2001 Douglas Crockford。著作権はWrrldwideです。

[おすすめコース:

JavaScript ビデオ チュートリアル ]

以上がJavaScript: 世界で最も誤解されている言語の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。