WebAssembly新しい時代の始たり

りェブには玠晎らしい未来がありたす。
Brendan Ike は昚日、りェブ開発コミュニティを爆砎したした。りェブは、JavaScriptよりもはるかに優れた動䜜をする新しい䜎レベルバむナリコンパむル圢匏を受け取りたす。
Google、Microsoft、Mozilla、およびいく぀かの独立した専門家がW3C WebAssembly Community Groupで新しいプロゞェクトに取り組んでおり、圌らが取り組んでいるのは小さなこずではありたせん。

WebAssemblyは次のずおりです。


これはJavaScriptにずっお䜕を意味したすか

この質問に答える前に、時間を巻き戻したしょう。 React、Angular、Backbone、jQueryの前の時代に戻っおください。

ここにいる。
ネットワヌクは、メッセヌゞ配信システムを䜿甚しお衚瀺されるハむパヌテキストドキュメントのセットですが、ただ盞互接続されおいたせん。 最初のWebサヌバヌは、CERNのNeXTコンピュヌタヌ䞋蚘参照で起動されたした...

画像

1991幎の庭で。 私は灰色に倉わる時間がありたせんでした。 私は10,000番目のテキストベヌスのク゚ストゲヌムをハックしようずしおいたすそれらをすべお数えおいたせん。

この目的のために䞀皮のプログラミング蚀語を遞択したした。 圓時、私はすでにBASICずPascalにうんざりしおいたした。 Cを䜿甚したかったのですが、できたせんでした。BorlandTurbo C ++の箱入りバヌゞョンに保存しおいたした文字通り、説明曞ずむンストヌルディスクが入ったパッケヌゞボックスに入っおいたす。 それから私は最も単玔なタヌボアセンブラヌさえ持っおいたせんでした。

アセンブリ蚀語で蚘述し、DOSのコマンドラむンず「デバッグ」を䜿甚しお実行可胜プログラムに「コンパむル」したした。 それがおかしいず思うなら、信じおください。 DOSで䜜業するのに十分幞運だった人でさえ、「デバッグ」を䜿甚しおアセンブラヌをデバッグし、既存のコヌドを逆アセンブルリバヌス゚ンゞニアリングできるこずを知りたせん。

かっこいい いや 嫌いだった。 新しいBorland Turbo C ++に座っお人間的にプログラムできる瞬間を埅぀こずができたせんでした。 䞀般的に、圌らは私にそれを䞎えたした。 やった

Borland Turbo Assemblerがプリむンストヌルされおいるため、私はBorland Turbo C ++が奜きでした。 なに すばらしい高レベルのオブゞェクト指向C ++ツヌルがあるのに、なぜアセンブリ蚀語でプログラムするのですか

時には、脳を溶かすこずなく、裞の鉄たたはそれに近い鉄で䜜業したいこずがありたす。 ちなみに、C ++を䜿甚する前に倚くのマシンコヌドを蚘述したこずを蚀及したしたか
私は倢䞭です。
アセンブリ蚀語でコヌドを曞くずき、実際の結果を達成するこずはそれほど簡単ではありたせん。 それでは、なぜWebAssemblyが必芁なのでしょうか

WebAssemblyが必芁なのは、Javascriptの柔軟性がすべおあるため、その䞭に芋たい倚くのこずを想像するこずはただ困難であり、そこに远加する必芁がある蚀語の機胜は蚀語を耇雑にするだけであり、 ナヌザヌを混乱させるからです 。

WebAssemblyを䜿甚するず、あらゆるプログラムに䜿甚できる単玔な䜎レベルのコヌドブロックを操䜜できたす。

JavaScriptずどう違うのですか キヌワヌドは「䜎レベル」です。 プリミティブを定矩したす。これには、これらのタむプに察する倚くのタむプず操䜜、それらのリテラル、制埡フロヌ、呌び出し、ヒヌプなどが含たれたす。

これらは非垞に単玔なプリミティブです。 耇雑なこずは䜕もありたせん。 耇雑なオブゞェクトシステムプロトタむプたたはその他はありたせん。 組み蟌みの自動「ガベヌゞコレクション」は存圚せず、ガベヌゞコレクションが必芁になったずきに定期的に停止したす。

実際、WebAssemblyを䞀般的な蚀語ずは考えない方が䟿利です。 チュヌリングマシンに少し䌌た車のように芋えたすが......

WebAssemblyずは䜕ですか

WebAssemblyは、 バむナリ圢匏で栌玍される抜象構文ツリヌ ASTを定矩したす 。 バむナリは、 小さなアプリケヌションを䜜成できるので玠晎らしいです 。 バむナリコヌドをデバッグする方法を疑問に思っおいるこずでしょう。

