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:
a cuit la langue, une API simple et cohérente autour de tous ces éléments:
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
Diagramme de marbre pour .Merge ()
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.
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.
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.
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.
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?
Comment WebAssembly améliore-t-il les performances Web?
Puis-je utiliser WebAssembly dans mes projets Web actuels?
Quelles langues peuvent être compilées sur webassembly?
Quelles sont les implications de sécurité de l'utilisation de WebAssembly?
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.
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.
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.
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!