ホームページ >ウェブフロントエンド >jsチュートリアル >プログラミングの未来:JavaScript後のWebAssembly&Life

プログラミングの未来:JavaScript後のWebAssembly&Life

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌オリジナル
2025-02-19 09:10:10354ブラウズ

プログラミングの未来:JavaScript後のWebAssembly&Life

キーテイクアウト

  • プログラミングの未来には、WebAssemblyの導入により、Webを他の言語のより魅力的なコンパイルターゲットにすることで、プログラミングの未来が見られる可能性があります。
  • 著者は、JavaScriptを置き換えるものはすべて、組み込みの不変のデータ構造、オブジェクト、コレクション、原始的なタイプのリテラルフォーム、閉鎖のあるラムダ、および最小限の構文などを特徴とすることを望んでいます。
  • システム内の反応的な関係を簡単にモデリングと視覚化できるようにする視覚IDEは、プログラミングの標準になる可能性があります。これは、視覚的にプログラムをモデル化する方法の根本的な再考、視覚的な混乱を減らし、頭上で配線することによって促進されます。
  • プログラミングの将来には、候補プログラムの集団がテストに合格する能力に基づいて作成およびフィルタリングされる遺伝子プログラミングと、AIシステムがコードを分析し、潜在的なバグと脆弱性を検索するAIアシストプログラミングが含まれる可能性があります。記述する必要があるテストを提案します
  • 最近、WebプラットフォームはWebAssemblyと呼ばれる新しいブラウザネイティブコンパイルターゲットを取得していると聞きました(WebAssemblyとは何かを参照:詳細については新しい時代の夜明け)。 WASMは、Webプラットフォームを他の言語のより魅力的なコンパイルターゲットにします。それは私たちにJavaScriptの後に何が来るのか疑問に思っています
  • JavaScriptにはいくつかの優れた機能がありますが、できるだけ早く先に進むことを心から願っています。 JavaScriptは素晴らしく、それは私たちに多くを教えてくれましたが、プログラミングは進化します。 JavaScriptの後の人生があります
  • 私はCのファンではありません(私は回収されたユーザーであり、Cの虐待者です)が、JavaScriptにコンパイルされたときに素晴らしい実行されるUnreal Engineを含む多くのもののファンです。 JavaScriptにすべてを永遠に書く正当な理由はありません。未来に目を向ける時です。

私は時々Coffeescriptを使用していて、本当に楽しんでいます。これは、多くの新しいES6機能を刺激するのに役立ちました。 CoffeescriptはJavaScriptよりもはるかにシンプルです。より簡潔な構文を備えていますが、ES5には存在しなかった多くの表現力のある機能を追加します。もちろん、Coffeescriptをさらに単純化し、有毒なクラスのキーワードを取り除くことでさらに簡素化します。私もハスケルをいじるのが好きです。しかし、これらの言語は現在を表しています

では、次に何ができるのでしょうか?

JSの後に火をつけたものは何でも、これらの機能があることを願っています:

  • 組み込みの不変のデータ構造とデフォルトでの不変性。
  • オブジェクト、コレクション、プリミティブタイプのリテラルフォーム。
  • ほとんどのユースケースのデフォルト番号タイプの方が優れています。
  • 低レベルのバイナリタイプの優れたサポートを含む
  • カスタム構造タイプ(定義可能なリテラル構文を取得した場合のボーナス)。
  • 閉鎖のあるラムダス。
  • 機能的なユーティリティベルトが組み込まれています。 RXJSの観測可能APIと同様 オブジェクトと工場の構成に対するネイティブサポート。組み込みのスタンプのようなもの。
  • ゲーム、音楽とビデオの制作、DSP、科学的アプリケーション、分散システムの同期などのアプリの低遅延処理と精度スケジューリングのリアルタイム保証…
  • Ruby、Python、またはCoffeescriptに似た
  • 最小構文。どこにでも巻き毛の装具やセミコロンなしで快適になる機会があったので、私は構文によってはるかに閉じ込められていないと感じています。
  • リアクティブプログラミングの第一クラスのサポート
  • 言語に焼き付けられています。
  • streams。
連続データソース(UI入力、時間、ベクトル画像など…)。

アレイやオブジェクトなどのコレクション。

このAPIは、データが一度に1つの値(つまり、繰り返し /ジェネレーターの収量)を介して機能するか、放出されたイベント(ノードスタイルのストリームなど)、またはそのような連続データソースに応じて、一度に1つの値(つまり、反復型 /ジェネレーターの収量)を介して流れるかどうかに関係なく、同じ方法で使用する必要があります。オーディオ、電気信号、UI入力、センサー、さらにはベクターグラフィックスなどの時間非依存のものとして…

このような組み込みのAPIは、すべてのタイプをラップすることができます。これは、構文を簡素化する可能性もあります。
    このすべての反応性がどのように機能するかについての本当に洞察に富んだ視点については、反応性の一般的な理論をチェックしてください。
  • より良いツール
  • Unreal Engine 4 BluePrint
