ホームページ >ウェブフロントエンド >jsチュートリアル >プログラミングの未来:JavaScript後のWebAssembly&Life
私は時々Coffeescriptを使用していて、本当に楽しんでいます。これは、多くの新しいES6機能を刺激するのに役立ちました。 CoffeescriptはJavaScriptよりもはるかにシンプルです。より簡潔な構文を備えていますが、ES5には存在しなかった多くの表現力のある機能を追加します。もちろん、Coffeescriptをさらに単純化し、有毒なクラスのキーワードを取り除くことでさらに簡素化します。私もハスケルをいじるのが好きです。しかし、これらの言語は現在を表しています
では、次に何ができるのでしょうか?JSの後に火をつけたものは何でも、これらの機能があることを願っています:
このAPIは、データが一度に1つの値(つまり、繰り返し /ジェネレーターの収量)を介して機能するか、放出されたイベント(ノードスタイルのストリームなど)、またはそのような連続データソースに応じて、一度に1つの値(つまり、反復型 /ジェネレーターの収量)を介して流れるかどうかに関係なく、同じ方法で使用する必要があります。オーディオ、電気信号、UI入力、センサー、さらにはベクターグラフィックスなどの時間非依存のものとして…
このような組み込みのAPIは、すべてのタイプをラップすることができます。これは、構文を簡素化する可能性もあります。タイムトラベルデバッグ(JavaScriptを使用した例)は、不変のデータ構造によって有効になっています。タイムトラベルのデバッグを使用すると、ライブ、ランニングプログラムの歴史の中で簡単に行き来できます。
JS&WASMにコンパイルして、ブラウザとノードの優れたサポート。より良い分析ツールは、静的とランタイム /ダイナミックの両方です。リアクティブな依存性グラフを分析することにより、プログラムをより予測可能にするために特別に設計されています。これらは、
複雑さのレポート、および
大理石の図を含む優れた視覚レポートを作成することもできますプログラムの動作をさらに理解して予測するのに役立ちます。
.merge()
フローベース/データフロープログラミングに精通している人は、それが新しいことではないことを正しく伝えます。視覚的なプログラミングツールは何十年も前から存在しており、これまでのところ、テキストベースのプログラミングを置き換えることができませんでした。
これをエッジに押し上げるのは、視覚的に視覚的にモデル化する方法を視覚的にモデル化する方法の根本的な再考であり、視覚的な混乱と配線のオーバーヘッドを減らして、ほとんどのフローベースのプログラミングソリューションを悩ませています。 この分野のイノベーションのほとんどは、プログラミング環境ではまったく起こっていません。代わりに、データフローモデリングが主要なタスクである生産アプリケーションで発生しています。オーディオ制作アプリよりもこれが図解されていない場所はありません。
オーディオ制作アプリは、通常、エフェクトプロセッサのネットワークを介して生のオーディオをルーティングします。プログラミングの用語では、エフェクトプロセッサを機能マップと考えることができます。リスト内の各要素に対して呼び出される純粋な関数。これらの要素はオーディオサンプルスライスに対応しています。
ほとんどのオーディオアプリは、本物のマシンとケーブルを懐疑的な方法でシミュレートすることにより、このプロセスを視覚的にモデル化します。 Skeuomorphicユーザーインターフェイスは、ソフトウェアでモデル化されている元のオブジェクトのユーザーインターフェイスをエミュレートしようとするものです。Skeuomorphic Designの問題は、ユーザーインターフェイスの散乱とオリジナルの非効率性のほとんどを忠実に再現することです。オーディオ制作などのデータ集中アプリケーションでは、プログラマーに非常によく知られているように見えます。ワイヤーはスパゲッティのように見えます。
BayareAmodularMeet - George P. Macklin - (CC by-sa 2.0)
しかし、最近、Ableton LiveやRenoiseなどのソフトウェアは、チャネルとチェーンを使用して完全にワイヤークラッターを取り除く賢い方法を見つけました。
Abletonライブエフェクトチャネル。データは左から右に流れます
ルノワーズチャネル、それぞれにエフェクトチェーンが付いています。データは上部から下に流れます
コードでは、チャネルは次のように見える場合があります:
これについて慎重に考えると、このモデルを使用してオーディオおよびデジタル信号処理(DSP)以上のことができることが明らかになります。たとえば、エクスプレスのルートとミドルウェアを視覚的にモデル化するために使用できます。ここでは、ルートはチャネルで表され、ミドルウェアは効果で表されます。
ルートをプログラムするための仮想的なルノワーズにインスパイアされたUI
もちろん、これは、チェーン内の各効果が共有APIを使用して入力に作用する必要があることを意味します。そこで、機能的で反応的なプログラミングの概念が輝いています。ネットワークリクエストのストリームを含む、あらゆる種類のコレクションに対して統一されたAPIを簡単に提供できます。機能的なプログラミングでは、それらのラッピングAPIはファンサーと呼ばれます。平易な英語では、ファンチャーはマッピングできるものです。
これがサイエンスフィクションのように聞こえる場合は、TreeLineを見てください。今日は非常によく似たことをします。 Treelineでモデル化されたこの投稿 /サインアップルートをご覧ください。ユーザーのパスワードを暗号化し、ユーザーモデルを作成し、Status 200 OKで応答します。これらの各ステップは、チャネル効果と考えることができます:
treeline:データは上から下に流れます
遺伝子プログラミング
Scott Ingram - デュアルニューロン(CC by-nc 2.0)
強いaiは今日ここにいます。多くのAIシステムは、さまざまなカテゴリーにわたって私たち自身のゲームで人間を破っています。 AIの主な利点の1つは、多種多様な代替品を非常に迅速に分析できることです。 AIは、書いたコードを調べたり、潜在的なバグと脆弱性を検索したり、抽象化できるパターンを認識したり、遺伝子プログラミング集団のパターンを認識したり、遺伝子プログラミングを微調整するために人口と環境のパラメーターを自動的に調整したりすることさえあります。アルゴリズム。
言い換えれば、長期的には、AIは貴重なプログラミングツールになる可能性が非常に高いです。実際、AIが人間の援助なしでプログラムを作成できる未来を想像するのは簡単です。
結論
JavaScriptは長年にわたってWeb開発のバックボーンでした。ただし、特にパフォーマンス集約型アプリケーションに関しては、制限があります。一方、WebAssemblyは、コードが一般的なハードウェア機能を活用して、コードが近くのスピードで実行できるようにするバイナリ命令形式です。それは、ネイティブに近いスピードでコードを実行する低レベルの仮想マシンになるように設計されており、ゲーム、コンピューター支援設計、ビデオ編集、科学シミュレーションなどのタスクに最適です。 javascriptを交換しますか?
WebAssemblyはどのようにWebパフォーマンスを改善しますか? Webのより効率的なバイナリ形式。このバイナリ形式により、コードをJavaScriptよりも迅速に解析および実行できます。さらに、WebAssemblyは、パフォーマンス集約型タスクの大幅なパフォーマンスを高めるコードを実行する低レベルの仮想マシンになるように設計されています。
WebAssemblyの未来は有望に見えます。すでにすべての主要なブラウザによってサポートされており、そのパフォーマンスの利点は、Web開発者にとって魅力的なオプションとなっています。より多くの言語がWebAssemblyへのコンパイルのサポートを得るにつれて、より広い範囲のアプリケーションで使用されることが期待できます。いくつかの制限があります。たとえば、現在、DOMへの直接アクセスが不足しているため、任意のDOM操作にJavaScriptを使用する必要があります。ただし、これやその他の制限に対処するための継続的な取り組みがあります。
以上がプログラミングの未来:JavaScript後のWebAssembly&Lifeの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。