Heim > Web-Frontend > js-Tutorial > Die Zukunft der Programmierung: WebAssembly & Leben nach JavaScript

Die Zukunft der Programmierung: WebAssembly & Leben nach JavaScript

尊渡假赌尊渡假赌尊渡假赌
Freigeben: 2025-02-19 09:10:10
Original
343 Leute haben es durchsucht

Die Zukunft der Programmierung: WebAssembly & Leben nach JavaScript

Key Takeaways

  • Die Zukunft der Programmierung wird wahrscheinlich einen Abzug von JavaScript entfernt, wobei die Einführung der WebAssembly das Web zu einem attraktiveren Kompilierziel für andere Sprachen macht.
  • Der Autor hofft, dass alles, was JavaScript ersetzt, integrierte unveränderliche Datenstrukturen, wörtliche Formen für Objekte, Sammlungen und primitive Typen, Lambdas mit Verschlüssen und eine minimale Syntax, unter anderem.
  • visuelle IDEs, die eine einfache Modellierung und Visualisierung von reaktiven Beziehungen im System ermöglichen, werden wahrscheinlich zur Norm bei der Programmierung. Dies wird durch ein radikales Überdenken der modellierten Programme visuell erleichtert, wodurch visuelle Unordnung und Verkabelung überzogen wird.
  • Die Zukunft der Programmierung wird wahrscheinlich auch genetische Programmierungen beinhalten, bei denen Populationen von Kandidatenprogrammen erstellt und filtriert werden, basierend auf ihrer Fähigkeit, Tests zu bestehen, und AI-unterstützte Programmierung, bei denen KI-Systeme Code analysieren, nach potenziellen Fehlern und Schwachstellen suchen, nach potenziellen Fehlern und Schwachstellen, und schlagen Sie Tests vor, die geschrieben werden müssen.

Kürzlich haben wir gehört, dass die Webplattform ein neues Browser-natives Kompilierungsziel namens WebAssembly erhält (siehe WebAssembly: The Dawn of a New Ära für Details). WASM macht die Webplattform zu einem attraktiveren Kompilierziel für andere Sprachen. Das lässt uns fragen, was nach JavaScript kommen könnte.

JavaScript hat einige großartige Merkmale, aber ich hoffe aufrichtig, dass wir so schnell wie möglich weitermachen. JavaScript ist großartig und hat uns viel beigebracht, aber die Programmierung wird sich entwickeln. Es wird ein Leben nach JavaScript geben.

Ich bin kein Fan von C (ich bin ein wiederhergestellter Benutzer und Missbraucher von C), aber ich bin ein Fan vieler Dinge, die damit gebaut wurden, einschließlich der Unreal Engine, die beim Kompilieren von JavaScript großartig läuft. Es gibt keinen guten Grund, alles für immer in JavaScript zu schreiben. Es ist Zeit, in die Zukunft zu schauen.

Ich habe von Zeit zu Zeit Coffeescript verwendet und sehr genossen, was dazu beigetragen hat, viele der neuen ES6 -Funktionen zu inspirieren. Coffeescript fühlt sich viel einfacher an als JavaScript. Es hat eine prägnantere Syntax, fügt jedoch eine Menge ausdrucksstarker Fähigkeiten hinzu, die in ES5 nicht existierte. Natürlich würde ich CoffeeScript noch mehr vereinfachen, indem ich das giftige Klassenschlüsselwort befreit habe. Ich mag es auch, mit Haskell zu fassen. Aber diese Sprachen repräsentieren die Gegenwart.

Also, was können wir als nächstes tun?

Was auch immer Feuer nach JS fängt, ich hoffe, es hat folgende Funktionen:

  • integrierte unveränderliche Datenstrukturen und Unveränderlichkeit standardmäßig.
  • wörtliche Formen für Objekte, Sammlungen und primitive Typen.
  • Ein besserer Standardnummerntyp für die meisten Anwendungsfälle.
  • benutzerdefinierte Strukturarten, einschließlich guter Unterstützung für Binärtypen auf niedriger Ebene (Bonus, wenn wir definierbare Literal-Syntax erhalten).
  • lambdas mit Schließungen.
  • Funktionaler Versorgungsgürtel eingebaut. Ähnlich wie die RXJS beobachtbare API.
  • native Unterstützung für Objekte und Fabrikzusammensetzung. So etwas wie eingebaute Briefmarken.
  • Echtzeitgarantien für die Verarbeitung und Präzisionsplanung mit geringer Latenz für Apps wie Gaming, Musik- und Videoproduktion, DSP, wissenschaftliche Anwendungen, Synchronisation verteilter Systeme usw.
  • minimale Syntax, ähnlich wie Ruby, Python oder Coffeescript. Jetzt, da ich die Chance hatte, sich überall ohne lockige Zahnspangen und Semikolons wohl zu fühlen, fühle ich mich viel weniger durch Syntax eingesperrt.

