Maison > interface Web > js tutoriel > L'avenir de la programmation: WebAssembly & Life après JavaScript

L'avenir de la programmation: WebAssembly & Life après JavaScript

尊渡假赌尊渡假赌尊渡假赌
Libérer: 2025-02-19 09:10:10
original
349 Les gens l'ont consulté

L'avenir de la programmation: WebAssembly & Life après JavaScript

Les plats clés

  • L'avenir de la programmation verra probablement une éloignement de JavaScript, avec l'introduction de WebAssembly faisant du Web une cible de compilation plus attrayante pour d'autres langues.
  • L'auteur espère que tout ce qui remplacera JavaScript comportera des structures de données immuables intégrées, des formulaires littéraux pour des objets, des collections et des types primitifs, des lambdas avec fermetures et une syntaxe minimale, entre autres caractéristiques.
  • Les IDE visuels, qui permettent une modélisation et une visualisation faciles des relations réactives dans le système, deviendront probablement la norme dans la programmation. Cela sera facilité par un radical repensant comment modéliser les programmes visuellement, en réduisant l'encombrement visuel et les frais généraux de câblage.
  • L'avenir de la programmation impliquera également probablement une programmation génétique, où les populations de programmes de candidats sont produites et filtrées en fonction de leur capacité à passer des tests et une programmation assistée par l'IA, où les systèmes d'IA analysent le code, la recherche de bogues et de vulnérabilités potentiels, et suggérer des tests qui doivent être écrits.

