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
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.
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.
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.
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.
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>
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:
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:
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
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











JavaScript est la pierre angulaire du développement Web moderne, et ses principales fonctions incluent la programmation axée sur les événements, la génération de contenu dynamique et la programmation asynchrone. 1) La programmation axée sur les événements permet aux pages Web de changer dynamiquement en fonction des opérations utilisateur. 2) La génération de contenu dynamique permet d'ajuster le contenu de la page en fonction des conditions. 3) La programmation asynchrone garantit que l'interface utilisateur n'est pas bloquée. JavaScript est largement utilisé dans l'interaction Web, les applications à une page et le développement côté serveur, améliorant considérablement la flexibilité de l'expérience utilisateur et du développement multiplateforme.

Les dernières tendances de JavaScript incluent la montée en puissance de TypeScript, la popularité des frameworks et bibliothèques modernes et l'application de WebAssembly. Les prospects futurs couvrent des systèmes de type plus puissants, le développement du JavaScript côté serveur, l'expansion de l'intelligence artificielle et de l'apprentissage automatique, et le potentiel de l'informatique IoT et Edge.

Différents moteurs JavaScript ont des effets différents lors de l'analyse et de l'exécution du code JavaScript, car les principes d'implémentation et les stratégies d'optimisation de chaque moteur diffèrent. 1. Analyse lexicale: convertir le code source en unité lexicale. 2. Analyse de la grammaire: générer un arbre de syntaxe abstrait. 3. Optimisation et compilation: générer du code machine via le compilateur JIT. 4. Exécuter: Exécutez le code machine. Le moteur V8 optimise grâce à une compilation instantanée et à une classe cachée, SpiderMonkey utilise un système d'inférence de type, résultant en différentes performances de performances sur le même code.

Python convient plus aux débutants, avec une courbe d'apprentissage en douceur et une syntaxe concise; JavaScript convient au développement frontal, avec une courbe d'apprentissage abrupte et une syntaxe flexible. 1. La syntaxe Python est intuitive et adaptée à la science des données et au développement back-end. 2. JavaScript est flexible et largement utilisé dans la programmation frontale et côté serveur.

JavaScript est le langage central du développement Web moderne et est largement utilisé pour sa diversité et sa flexibilité. 1) Développement frontal: construire des pages Web dynamiques et des applications à une seule page via les opérations DOM et les cadres modernes (tels que React, Vue.js, Angular). 2) Développement côté serveur: Node.js utilise un modèle d'E / S non bloquant pour gérer une concurrence élevée et des applications en temps réel. 3) Développement des applications mobiles et de bureau: le développement de la plate-forme multiplateuse est réalisé par réact noral et électron pour améliorer l'efficacité du développement.

Cet article démontre l'intégration frontale avec un backend sécurisé par permis, construisant une application fonctionnelle EdTech SaaS en utilisant Next.js. Le frontend récupère les autorisations des utilisateurs pour contrôler la visibilité de l'interface utilisateur et garantit que les demandes d'API adhèrent à la base de rôles

J'ai construit une application SAAS multi-locataire fonctionnelle (une application EdTech) avec votre outil technologique quotidien et vous pouvez faire de même. Premièrement, qu'est-ce qu'une application SaaS multi-locataire? Les applications saas multi-locataires vous permettent de servir plusieurs clients à partir d'un chant

Le passage de C / C à JavaScript nécessite de s'adapter à la frappe dynamique, à la collecte des ordures et à la programmation asynchrone. 1) C / C est un langage dactylographié statiquement qui nécessite une gestion manuelle de la mémoire, tandis que JavaScript est dynamiquement typé et que la collecte des déchets est automatiquement traitée. 2) C / C doit être compilé en code machine, tandis que JavaScript est une langue interprétée. 3) JavaScript introduit des concepts tels que les fermetures, les chaînes de prototypes et la promesse, ce qui améliore la flexibilité et les capacités de programmation asynchrones.