Erstklasseunterstützung für die reaktive Programmierung

in die Sprache gebacken, eine einfache, konsequente API um all diese:

  • Streams.
  • kontinuierliche Datenquellen (UI -Eingaben, Zeit, Vektorbilder usw.).
  • Sammlungen einschließlich Arrays und Objekten.

Diese API sollte auf die gleiche Weise verwendet werden, unabhängig davon, ob Daten durch die Funktionen von einem Wert gleichzeitig (d. H. Iterierende / Generatoren ergeben), als Reaktion auf emittierte Ereignisse (z. B. Streams im Knotenstil) oder kontinuierliche Datenquellen wie als Audio, elektrische Signale, UI-Eingänge, Sensoren, sogar zeitunabhängige Dinge wie Vektorgrafiken usw.

Eine integrierte API wie diese könnte alle Typen einwickeln, die das Potenzial hat, auch die Syntax zu vereinfachen.

Für eine wirklich aufschlussreiche Perspektive darüber, wie all dieses reaktive Zeug funktioniert, schauen Sie sich eine allgemeine Theorie der Reaktivität an.

besseres Werkzeug

Die Zukunft der Programmierung: WebAssembly & Leben nach JavaScript unwirkliches Motor 4 Blaupause

  • Eine fantastische visuelle IDE zur einfachen Modellierung und Visualisierung von reaktiven Beziehungen im System. Denken Sie mit einem viel besseren Ux.
  • Zeitreise-Debugging (Beispiel mit JavaScript), das durch unveränderliche Datenstrukturen aktiviert ist. Mit dem Debuggen von Zeitreisen können Sie in der Geschichte Ihres lebenden, laufenden Programms leicht hin und her streichen.
  • Kompilieren Sie mit JS & WASM große Unterstützung für Browser und Knoten.
  • Bessere Analyse -Tools sowohl statische als auch Laufzeit / Dynamik. Speziell entwickelt, um Programme vorhersehbarer zu gestalten, indem reaktive Abhängigkeitsdiagramme analysiert werden. Diese könnten auch großartige visuelle Berichte erstellen, einschließlich Komplexitätsberichte, und Marmordiagramme , um das Verhalten Ihres Programms weiter zu verstehen und vorherzusagen.

Die Zukunft der Programmierung: WebAssembly & Leben nach JavaScript Marmordiagramm für .merge ()

visuelle IDes sind die Norm

Diejenigen, die mit Flow-basiertem/Datenflow-Programmieren vertraut sind, werden Ihnen zu Recht sagen, dass es nichts Neues ist. Visuelle Programmierwerkzeuge gibt es seit Jahrzehnten und konnten bisher keine textbasierte Programmierung ersetzen.

Was diese über die Kante drückt, ist ein radikales Überdenken darüber, wie Programme visuell modelliert werden können, um die visuelle Unordnung und Verkabelung zu reduzieren, die die meisten fließbasierten Programmierlösungen plagen.

Die meisten Innovationen in diesem Bereich finden in Programmierumgebungen überhaupt nicht statt. Stattdessen erfolgt es in Produktionsanwendungen, bei denen die Datenflussmodellierung die Hauptaufgabe ist. Nirgendwo ist dies besser illustriert als in Audioproduktions -Apps.

Audioproduktions -Apps leiten in der Regel RAW -Audio über ein Netzwerk von Effektprozessoren. In Programmierbegriffen können Sie sich einen Effektprozessor als eine funktionale Karte vorstellen: Eine reine Funktion für jedes Element in einer Liste, bei der diese Elemente einem Audio -Beispiel -Slice entsprechen.

Die meisten Audio -Apps modellieren diesen Prozess visuell, indem die realen Maschinen und Kabel in skeuomorpher Weise simulieren. Eine skeuomorphe Benutzeroberfläche ist eine, die versucht, die Benutzeroberfläche des ursprünglichen Objekts zu emulieren, das in der Software modelliert wird.

Das Problem mit dem skeuomorphen Design besteht darin, dass es den größten Teil der Benutzeroberfläche und Ineffizienzen des Originals treu reproduziert. In datenintensiven Anwendungen wie der Audioproduktion sieht diese Unordnung den Programmierern bemerkenswert vertraut aus: Die Drähte sehen ein bisschen wie Spaghetti aus - etwas, das alle guten Entwickler wissen sollten, die wir vermeiden sollten.