システム内のリアクティブな関係を簡単にモデル化および視覚化するための素晴らしい視覚的IDE。はるかに優れたUXでnofloを考えてください

タイムトラベルデバッグ(JavaScriptを使用した例)は、不変のデータ構造によって有効になっています。タイムトラベルのデバッグを使用すると、ライブ、ランニングプログラムの歴史の中で簡単に行き来できます。

JS&WASMにコンパイルして、ブラウザとノードの優れたサポート。

より良い分析ツールは、静的とランタイム /ダイナミックの両方です。リアクティブな依存性グラフを分析することにより、プログラムをより予測可能にするために特別に設計されています。これらは、

複雑さのレポート、

および

大理石の図を含む優れた視覚レポートを作成することもできます

プログラムの動作をさらに理解して予測するのに役立ちます。

プログラミングの未来:JavaScript後のWebAssembly&Life .merge()

の大理石図

ビジュアルアイデスは標準になります

フローベース/データフロープログラミングに精通している人は、それが新しいことではないことを正しく伝えます。視覚的なプログラミングツールは何十年も前から存在しており、これまでのところ、テキストベースのプログラミングを置き換えることができませんでした。

これをエッジに押し上げるのは、視覚的に視覚的にモデル化する方法を視覚的にモデル化する方法の根本的な再考であり、視覚的な混乱と配線のオーバーヘッドを減らして、ほとんどのフローベースのプログラミングソリューションを悩ませています。 この分野のイノベーションのほとんどは、プログラミング環境ではまったく起こっていません。代わりに、データフローモデリングが主要なタスクである生産アプリケーションで発生しています。オーディオ制作アプリよりもこれが図解されていない場所はありません。

オーディオ制作アプリは、通常、エフェクトプロセッサのネットワークを介して生のオーディオをルーティングします。プログラミングの用語では、エフェクトプロセッサを機能マップと考えることができます。リスト内の各要素に対して呼び出される純粋な関数。これらの要素はオーディオサンプルスライスに対応しています。

ほとんどのオーディオアプリは、本物のマシンとケーブルを懐疑的な方法でシミュレートすることにより、このプロセスを視覚的にモデル化します。 Skeuomorphicユーザーインターフェイスは、ソフトウェアでモデル化されている元のオブジェクトのユーザーインターフェイスをエミュレートしようとするものです。

Skeuomorphic Designの問題は、ユーザーインターフェイスの散乱とオリジナルの非効率性のほとんどを忠実に再現することです。オーディオ制作などのデータ集中アプリケーションでは、プログラマーに非常によく知られているように見えます。ワイヤーはスパゲッティのように見えます。

BayareAmodularMeet - George P. Macklin - (CC by-sa 2.0)

しかし、最近、Ableton LiveやRenoiseなどのソフトウェアは、チャネルとチェーンを使用して完全にワイヤークラッターを取り除く賢い方法を見つけました。 プログラミングの未来:JavaScript後のWebAssembly&Life Abletonライブエフェクトチャネル。データは左から右に流れます

言い換えれば、データはチャネルを介して流れ、各チャネルは一連の効果で構成されています。効果が順番に適用されるため、ワイヤは必要ありません。

ルノワーズチャネル、それぞれにエフェクトチェーンが付いています。データは上部から下に流れます コードでは、チャネルは次のように見える場合があります:プログラミングの未来:JavaScript後のWebAssembly&Life これについて慎重に考えると、このモデルを使用してオーディオおよびデジタル信号処理(DSP)以上のことができることが明らかになります。たとえば、エクスプレスのルートとミドルウェアを視覚的にモデル化するために使用できます。ここでは、ルートはチャネルで表され、ミドルウェアは効果で表されます。

ルートをプログラムするための仮想的なルノワーズにインスパイアされたUI

もちろん、これは、チェーン内の各効果が共有APIを使用して入力に作用する必要があることを意味します。そこで、機能的で反応的なプログラミングの概念が輝いています。ネットワークリクエストのストリームを含む、あらゆる種類のコレクションに対して統一されたAPIを簡単に提供できます。機能的なプログラミングでは、それらのラッピングAPIはファンサーと呼ばれます。平易な英語では、ファンチャーはマッピングできるものです。

これがサイエンスフィクションのように聞こえる場合は、TreeLineを見てください。今日は非常によく似たことをします。 Treelineでモデル化されたこの投稿 /サインアップルートをご覧ください。ユーザーのパスワードを暗号化し、ユーザーモデルを作成し、Status 200 OKで応答します。これらの各ステップは、チャネル効果と考えることができます:

プログラミングの未来:JavaScript後のWebAssembly&Lifetreeline:データは上から下に流れます 遺伝子プログラミング