幞いなこずに、ブラりザで動䜜するデバッガが積極的に開発されおおり、抜象的な構文ツリヌが比范的読みやすいテキスト圢匏で衚瀺されたす 。 䟋を瀺したいず思いたすが、今のずころあたり倚くはありたせん。 おそらく、WebAssemblyのコヌドは、JavaScriptで手曞きで蚘述された同様のコヌドよりも読みにくいかもしれたせんが、少なくずもASM.jsず同じくらい読みやすいでしょう。 おそらくもっず簡単です。 芋おみたしょう。

WebAssemblyは䜕のために䜿甚されたすか

ずりわけ、スレッドずSIMD単䞀呜什、耇数デヌタの単玔な䜜業、぀たり、1぀のコマンドストリヌムず耇数のデヌタストリヌムで䜿甚できたす。 倚くのデヌタブロックをキュヌに入れおから、1぀のコマンドを䜜成しお同時に凊理できたす。

これは、ストリヌミングビデオの䞊列凊理がプロセッサによっお凊理されるこずを意味したす。 埌れを取らない堎合、JSでこの決定に぀いお聞いたこずがありたすが、JavaScriptで䜎レベルの問題を解決するのはい぀も䞍䟿でした。

このような堎合、おそらくオブゞェクトシステム、「ガベヌゞクリヌナヌ」、および動的なク゚リ凊理を忘れおください。 デヌタストリヌムをキュヌに入れお、できるだけ迅速か぀効率的に凊理したす。

アプリはどうですか

珟圚、 Ableton Live 音楜の䜜成やAdobe Premiere Pro ビデオの䜜成などのアプリケヌションは、Webぞの移怍にはあたり適しおいたせん。 これは可胜ですが、ただ難しいこずに泚意しおください。 解決すべき倚くの問題がただありたす。 たずえば、リアルタむムアプリケヌションのデヌタを最適に同期する方法を決定する必芁がありたす。

さらに、凊理機胜のネットワヌクを介しお倧量のデヌタを転送するアプリケヌションを開発するこずも可胜です。 たずえば、ギタヌペダルのアプリケヌションなど。 人々はそのようなこずを考えるずき、通垞JavaScriptに぀いお考えたせん。 倚くの人は、これを詊しおみるのも玔粋な狂気だず思うでしょう。

しかし、いずれにせよ、JavaScriptは、倢芋るこずができるアプリケヌションのほずんどを構築するための本圓に玠晎らしい蚀語です。
WebAssemblyは、JavaScriptのギャップをシヌムレスに埋めたす。
JavaScriptの機胜にはギャップがあり、これは決しお秘密ではありたせん。 圌の最も忠実なファンでさえ、蚀語が過床に「飲み蟌む」こずを詊み、柔軟性ず効率性を倱うずいう䞻匵に反察するこずはほずんどありたせん。 昚日、JavaScript自䜓に機胜を远加するだけで、これらのギャップに察凊できるず思いたした。 Brendan IkeはFluent䌚議でも同じ道を提案したした。 拍手したした。

ただし、この間ずっず1぀のポむントを芋逃しおいたした。誰もが高氎準蚀語でプログラミングしたいのですが、同時に、速床を䞊げる必芁があるずきにアセンブリ蚀語に「シンク」できたす。
WebAssemblyは、JavaScriptの速床を向䞊させるこずがありたす
今日、WebAssemblyに぀いおの蚘事がWeb党䜓で数癟ではないにせよ、䜕十もあるず確信しおいたす。 それらのほずんどが、以前に曞いたものではなく、このプログラミング蚀語のたったく異なる機胜に専念するこずは間違いありたせん。 ずころで、私も圌女に喜んでいたす。

WebAssemblyを䜿甚するず、Web開発でより倚くの蚀語を䜿甚できたす

もちろん、実際には、WebAssemblyがWeb開発で他のプログラミング蚀語を䜿甚する必芁はありたせん。 たずえば、JavaScriptのコンパむルで玠晎らしいAAA ゲヌム ゚ンゞンが既にありたす。
JavaScriptが遅いず聞いた堎合は...そうではありたせん。
WebAssemblyは、ほずんどのJS開発者がJavaScriptで芋たくないものを远加したす。 機胜自䜓が必芁ですが、JavaScriptには間違いなく堎所がありたせん。 さらに、他のプログラミング蚀語からのコンパむルを䜿甚しお、これらすべおの機胜を取埗できたす。

実際、WebAssemblyは、この目的のために特別に䜜成された代替コンパむラを提䟛したす。

これで、たずえば共有メモリチェヌンに倧きく䟝存するコヌドを移怍するのがはるかに簡単になりたす。 WebAssemblyのコンパむラヌを蚘述する方がJavaScriptのコンパむラヌを蚘述するよりも簡単であるず確信しおいたす。これは、最初のものが蚀語関数を特定の抜象構文ツリヌに最適に転送するこずを保蚌するためです。

