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:
in die Sprache gebacken, eine einfache, konsequente API um all diese:
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.
unwirkliches Motor 4 Blaupause
Marmordiagramm für .merge ()
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.
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.
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.
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>
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:
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:
Treelin: Daten fließen von oben nach unten.
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.
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.
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.
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.
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.
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!