遺伝子プログラミングは、候補プログラムの集団を生産し、テストに合格しないプログラムをフィルタリングすることにより、自然の進化システムをシミュレートするプロセスです。テストに合格する候補者は生き残り、次世代の基礎を形成します。

遺伝子プログラミングは、ホットコードと重要なアルゴリズムを継続的で自動化した改善の可能性を提供します。 GITリポジトリに遺伝子プログラミングアルゴリズムを指し示し、人口が以前の展開バージョンで改善されたときに新しい世代のソフトウェアを自動的に生産にプッシュする可能性があります。

ai-assistedプログラミング

Scott Ingram - デュアルニューロン(CC by-nc 2.0)

強いaiは今日ここにいます。多くのAIシステムは、さまざまなカテゴリーにわたって私たち自身のゲームで人間を破っています。 AIの主な利点の1つは、多種多様な代替品を非常に迅速に分析できることです。 AIは、書いたコードを調べたり、潜在的なバグと脆弱性を検索したり、抽象化できるパターンを認識したり、遺伝子プログラミング集団のパターンを認識したり、遺伝子プログラミングを微調整するために人口と環境のパラメーターを自動的に調整したりすることさえあります。アルゴリズム。プログラミングの未来:JavaScript後のWebAssembly&Life 言い換えれば、長期的には、AIは貴重なプログラミングツールになる可能性が非常に高いです。実際、AIが人間の援助なしでプログラムを作成できる未来を想像するのは簡単です。 結論

次に来るものは何でも、それがテクノロジーと革新の量子飛躍になることを期待してください。未来はあなたが思っているよりも早くここにあります。

WebAssemblyとその将来に関するよくある質問(FAQ)

JavaScriptとWebAssemblyの主な違いは何ですか?

​​

JavaScriptは長年にわたってWeb開発のバックボーンでした。ただし、特にパフォーマンス集約型アプリケーションに関しては、制限があります。一方、WebAssemblyは、コードが一般的なハードウェア機能を活用して、コードが近くのスピードで実行できるようにするバイナリ命令形式です。それは、ネイティブに近いスピードでコードを実行する低レベルの仮想マシンになるように設計されており、ゲーム、コンピューター支援設計、ビデオ編集、科学シミュレーションなどのタスクに最適です。 javascriptを交換しますか?

いいえ、WebAssemblyはJavaScriptを置き換えるようには設計されていません。代わりに、JavaScriptと一緒に作業することを目的としており、開発者がジョブに適したツールを選択できるようにします。 JavaScriptは、複雑なユーザーインターフェイスを備えた動的なWebサイトとアプリケーションを構築するのに最適ですが、WebAssemblyはパフォーマンス集約型タスクに適しています。

WebAssemblyはどのようにWebパフォーマンスを改善しますか? Webのより効率的なバイナリ形式。このバイナリ形式により、コードをJavaScriptよりも迅速に解析および実行できます。さらに、WebAssemblyは、パフォーマンス集約型タスクの大幅なパフォーマンスを高めるコードを実行する低レベルの仮想マシンになるように設計されています。

はい、現在のWebプロジェクトでWebAssemblyを使用できます。ほとんどの最新のブラウザはWebAssemblyをサポートしており、WebAssemblyにコードをコンパイルするのに役立ついくつかのツールがあります。 WebAssemblyへのコンパイルに最適なサポートを提供します。ただし、目標は、将来、できるだけ多くの言語をサポートすることです。また、Python、Go、Javaなどの他の言語のサポートを追加するための継続的な取り組みもあります。 JavaScriptと同じサンドボックス環境内で動作します。つまり、同じアクセス制限があります。さらに、それは低レベルのバイナリ形式であるため、JavaScriptによく見られる特定のタイプの攻撃の影響を受けにくい。いくつかの方法。たとえば、WebAssemblyからJavaScript関数を呼び出すことができます。その逆も同様です。 2つの間にデータを渡すこともできますが、現在は手動での作業が必要です。

WebAssemblyの未来は何ですか?

WebAssemblyの未来は有望に見えます。すでにすべての主要なブラウザによってサポートされており、そのパフォーマンスの利点は、Web開発者にとって魅力的なオプションとなっています。より多くの言語がWebAssemblyへのコンパイルのサポートを得るにつれて、より広い範囲のアプリケーションで使用されることが期待できます。いくつかの制限があります。たとえば、現在、DOMへの直接アクセスが不足しているため、任意のDOM操作にJavaScriptを使用する必要があります。ただし、これやその他の制限に対処するための継続的な取り組みがあります。

WebAssemblyの学習と使用を開始するにはどうすればよいですか?公式WebAssembly Webサイトは、テクノロジーの包括的な概要を提供するため、開始するのに最適な場所です。また、WebAssemblyを始めるのに役立つオンラインで利用可能な多くのチュートリアルとガイドもあります。

以上がプログラミングの未来:JavaScript後のWebAssembly&Lifeの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。