Javascript言語シリーズの一つの歴史


久しぶりに文章を書いてまた怠け始めました.今日の天気は本当に外に出られません.スモッグがひどいです.家にいて、まじめに文章を書いてください.このように長いJSに接触して、自分で勉強したこと、理解したことを皆さんに共有したいです.この一連の文章は先端開発者のために少し助けを与えてほしいです.もし文章の中に間違いがあったら指摘してください.
まず、インターネットの変化を見てみてください.各種ブラウザと技術が現れる大体の時間です.
Javascript歴史
  • クライアントの啓蒙NombesとScript Easeは1992年にNombus社がC減量(C-minus-minus、略称Cmm)という組み込みスクリプト言語を開発しました.Cmmの目的は簡単で、マクロ操作(macro)の代わりに十分に強いスクリプト言語を作り、C(およびC++)と十分な類似性を維持しながら、開発者がすぐに習得できるようにします.このスクリプト言語はCEnviという共有ソフトに縛られています.開発者にこの言葉の威力を示すのは初めてです.Nomboasは最終的にC mmの名前をScript Easeに変えました.その理由は後ろの部分(mm)が消極的に聞こえると同時に、Cの文字が怖いからです.しかし、CMMとJavascriptは全然関係がありません.これはウェブページのシナリオ言語の啓蒙にすぎません.
  • Netscape(会社)はJavaScript Javascriptを発明しました.今最も流行っているインターネットプログラミング言語の一つとして、その機能は強くて、非常に強いウェブの先端の表現力に富んでいます.彼の出現は紆余曲折を経ています.「Netscape Navigator」になる(http://zh.wikipedia.org/wiki/%E7%BD%91%E6%99%AF%E5%AF%BC%E8%88%AA%E8%80%85 「ネットスケープ」(ブラウザの名前の後ろにネットスケープという)が登場したとき、Nombasはウェブページに埋め込むことができるCEnvi言語を開発しました.これは最初の万次元ネットワークで使用されたクライアント言語を表しています.Nomboasはその理念が万维网の重要な礎石になるとは予想していませんでした.ネットサーフィンが流行している時、人々の様々なニーズを満たすために、クライアントスクリプトを開発する需要もだんだん増えてきました.この時点で、ほとんどのインターネットユーザーはまだ20+k/sのモデムだけでネットワークに接続されています.この時、ウェブページはどんどん大きくなり、複雑になりました.ネットワーク帯域幅の理由により、ユーザの待ち時間が長くなりますが、最も苦痛なことは、簡単なフォームの有効性を検証するために、サーバと何度も往復します.ユーザーの体験を大幅に低減しました.想像してください.ユーザーはフォームを記入して、提出ボタンをクリックして、30秒の処理を待っています.見たのは必要なフィールドを記入するのを忘れたということです.技術革新の最前線に立っていたネットスケープは、クライアントのスクリプト言語を開発して、簡単な処理問題を解決することを真剣に考え始めました.当時はNetscapeに勤務していたBrendan Eichが、1995年に発売されるネットスケープ2.0のLiveScriptというスクリプト言語を開発するために着手しました.当時の目的はブラウザとサーバの端でそれを使用することでした.Netscapeと[Sun](http://zh.wikipedia.org/wiki/Sun%E5%85%AC%E5%8F%B8 'sun's)(Javaに接触した友達はこの会社になじみがないはずです.Javaはこの会社の起源ですが、Oracleに買収されました.)LiveScriptを直ちに完成します.ネットスケープ2.0が正式に発表される前に、NetscapeはJavaScriptと改名しました.Javaというインターネット流行語を利用するためです.Netscapeの賭けは最終的に報われます.JavaScriptはそれからインターネットに不可欠な一部になりました.
  • JavaScriptの最初の基本設計は上記でクライアントでデータ検証を簡単に処理するための問題を解決するために、Brendan EicはLiveScriptというスクリプト言語の設計に着手しました.JavaScript 1.0の設計目標は、「ウェブページを動かす」ということです.最初の要求は三つの方面を含みます.
  • は、ウェブページの要素をプログラムすることができるので、forms、linksのようなオブジェクトは、ウェブページのロードが終了したらグローバルメンバーに初期化され、その時はまだDOMまたはDTMLがない.
  • はJavaScriptをJavaに接近させます.NetscapeはSunと戦略的に提携しています.また、Sunはその時注目されました.
  • は、JavaScriptがサーバとクライアントの両方で使用できるようにするため、埋め込み型である必要があります.
  • しかし、ネットスケープ2.0 beta 1ではscriptタグはサポートされていません.フォーム要素のformでは、Oclickのようなイベントがサポートされています.このときのスクリプトコードはHTMLタグの属性上で使用されています.すなわち、
    <input type="button" onclick="alert('hello, world!')">
    
    beta 2のように、このバージョンでスクリプトタグを正式にサポートし、ラベルのコード、識別子を解析して、呼び出し関数、表現演算などの能力を備え始めます.このバージョンはすでにJavaScript 1.0の基本を備えています.beta 3では、関数はコンストラクタとして使用でき、ユーザー自身のオブジェクトを作成することができます.その後、Windowsなどのグローバルオブジェクトが追加され、現在のウェブページのフォーム要素などをプログラム可能なオブジェクトに投影して、JavaScript 1.0が完成しました.JavaScriptのもう一つの特性は、その最初のバージョンから存在します.この特性は動的実行、つまりエヴァ()である.これはその「シナリオ」の性質と関係があります.全体として、JavaScript 1.0はオブジェクトを作成して操作できる普通の言語です.このときのJSコードは、「対象-コンストラクタ」間の継承性を検出することも、プロトタイプ継承というものもなく、対象システムを構築することができます.関数はnew MyObject()の時に1つのthis引用に入ることを助けます以外、普通の関数と完全に同じです.そして一番面白いのは、Brendan EichはまだJavaScriptの中で最も重要な「タイプシステム」概念が形成されていません.この時、undefinedはまだシステム全体の中の特殊な値であり、あるタイプではありません.typeofキーワードもまったく存在しません.Eichが今やるべきのは「プログラム可能で、オブジェクトを使用できる」スクリプト言語だけです.
  • JavaScript 1.1バージョンの中で最も重要な「コンストラクタ-プロトタイプ継承」が提案されています.
  • JavaScript 1.2以降は、タイプ系と重要な関数式言語特性が追加されます.
  • 三足鼎立はJavaScript 1.0がこのように成功したため、Netscapeはネットスケープ3.0に1.1版を発表しました.ちょうどその時、マイクロソフトもスプーン一杯を分けてブラウザに進出することを決めました.すぐにIE 3.0を発表し、JavaScriptのクローン版を搭載しました.JScriptといいます.マイクロソフトがWebブラウザの分野に足を踏み入れるという重要な一歩は、評判を悪くしても、JavaScript言語の発展過程において重要な一歩となります.マイクロソフトに入社した後、三つの異なるJavaScriptバージョンが同時に存在します.ネットスケープ3.0のJavaScript、IEの中のJScript及びCEnviの中のScript Ease.Cと他のプログラミング言語と違って、JavaScriptはその文法や特性を統一する基準がない(これは後のJavascriptの互換性の問題も引き起こしている).この3つの異なるバージョンはこの問題を際立たせている.業界の懸念が高まるにつれて、この言語の標準化は明らかに必須の位置にある.
  • 標準化1997年、JavaScript 1.1は草案としてヨーロッパコンピュータメーカー協会ECMAに提出されました.第39技術委員会(TC 39)が委任されました.「共通化した、プラットフォームにまたがり、メーカーに中立的な脚本言語の文法と意味.Netscape、Sun、マイクロソフト、Borlandとその他のスクリプトプログラミングに興味がある会社からのプログラマーで構成されたTC 39は、ECMA-262という新しいスクリプト言語を定義しています.これから数年間、国際標準化機構と国际基准化機構と国国際電気工委員会(ISO/IEC)もECMAScriptを標準として採用しており(ISO/IEC-16262)、これによりWebブラウザーは努力を開始した(ある程度の成功と失敗はあっても).ECMAScriptをJavaScriptの実現の基礎としています.Javascript全体の発展史を見ると、ネットワークの発展はJavascriptの誕生をもたらします.各メーカーと会社の利益競争はJavascriptに不統一をもたらしました.影響を受けるのは難しい先端エンジニアです.次の章では、Javascript言語の特性を見に来ました.
    以下はECMAの各バージョンの変化です.
  • ECMA-622 Edition 1 Netscape 4.06、IE 5.0はこのバージョンの互換性を実現しました.ECMA-262 Edition 1は本質的にはJavascript 1.1と同じですが、ブラウザに対するコードを削除し、より小さい変更をしました.ECMA-262 Edition 2は何の変更もしていませんので、ECMAScriptの互換性を測定しません.
  • EAMA-622 Edition 3 ECMA-232 Edition 3は1999年12月に発表され、修正された内容は文字列処理、エラー定義、数値出力に関連し、正規表現、新制御文、try-catch異常処理のサポートを追加しました.第三版はECMAScriptが本物のプログラミング言語になりました.
  • ECMA-622 Edition 3.1は第四版を知っています.ECMA-262 Edition 4の導入後の標準はほとんど第三版の基礎の上で完全に新たな言語を定義しました.強いタイプ、新しい語句、新しいデータ構造、本当の種類と古典的な継承などが含まれています.言語による飛躍が大きいため、大部分のグループメンバーの支持を得ていません.第四版は最終的に廃棄されました.放棄します.グループは3.1バージョンの代替提案を提出して、言語のみを小さく修正します.IE 8は完全に互換性のない部分でこのバージョンを実現します.
  • ECMA-622 Edition 5 ECMA-232 Edition 5は2009年末に発表されました.未来のJavascript標準として、このバージョンは後方互換性と厳格なモードを導入しています.厳格なモードを有効にすると、プログラムコードの安全性と性能にプラスの役割を果たします.バージョン変更はオブジェクトに対する機能拡張を追加します.
    参考資料:
    1[JavaScriptの歴史](http://www.w3school.com.cn/js/pro_js_history.asp「JavaScriptの歴史」)