Die Zukunft der Programmierung: WebAssembly & Leben nach JavaScript bayareamodularmeet-George P. Macklin-(CC BY-SA 2.0)

Aber in letzter Zeit haben Software wie Ableton Live und Renoise clevere Wege gefunden, sich von Kanälen und Ketten vollständig von Draht -Unordnung zu befreien.

Die Zukunft der Programmierung: WebAssembly & Leben nach JavaScript Ein Ableton -Live -Effektkanal. Die Daten fließt von links nach rechts.

Mit anderen Worten fließen die Daten über Kanäle, und jeder Kanal besteht aus einer Effektkette. Es werden keine Drähte benötigt, da die Effekte nacheinander angewendet werden.

Die Zukunft der Programmierung: WebAssembly & Leben nach JavaScript Renoise -Kanäle mit jeweils eine Effektkette. Die Daten fließen von oben nach unten.

In Code könnte ein Kanal ungefähr so ​​aussehen:

<span>const channel = input => {  
</span>  <span>return input  
</span>  <span>.filter()  
</span>  <span>.gain()  
</span>  <span>.limit();  
</span><span>};
</span>
<span>export default channel;</span>
Nach dem Login kopieren

Wenn Sie genau darüber nachdenken, wird klar, dass Sie mit diesem Modell viel mehr als Audio & Digital Signal Processing (DSP) machen können. Sie können es beispielsweise verwenden, um Routen und Middleware in Express visuell zu modellieren, wobei Routen durch Kanäle dargestellt werden und Middleware durch Effekte dargestellt wird:

Die Zukunft der Programmierung: WebAssembly & Leben nach JavaScript Eine hypothetische renoise-inspirierte Benutzeroberfläche für Programmrouten.

Dies bedeutet natürlich, dass jeder Effekt in der Kette auf Eingaben mit einer gemeinsamen API wirken muss. Hier glänzen funktionelle und reaktive Programmierkonzepte. Es ist einfach, eine einheitliche API für jede Art von Sammlung bereitzustellen, einschließlich eines Stroms von Netzwerkanforderungen. Bei der funktionellen Programmierung werden diese Wickel -APIs als Funktoren bezeichnet. Im klaren Englisch kann ein Funkartor etwas abgebildet werden.

Wenn das ein bisschen wie Science -Fiction klingt, schauen Sie sich Treeline an. Es macht heute etwas sehr Ähnliches. Schauen Sie sich diese Post- /Anmelderoute an, die in Baumanweis modelliert ist. Es verschlüsselt das Kennwort des Benutzers und erstellt dann das Benutzermodell und antwortet dann mit Status 200 OK. Jeder dieser Schritte könnte als Kanaleffekt angesehen werden:

Die Zukunft der Programmierung: WebAssembly & Leben nach JavaScript Treelin: Daten fließen von oben nach unten.

genetische Programmierung

genetische Programmierung ist der Prozess der Simulation des Evolutionssystems von Nature, indem Populationen von Kandidatenprogrammen erstellt und die Programme herausgefiltert werden, die die Tests nicht bestehen. Die Kandidaten, die die Tests bestehen, überleben und bilden die Grundlage der nächsten Generation.

genetische Programmierung bietet die Möglichkeit einer kontinuierlichen, automatisierten Verbesserung des Hotcode und kritischen Algorithmen. Es besteht ein echtes Potenzial, einen genetischen Programmieralgorithmus auf ein Git -Repository zu richten und automatisch neue Software -Generationen in die Produktion zu bringen, wenn sich die Bevölkerung bei früheren Einsatzversionen verbessert.

AI-unterstütztes Programmieren

Die Zukunft der Programmierung: WebAssembly & Leben nach JavaScript Scott Ingram-Dual Neuron (CC BY-NC 2.0)

Starke KI ist heute hier. Viele AI -Systeme schlagen Menschen in unseren eigenen Spielen in verschiedenen Kategorien. Ein Hauptvorteil von AI besteht darin, dass es sehr schnell eine Vielzahl von Alternativen analysieren kann. AI könnte den Code untersuchen, den Sie schreiben, nach potenziellen Fehler und Schwachstellen suchen, Muster erkennen, die abstrahiert werden könnten, Tests vorschlagen, die geschrieben werden müssen, oder sogar Muster in genetischen Programmierpopulationen erkennen und automatisch Populations- und Umweltparameter anpassen müssen, um genetische Programme zu feinstimmen Algorithmen.

Mit anderen Worten, langfristig hat KI eine sehr reale Chance, ein unschätzbares Programmierwerkzeug zu werden. Tatsächlich ist es leicht vorstellbar, dass KI Programme ohne menschliche Hilfe produzieren kann.

Schlussfolgerung

Was auch immer als nächstes kommt, erwarten Sie, dass es ein Quantensprung in Technologie und Innovation ist. Die Zukunft wird früher hier sein als Sie denken.

häufig gestellte Fragen (FAQs) zu WebAssembly und der Zukunft

Was ist der Hauptunterschied zwischen JavaScript und WebAssembly?

JavaScript ist seit vielen Jahren das Rückgrat der Webentwicklung. Es hat jedoch seine Einschränkungen, insbesondere wenn es um leistungsintensive Anwendungen geht. Die WebAssembly hingegen ist ein Binäranweisungsformat, mit dem Code mit nahezu nativer Geschwindigkeit ausgeführt werden kann, indem gemeinsame Hardwarefunktionen nutzen. Es ist eine virtuelle Maschine mit niedriger Ebene, die Code mit nahezu nativem Geschwindigkeit ausführt, was ihn ideal für Aufgaben wie Spiele, computergestütztes Design, Videobearbeitung und wissenschaftliche Simulation macht. JavaScript ersetzen? Stattdessen soll es mit JavaScript zusammenarbeiten, sodass Entwickler das richtige Tool für den Job auswählen können. JavaScript eignet sich hervorragend zum Erstellen dynamischer Websites und Anwendungen mit komplexen Benutzeroberflächen, während WebAssembly besser für leistungsintensive Aufgaben geeignet ist. Ein effizienteres binäres Format für das Web. Mit diesem binären Format kann der Code schneller analysiert und ausgeführt werden als JavaScript. Darüber hinaus ist WebAssembly eine virtuelle Maschine mit niedriger Ebene, die Code mit nahezu nativer Geschwindigkeit ausführt. Dies ist ein erheblicher Leistungssteiger für leistungsintensive Aufgaben.

Kann ich WebAssembly in meinen aktuellen Webprojekten verwenden?

Ja, Sie können WebAssembly in Ihren aktuellen Webprojekten verwenden. Die meisten modernen Browser unterstützen die WebAssembly und es gibt mehrere Tools, mit denen Sie Ihren Code für WebAssembly kompilieren können. Nehmen Sie die beste Unterstützung für das Kompilieren von WebAssembly. Ziel ist es jedoch, in Zukunft so viele Sprachen wie möglich zu unterstützen. Es gibt auch kontinuierliche Anstrengungen, um andere Sprachen wie Python, Go und Java zu unterstützen. Es arbeitet in derselben Sandbox -Umgebung wie JavaScript, was bedeutet, dass es die gleichen Zugriffsbeschränkungen aufweist. Da es sich um ein Binärformat auf niedrigem Niveau handelt, ist es außerdem weniger anfällig für bestimmte Arten von Angriffen, die bei JavaScript gemeinsam sind. verschiedene Arten. Sie können beispielsweise JavaScript -Funktionen aus WebAssembly aufrufen und umgekehrt. Sie können auch Daten zwischen den beiden übergeben, obwohl dies derzeit einige manuelle Arbeiten erfordert.

Was ist die Zukunft der WebAssembly? Es wird bereits von allen großen Browsern unterstützt, und seine Leistungsvorteile machen es zu einer attraktiven Option für Webentwickler. Da mehr Sprachen Unterstützung für das Kompilieren von WebAssembly erhalten, können wir davon ausgehen, dass es in einem breiteren Bereich von Anwendungen verwendet wird.

Gibt es Einschränkungen bei der Verwendung von WebAssembly? Es hat einige Einschränkungen. Beispielsweise hat es derzeit keinen direkten Zugriff auf das DOM, was bedeutet, dass Sie JavaScript für jede DOM -Manipulation verwenden müssen. Es gibt jedoch kontinuierliche Anstrengungen, um diese und andere Einschränkungen anzugehen. Die offizielle WebAssembly -Website ist ein großartiger Ausgangspunkt, da sie einen umfassenden Überblick über die Technologie bietet. Es gibt auch zahlreiche Tutorials und Anleitungen online, mit denen Sie mit WebAssembly beginnen können.

Das obige ist der detaillierte Inhalt vonDie Zukunft der Programmierung: WebAssembly & Leben nach JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage