世界で最も過小評価されている言語

Javascriptロゴ

Mocha、LiveScript、JScript、ECMAScriptとも呼ばれるJavaScriptは、最も人気のあるプログラミング言語の1つです。 実際、すべてのパソコンには独自のインタープリターがあり、それを積極的に使用しています。 JavaScriptの人気は、Webの主要なスクリプト言語であることによるものです。



その人気にもかかわらず、JavaScriptが多くの機能を備えた非常に優れたオブジェクト指向言語であることを知っている人はほとんどいません。 多くの人がこれを理解しないのはなぜですか? この言語はなぜ誤解されているのですか?







役職



Java-プレフィックスは、Javaのサブセットまたは簡易バージョンであることを示しています。 どうやら、この名前は混乱を引き起こすために特別に選ばれたものであり、誤解が生じています。 JavaScriptはJavaによって解釈されません。 JavaはJavaとして解釈されます。 JavaScriptは別の言語です。



JavaScriptシンタックスは、JavaがCにあるのと同じようにJavaシンタックスに似ています。また、JavaがCのサブセットであるのと同じように、Javaのサブセットではありません。



JavaScriptは、Javaの作成者であるSun Microsystemsによって作成されたものではありません。 JavaScriptはNetscapeによって開発されました。 もともとLiveScriptと呼ばれていましたが、名前はそれほど混乱していませんでした。



接尾辞「-Script」は、これが実際のプログラミングではなく、スクリプト言語がプログラミング言語よりもはるかに悪いことを意味します。 しかし、実際にはすべては専門に依存しています。 Cと比較して、JavaScriptは表現力とダイナミズムの速度を犠牲にします。



Cの靴の中のLisp



JavaScriptには、中括弧やかさばる式を含むCに似た構文があり、通常の手続き型言語のように見えます。 JavaScriptは、実際には、CやJavaよりも、LispやSchemeなどの関数型プログラミング言語と共通しています。 リストの代わりに配列があり、プロパティのリストの代わりにオブジェクトがあります。 機能が基盤です。 回路があります。 角括弧を使用することなく、 ラムダ表記を使用できます。



タイパビリティ



JavaScriptは、Netscape Navigatorで動作するように設計されました。 その成功により、すべてのブラウザの不可欠な部分となっています。 その結果、タイピングが無料になりました。 JavaScriptは、プログラミング言語の中でもGeorge Reevesです。 JavaScriptは、膨大な数の非Web指向のアプリケーションに適しています。



移動ターゲット



JavaScriptの最初のバージョンはかなり脆弱でした。 例外処理、ネストされた関数、および継承がありませんでした。 今では完全にオブジェクト指向の言語です。 しかし、それに関する多くの見解は、最初のバージョンに基づいています。



善意にもかかわらず、言語の拡張機能を開発しているECMA委員会は、最大の問題の1つを作成しました。バージョンが多すぎます。 これにより混乱が生じます。



設計エラー



完璧なプログラミング言語はありません。 JavaScriptには、+演算子のオーバーロードなどの設計エラーがあります。これは、型変換との加算および連結を意味し、エラーの頻繁な原因はwithステートメントです。 予約語のポリシーは厳しすぎます。 セミコロンの使用は大きな間違いであり、正規表現コードへの直接の書き込みも同様でした。 これらのエラーはプログラミングエラーにつながり、言語の設計全体に疑問を投げかけました。 幸いなことに、これらの問題のほとんどは、優れたプログラミングスタイルで回避できます。



設計上の問題は明らかです。 驚くべきことに、ECMAScript委員会はそれを修正することに関心を表明していません。 おそらく彼らは新しい言語を作りたいと思うでしょう。



不十分な実装



最初のJavaScript実装はかなりバグが多かった。 これは言語にとって悪いことです。 さらに、非常にバグの多いブラウザに埋め込まれていました。



悪い本



正直なところ、JavaScriptの本はすべてひどいものです。 エラー、悪い例、悪い指示が含まれています。 重要な言語機能の説明は、たとえあったとしても不十分です。 JavaScriptに関する本を何十冊も読んだことがありますが、1つだけお勧めします。JavaScript: David Flanaganによって書かれたThe Definitive Guide (第5版)。



ダブルスタンダード



公式言語仕様はECMAによって作成されています。 そして彼女はひどい品質です。 読みにくく、さらに理解しにくい。 貧弱な文学の問題の原因は、著者が言語をよりよく理解するために標準的な文書を使用できないことです。 委員会ECMAとTC39は干渉するだけです。



プログラマー



JavaScriptを書く人のほとんどはプログラマーではありません。 彼らは良いプログラムを書くために必要な知識と忍耐を持っていません。 しかし、いずれにせよ、JavaScriptには非常に強力な表現力があり、 何か役に立つことができます。 これによりJavaScriptは、プロのプログラミングに適していない初心者に評判が高くなっています。 そして、これはまったくそうではありません。



オブジェクト指向言語



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



オブジェクトシステムを構築する2つの主な方法は、継承(誰かになる)と集約(何かを持つ)です。 JavaScriptはこれをすべて実行できますが、その動的な性質により優れた集約が可能になります。



JavaScriptがオブジェクト指向言語ではないという議論の1つは、JavaScriptはデータを隠すことができないということです。 そのため、オブジェクトにプライベート変数やメソッドを含めることはできません。オブジェクトのすべての部分が開いています。



しかし、JavaScriptのオブジェクトはプライベート変数とメソッドを持つことができます 。 もちろん、JavaScriptは世界で最も曖昧なプログラミング言語であるため、これを理解している人はごく少数です。



もう1つの議論は、JavaScriptは継承をサポートしていないということです。 実際、JavaScriptは従来の継承だけでなく、 コードを再利用する他の方法もサポートしています



Post Scriptum: はい、この記事はかなり古くて古いものですが、特にJavaScript 2の開発に関連して読む価値があります

更新: 膨大な数の修正をしてくれたOutspectorに感謝します



All Articles