JavaScriptが未来のプログラミング言語である理由

JavaScriptは私が最初に選んだプログラミング言語でした。さて、私は実際にHTMLとCSSから始めました。他の多くのWeb開発者と同じように、JavaScriptを使用するのは簡単でした。これは、HTMLやCSSと非常によく調和し、実際にHTML / CSSスキルも向上させるためです。私は、Java、Swift、C ++、Dartなど、他のさまざまなプログラミング言語でアプリケーションとゲームを開発しました。しかし、JavaScriptが提供する柔軟性は比類のないものです。それは、単純なタスクを実行するために必要なオプションよりも多くのオプションを提供するため、初心者には悪いと見なされる可能性があります。

今日、JavaScriptは、そのパフォーマンスと遍在性により、地球上で最も強力な言語の1つです。

個人的には、JavaScriptには、Pythonが依然としてゲームを支配している、機械学習やデータ分析などの非常に多くの人気のある業界を活用する可能性があると感じています。Tensorflow.jsのようなツールでも今でも起こっています!

ただし、これまでのJavaScriptの場合は間違いなくそうではありませんでした。以前は、それは弱く、パフォーマンスの悪い言語であり、眉をひそめていました。JavaScriptは「敗者」のためのものでした。

もうそうじゃない。JavaScriptが過去10年間でどのようにテーブルを変えたか、なぜJavaScriptがこれまで以上に強力になったのか、そしてなぜJavaScriptがここにとどまるのかを見てみましょう。

V8:JavaScriptを動かす獣

V8は実際にはJavaScriptエンジンです。JavaScriptエンジンとは何ですか?JavaScriptエンジンは、JavaScriptコードを実行するインタープリターです。JavaScriptエンジンは、標準のインタープリター、またはJavaScriptを何らかの形式でバイトコードにコンパイルするジャストインタイム(JIT)コンパイラーとして実装できます。

V8は、C ++で記述されたGoogleのオープンソースの高性能JavaScriptおよびWebAssemblyJITエンジンです。ChromeやNode.jsなどで使用されています。V8はスタンドアロンで実行することも、任意のC ++アプリケーションに組み込むこともできます。

これは、JSコードを高度に最適化し、CPUが実行できるようにマシンコードに変換するソフトウェアです。V8が処理するタスクの一部は次のとおりです。

  1. ガベージコレクション
  2. マシンコードへのコンパイル
  3. インラインキャッシング
  4. ポインタ圧縮
  5. そしてはるかに多くの最適化

実際のところ、ポインター圧縮は、パフォーマンスに影響を与えずにメモリの最適化を強化するV8の非常に新しい手法です。あなたがオタクなら、公式のV8ブログでそれがどのように実装されているかについてもっと読むことができます。

これからのポイントは、JSコードが非常に手元にあるため、JavaScriptを記述して、夜はぐっすり眠ることができるということです。

成熟した生態系とコミュニティ

JavaScriptには、プログラミング言語がこれまでに持つことができた中で最も成熟したエコシステムの1つがあります。JavaScriptのコミュニティは広大であり、参入障壁は非常に低いです。

ブラウザ(100%のパーソナルコンピュータにあります)を起動してコンソールを開くと、コードの実行を待っているJSエンジンが見つかります!これは、このような複雑な他のプログラミング言語には当てはまりませんでした。

広大なコミュニティでは不十分であるかのように、npmyarnパッケージシステムがあります。名前を付けると、npmレジストリにそのためのパッケージがあります。ランダムな文字列の作成から、JavaScriptでのストリームとバッファの処理まですべてです。JavaScript開発者の間で非常に有名なことわざがあります:

JavaScriptで実行できることは、最終的にはJavaScriptで実行されます。

面白いですが、控えめな、私はこれを信じています。

初心者で入場した場合、これまで誰も遭遇したことのない問題に遭遇する可能性はほとんどありません。これは、単純なJavaScriptの問題で発生する可能性のあるすべての間違いが、Stack Overflowなどのサイトですでに質問され、アーカイブされているためです。

React、Angular、Vueなどのフレームワークとライブラリは、将来のアプリケーションを構築する方法への道を開いています。彼らは、命令型プログラミングではなく宣言型プログラミングに、方法ではなく何を、という視点にシフトしています。これにより、開発者は、基盤となる高性能コードについて心配することなく、高品質のアプリケーションを開発できます。

遍在

JavaScriptは次のものに存在します:

  1. フロントエンド(ブラウザ)
  2. バックエンド(ノード、デノ)
  3. Android / iOS(React Native、NativeScriptなど)
  4. デスクトップ(電子)
  5. ハイブリッド(イオン)

これを可能にするものは何ですか?V8のようなJSエンジンはC / C ++で書かれており、組み込みシステムでコンパイルすることもできます。他のプラットフォームの場合(Andorid / iOSのように)ブラウザーは常に存在するため、ブラウザーにはJSエンジンが付属しており、React Nativeの場合のネイティブアプリであっても、JSコードの実行に使用できます。

最先端の機能と進歩

JavaScript標準はECMA-262TC39コミュニティによって主導されており、これらの人々はすごいです!ECMAScriptは、JavaScriptの新しい標準を毎年リリースしています(ECMAScript2020の新機能を参照してください)。開発者は、言語に新しい機能を追加するように要求することもできます。

たとえば、近い将来JavaScriptに組み込まれる可能性のある保留中の最先端機能を次に示します。

ここですべての提案を見つけることができます:TC39提案。

JavaScriptは高速でスケーラブルです

もちろん、C / C ++ / Rustに勝るものはありませんが、JavaScriptは高速です-V8は、コードの実行方法を監視し、使用されていない実行ビットを遅延させ、コードセグメントを最適化することで、高度に最適化されたコードを生成できます。何度も使用されます。特にPythonのような最も近い競合他社と比較した場合。V8の進歩により、パフォーマンスとメモリ効率がさらに向上しています。

JavaScript(ノード)は非常にスケーラブルです(TypeScriptのようなスーパーセットを使用)。シングルスレッドアーキテクチャで実行されているため、スレッド環境がないことでNodeを批判することがよくありますが、実際にはそれほど重要ではありません。

ノードアプリケーションをスケーリングする方法は、マルチスレッドアプリケーションをスケーリングする方法とは異なります。ノードは文字通り「ノード」を意味します-プロセスのツリー内の単一のノード。ノードは、ノードの複数のインスタンスを実行し、クラスターを管理することによってスケーリングされます。

JavaScriptは、業界の非同期イベント駆動型プログラミングモデルをリードしており、スケーリングするスレッドを必要としません。代わりに、個々のノードプロセスを生成して、完全なCPUコアを処理および利用することができます。ノードのスケーリングについては後で詳しく説明します。

結論

私はJavaScriptが大好きで、それを使用して、あなたのような開発者向けの開発者プラットフォームを作成しました。ここでは、JavaScriptだけでなく、C、C ++、Java、Node、Pythonなどのさまざまな言語も学ぶことができます。ここに無料で参加して、ブラウザから直接他の開発者と学びましょう!

JavaScriptは今後も存続し、この10年間で業界を支配します。同意しますか? TwitterとInstagramのハンドルで教えてください-接続しましょう!