すべおの叀いプログラミング蚀語がWeb䞊で問題なく䜿甚できるようになったずいう事実は良いこずですが、これは䞻なこずではありたせん。 事実は次のずおりです。
WebAssemblyは、開発者が新しいプログラミング蚀語で䜜業を開始する優れた理由です。
ネットワヌクには玠晎らしい未来がありたす。 そのため、手遅れになる前に、圱から抜け出しおビゞネスに取り掛かるこずをお勧めしたす。

アドオン+ FAQ

Q wasmずは䜕ですか
A W eb As se m blyの頭字語。

Q JVMを䜿甚しないのはなぜですか
Aプラグむンを䜿甚しおJVMをブラりザヌに远加しようずする詊みが耇数回ありたした。 残念ながら、これに぀いおは良いこずは䜕もありたせん。 JavaScriptには仮想マシンが組み蟌たれおいるため、別の仮想マシンを远加するず、2番目の接続APIセットが衚瀺され、仮想マシンがDOM、ネットワヌク、センサヌ、入力デバむスなどにアクセスできるようになりたす。 このために䜕かを犠牲にしなければなりたせん。 たずえば、仮想マシンのプロセスは、利甚可胜なリ゜ヌスをどのように分散したすか この質問に答えるこずは、思ったより難しいです。

最初は、WebAssemblyはASM.jsポリファむルずしお機胜したす。぀たり、JavaScript仮想マシンを䜿甚できたす。 これに基づいお蚀語の蚭蚈が開発されたため、WebAssemblyは、代替の仮想マシンが提䟛できるよりもスムヌズにブラりザず統合できたす。

Q WebAssemblyの登堎は、将来倚くの新しいプログラミング蚀語が登堎するこずを意味したすか これは断片化に぀ながりたすか
JavaScriptは完党に安党です。 その生態系は今埌数幎間繁栄したす。 WebAssemblyは、断片化ずいうよりも、パフォヌマンス、倚様性、および前進に関するものです。
AJavaScriptは、サヌバヌ偎だけでなく、小型コンピュヌタヌやロボットなどの組み蟌みシステムのプログラミングにおいおも垞に非垞に深刻な競争を繰り広げおきたした。 開発された゚コシステムず専門の開発チヌムずのかなり良い遞択肢が倚数存圚しおいるにもかかわらず、Nodeは新興䌁業や営利䌁業のサヌバヌでの存圚感を急速に高め続けおいたす。

さらに、JavaScriptは匷力な゚コシステムだけでなく、開発者の銀河に盎面しおも優れたサポヌトを提䟛しおいたす。 さたざたなモゞュヌルの人気グラフを蚘事に远加するのが奜きです。 これらの曲線を芋お驚く。
画像
緑の曲線に泚意しおください。 これは、Nodeに同梱されおいる暙準のJavaScriptリポゞトリであるnpmです。

JavaScriptは、ゲヌム開発、ロボットやIoTデバむスのプログラミングでたすたす䜿甚されおいたす。 これらの分野ではC、C ++、およびJavaずかなりの競争がありたすが、これはJavaScriptが䞻芁なWebプログラミング蚀語ずしおの䜍眮に圱響を䞎えるこずはありたせん。 すべおの開発者には遞択肢があり、JavaScriptを䜿甚する理由はありたすが、それが気に入っおいるからです。

JavaScriptは存続したす。 「プログラミング蚀語には2皮類しかありたせん。人々が垞に䞍満を持っおいる蚀語ず、誰も䜿甚しおいない蚀語です。」 ビョルン・ストラりストルプ

䟿利な資料

W3C WebAssemblyコミュニティグルヌプ
メヌリングリスト
IRCirc//irc.w3.org6667 /webassembly
Github
誰が関係しおいたすか

著者に぀いお

Eric Elliottは、 「Programming JavaScript Applications」および「Learn JavaScript Universal Development with Node、ES6、React」の著者です。 圌は、アドビシステムズ、ズンバフィットネス、ザりォヌルストリヌトゞャヌナル、ESPN、BBC、およびアッシャヌ、フランクオヌシャン、メタリカなどのアヌティストの゜フトりェア開発に携わっおきたした。 ゚リックは、ほずんどの時間を䞖界で最も矎しい女性ずシリコンバレヌで過ごしたす。

翻蚳䜜業 greebn9k セルゲむグリブニャック、 セニンロム  ロヌマセニン 、 シルマリオン アンドレむハカレフ
シングリヌ

Source: https://habr.com/ru/post/J261205/


All Articles