Récemment, nous avons entendu que la plate-forme Web obtient une nouvelle cible de compilation native du navigateur appelé WebAssembly (voir ce que WebAssembly: The Dawn d'une nouvelle ère pour plus de détails). WASM fait de la plate-forme Web une cible de compilation plus attrayante pour d'autres langues. Cela nous laisse nous demander ce qui pourrait arriver après JavaScript.

JavaScript a d'excellentes fonctionnalités, mais j'espère sincèrement que nous allons passer dès que possible. JavaScript est génial et il nous a beaucoup appris, mais la programmation évoluera. Il y aura la vie après JavaScript.

Je ne suis pas fan de C (je suis un utilisateur récupéré et l'agresseur de C), mais je suis un fan de nombreuses choses construites avec elle, y compris le moteur Unreal, qui fonctionne très bien lorsqu'il est compilé en JavaScript. Il n'y a aucune bonne raison de tout écrire en JavaScript pour toujours. Il est temps de regarder vers l'avenir.

J'ai utilisé et vraiment apprécié CoffeeScript de temps en temps, ce qui a contribué à inspirer une grande partie des nouvelles fonctionnalités ES6. CoffeeScript se sent beaucoup plus simple que JavaScript. Il a une syntaxe plus concise, mais ajoute beaucoup de capacités expressives qui n'existaient pas dans ES5. Bien sûr, je simplifierais encore plus CoffeeScript en le débarrassant du mot-clé de la classe toxique. J'aime aussi jouer avec Haskell. Mais ces langues représentent le présent.

Alors que pourrions-nous faire ensuite?

Tout ce qui prend feu après JS, j'espère qu'il a ces caractéristiques:

  • Structures de données immuables intégrées et immuabilité par défaut.
  • Formes littérales pour les objets, les collections et les types primitifs.
  • un meilleur type de nombre par défaut pour la plupart des cas d'utilisation.
  • Types structurels personnalisés, y compris un bon support pour les types binaires de bas niveau (bonus si nous obtenons une syntaxe littérale définissable).
  • Lambdas avec fermetures.
  • courroie d'utilité fonctionnelle intégrée. Similaire à l'API observable RXJS.
  • Prise en charge native de la composition des objets et des usines. Quelque chose comme des timbres intégrés.
  • Garanties en temps réel pour le traitement de faible latence et la planification de précision pour des applications telles que les jeux, la musique et la production vidéo, le DSP, les applications scientifiques, la synchronisation des systèmes distribués, etc…
  • Syntaxe minimale, similaire à Ruby, Python ou CoffeeScript. Maintenant que j'ai eu l'occasion de me mettre à l'aise sans accolades bouclées et demi-colons partout, je me sens beaucoup moins confiné par la syntaxe.

Prise en charge de première classe pour la programmation réactive

a cuit la langue, une API simple et cohérente autour de tous ces éléments:

  • Streams.
  • Sources de données continues (entrées d'interface utilisateur, temps, images vectorielles, etc…).
  • collections comprenant des tableaux et des objets.

Cette API doit être utilisée de la même manière, que les données traversent les fonctions une valeur à la fois (c'est-à-dire le rendement itérables / générateurs), en réponse à des événements émis (par exemple, des flux de style nœud), ou des sources de données continues telles que En tant qu'audio, signaux électriques, entrées d'interface utilisateur, capteurs, même des choses indépendantes du temps comme les graphiques vectoriels, etc…

Une API intégrée comme celle-ci pourrait envelopper tous les types, ce qui a le potentiel de simplifier la syntaxe.

Pour une perspective vraiment perspicace sur le fonctionnement de tous ces trucs réactifs, consultez une théorie générale de la réactivité.

MEILLEUR TOLLING

L'avenir de la programmation: WebAssembly & Life après JavaScript Unreal Engine 4 Blueprint

    Un IDE visuel fantastique pour modéliser et visualiser facilement les relations réactives dans le système. Pensez noflo avec une bien meilleure ux.
  • Débogage du voyage dans le temps (exemple avec JavaScript) activé par des structures de données immuables. Le débogage du voyage dans le temps vous permet de se précipiter facilement dans l'histoire de votre programme en direct et en cours d'exécution.
  • Compiler avec JS & Wasm Support pour les navigateurs et le nœud.
  • De meilleurs outils d'analyse à la fois statiques et d'exécution / dynamique. Spécialement conçu pour aider à rendre les programmes plus prévisibles en analysant les graphiques de dépendance réactifs. Ceux-ci pourraient également créer d'excellents rapports visuels, y compris
  • Rapports de complexité, et Diagrammes de marbre pour vous aider à comprendre et à prédire davantage le comportement de votre programme.

L'avenir de la programmation: WebAssembly & Life après JavaScript Diagramme de marbre pour .Merge ()

Les ides visuels seront la norme

Ceux qui connaissent la programmation basée sur le flux / Dataflow vous diront à juste titre que ce n'est pas nouveau. Les outils de programmation visuelle existent depuis des décennies et n'ont jusqu'à présent pas été en mesure de remplacer la programmation textuelle.

Ce qui va pousser cela sur le bord est une repensage radicale de la façon de modéliser les programmes visuellement qui réduiront l'encombrement visuel et le câblage qui afflige la plupart des solutions de programmation basées sur le débit.

La plupart de l'innovation dans cet espace ne se produit pas du tout dans les environnements de programmation. Au lieu de cela, cela se produit dans les applications de production où la modélisation du flux de données est la tâche principale. Nulle part est mieux illustré que dans les applications de production audio.

Les applications de production audio acheminent généralement l'audio brut via un réseau de processeurs d'effets. En termes de programmation, vous pouvez considérer un processeur d'effets comme une carte fonctionnelle: une fonction pure appelée pour chaque élément d'une liste, où ces éléments correspondent à une tranche d'échantillon audio.

La plupart des applications audio modélisent ce processus visuellement en simulant les machines et câbles réels de manière skeuomorphe. Une interface utilisateur skeuomorphe est celle qui tente d'imiter l'interface utilisateur de l'objet d'origine modélisé dans le logiciel.

Le problème de la conception skeuomorphe est qu'il reproduit fidèlement la plupart de l'encombrement de l'interface utilisateur et des inefficacités de l'original. Dans les applications à forte intensité de données telles que la production audio, cet encombrement semble remarquablement familier aux programmeurs: les fils ressemblent un peu à des spaghettis - quelque chose que tous les bons développeurs savent que nous devrions éviter.

L'avenir de la programmation: WebAssembly & Life après JavaScript BayareAmodularMeet - George P. Macklin - (CC BY-SA 2.0)

Mais récemment, des logiciels tels qu'Ableton Live et Renoise ont trouvé des moyens intelligents de se débarrasser complètement de l'encombrement des fils en utilisant des canaux et des chaînes.

L'avenir de la programmation: WebAssembly & Life après JavaScript un canal Ableton Live Effets. Les données circulent de gauche à droite.

En d'autres termes, les données traversent les canaux, et chaque canal se compose d'une chaîne d'effets. Aucun fil n'est nécessaire, car les effets sont appliqués en séquence.

L'avenir de la programmation: WebAssembly & Life après JavaScript canaux Renoise, chacun avec une chaîne d'effets. Les données circulent de haut en bas.

Dans le code, une chaîne peut ressembler à ceci:

<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>
Copier après la connexion

Si vous y pensez soigneusement, il devient clair que vous pourriez faire beaucoup plus que le traitement audio et numérique du signal (DSP) avec ce modèle. Par exemple, vous pouvez l'utiliser pour modéliser visuellement les itinéraires et les middleware dans Express, où les routes sont représentées par les canaux, et le middleware est représenté par les effets:

L'avenir de la programmation: WebAssembly & Life après JavaScript Une interface d'interface utilisateur inspirée de la rénovation hypothétique aux routes de programme.

Bien sûr, cela implique que chaque effet de la chaîne doit agir sur les entrées avec une API partagée. C’est là que les concepts de programmation fonctionnels et réactifs brillent. Il est facile de fournir une API unifiée sur tout type de collection, y compris un flux de demandes de réseau. Dans la programmation fonctionnelle, ces API d'emballage sont appelées Fonctors. En anglais simple, un fonctor est quelque chose qui peut être cartographié.

Si cela ressemble un peu à la science-fiction, jetez un œil à des arbres. Il fait quelque chose de très similaire aujourd'hui. Jetez un œil à cette route post / inscription modélisée dans les arbres. Il crypte le mot de passe de l'utilisateur, puis crée le modèle utilisateur, puis répond avec l'état 200 OK. Chacune de ces étapes pourrait être considérée comme un effet de canal:

L'avenir de la programmation: WebAssembly & Life après JavaScript Treneline: les données circulent de haut en bas.

Programmation génétique

La programmation génétique est le processus de simulation du système d’évolution de la nature en produisant des populations de programmes candidats et en filtrant les programmes qui ne réussissent pas les tests. Les candidats qui réussissent les tests survivent et forment la base de la prochaine génération.

La programmation génétique offre la possibilité d'une amélioration continue et automatisée du code chaud et des algorithmes critiques. Il existe un réel potentiel de pointer un algorithme de programmation génétique dans un référentiel GIT et de pousser automatiquement de nouvelles générations de logiciels à la production lorsque la population améliore les versions déployées antérieures.

Programmation assistée AI

L'avenir de la programmation: WebAssembly & Life après JavaScript Scott Ingram - Double neurone (CC BY-NC 2.0)

L'IA forte est ici aujourd'hui. De nombreux systèmes d'IA battent les humains dans nos propres jeux dans diverses catégories. Un avantage majeur de l'IA est qu'il est capable d'analyser très rapidement une grande variété d'alternatives. L'IA pourrait examiner le code que vous écrivez, rechercher des bogues et des vulnérabilités potentiels, reconnaître les modèles qui pourraient être abstraits, suggérer des tests qui doivent être écrits, ou même reconnaître les modèles dans les populations de programmation génétique et ajuster automatiquement les paramètres de la population et de l'environnement à la programmation génétique affineuse algorithmes.

En d'autres termes, à long terme, l'IA a une chance très réelle de devenir un outil de programmation inestimable. En fait, il est facile d'imaginer un avenir où l'IA peut produire des programmes sans aucune assistance humaine.

Conclusion

Tout ce qui vient ensuite, attendez-vous à ce que ce soit un saut quantique dans la technologie et l'innovation. L'avenir sera ici plus tôt que vous ne le pensez.

Questions fréquemment posées (FAQ) sur WebAssembly et son avenir

Quelle est la principale différence entre JavaScript et WebAssembly?

JavaScript est l'épine dorsale du développement Web depuis de nombreuses années. Cependant, il a ses limites, en particulier en ce qui concerne les applications à forte intensité de performance. WebAssembly, en revanche, est un format d'instruction binaire qui permet au code de s'exécuter à une vitesse quasi native en tirant parti des capacités matérielles courantes. Il est conçu pour être une machine virtuelle de bas niveau qui exécute du code à une vitesse presque native, ce qui le rend idéal pour des tâches telles que les jeux, la conception assistée par ordinateur, l'édition vidéo et la simulation scientifique. Remplacez JavaScript?

Non, WebAssembly n'est pas conçu pour remplacer JavaScript. Au lieu de cela, il est censé fonctionner aux côtés de JavaScript, permettant aux développeurs de choisir le bon outil pour le travail. JavaScript est idéal pour créer des sites Web dynamiques et des applications avec des interfaces utilisateur complexes, tandis que WebAssembly est mieux adapté aux tâches à forte intensité de performances.

Comment WebAssembly améliore-t-il les performances Web?

webassembly améliore les performances Web en fournissant Un format binaire plus efficace pour le Web. Ce format binaire permet au code d'être analysé et exécuté plus rapidement que JavaScript. De plus, WebAssembly est conçu pour être une machine virtuelle de bas niveau qui exécute du code à une vitesse quasi-native, qui est une augmentation significative des performances pour les tâches à forte intensité de performances.

Puis-je utiliser WebAssembly dans mes projets Web actuels?

Oui, vous pouvez utiliser WebAssembly dans vos projets Web actuels. La plupart des navigateurs modernes prennent en charge WebAssembly, et il existe plusieurs outils disponibles qui peuvent vous aider à compiler votre code sur WebAssembly.

Quelles langues peuvent être compilées sur webassembly?

Actuellement, C, C et Rust Ayez le meilleur support pour compiler sur WebAssembly. Cependant, l'objectif est de soutenir autant de langues que possible à l'avenir. Il existe également des efforts continus pour ajouter le support d'autres langues comme Python, Go et Java.

Quelles sont les implications de sécurité de l'utilisation de WebAssembly?

webassembly est conçu avec une forte focus sur la sécurité. Il fonctionne dans le même environnement de bac à sable que JavaScript, ce qui signifie qu'il a les mêmes restrictions d'accès. De plus, comme il s'agit d'un format binaire de bas niveau, il est moins sensible à certains types d'attaques communs avec JavaScript.

Comment WebAssembly interagit-il avec JavaScrip plusieurs façons. Par exemple, vous pouvez appeler les fonctions JavaScript à partir de WebAssembly, et vice versa. Vous pouvez également transmettre des données entre les deux, bien que cela nécessite actuellement des travaux manuels.

Quel est l'avenir de WebAssembly?

L'avenir de WebAssembly semble prometteur. Il est déjà pris en charge par tous les principaux navigateurs, et ses avantages de performance en font une option attrayante pour les développeurs Web. Alors que de plus en plus de langues prennent en charge la compilation vers WebAssembly, nous pouvons nous attendre à la voir utilisée dans une gamme plus large d'applications.

Y a-t-il des limites à l'utilisation de WebAssembly?

Alors que WebAssembly offre de nombreux avantages, il a certaines limites. Par exemple, il manque actuellement d'accès direct au DOM, ce qui signifie que vous devrez utiliser JavaScript pour toute manipulation DOM. Cependant, il existe des efforts continus pour répondre à cette limitation et à d'autres.

Comment puis-je commencer à apprendre et à utiliser WebAssembly?

Il existe plusieurs ressources disponibles pour apprendre WebAssembly. Le site Web officiel de WEBAssembly est un excellent point de départ, car il fournit un aperçu complet de la technologie. Il existe également de nombreux tutoriels et guides disponibles en ligne qui peuvent vous aider à démarrer avec WebAssembly.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal