Présentation de Nzym : un livre blanc sur le langage de programmation qui va révolutionner le multimédia
Published on 12 Aug 2023
Introduction
Syntaxe Nzym
Nombre monEntier = 10;
Les méthodes sont appelées sur des objets à l'aide de la notation par points. Par exemple, pour appeler la méthode Add sur un objet de type Number, vous devez écrire ce qui suit :
monEntier.Add = 6;// Si la valeur de myInteger était auparavant égale à 10, elle sera désormais égale à 16
Il est également important de noter que le point-virgule ( ; ) est utilisé pour terminer toutes les instructions et qu'un commentaire est créé en utilisant deux barres obliques (//) et généralement un espace après.
Types primitifs
- Nombre – stockera des entiers, des flottants ou un mélange des deux
- Chaîne – stocke des caractères et peut être utilisée pour des expressions plus complexes
- Booléen – un type binaire stockant vrai ou faux
- Groupe – un tableau d’objets, utilisé pour créer et définir des éléments plus complexes
- Lien – un type unique qui peut être nul ou qui dirige vers une fonction
Classes et méthodes
Classe Personne;
Nom de chaîne = Aucun nom ;
Âge numérique = 18 ;Méthode ShowName;
Nom brut;
Retour;
Retour;
Fonction GetPerson = Chaîne;
Personne randomPerson;randomPerson.name = Un étranger;personne aléatoire.Afficher le nom;
Retour;
Le code ci-dessus crée une classe appelée Person et instancie les propriétés name et age, en les configurant avec des variables par défaut. Person contient également une méthode qui imprimera le nom de la classe Person donnée. La fonction GetPerson a un type de retour de String et crée en fait une nouvelle Person et imprime son nom à l'écran en fonction de la méthode de la classe Person.
Héritage
Classe SuperHéros = Personne ;
Super pouvoirs du groupe = (Yeux laser, Super force, Vol) ;
Nombre activePower = 1;Méthode PowerInUse;
Super pouvoirs bruts[activePower];
Retour;
Retour;
La classe SuperHero aura également accès à toutes les propriétés et méthodes de la classe Person.
Mots à la mode de Nzym
Nzym : un langage simple, orienté objet, interprété, impératif, multiplateforme, performant, multithread et dynamique.
De nombreux systèmes de langage de programmation utilisent un ensemble de mots-clés standards qui les caractérisent, définis en fonction de leurs paradigmes, de leur discipline de frappe et des problèmes que le langage vise à résoudre. Nous utilisons ces mots-clés, que nous appelons ici des mots-clés à la mode, pour décrire Nzym et présenter le cœur fondateur de sa structure et de son écosystème.
Sadomba-Mahari Computers (Private) Limited (ou simplement SM), la société à l'origine du développement de Nzym, est entrée dans le secteur du développement Web en 2010, quelques mois après son enregistrement, et s'est également lancée dans la création de logiciels spécialisés pour l'industrie cinématographique locale au Zimbabwe. Environ quelques années plus tard, ils ont également commencé à développer des applications mobiles destinées aux téléphones mobiles haut de gamme sur les plateformes Android, Windows Phone et iOS. Les parties en italique en retrait ci-dessous visent à donner un récit des problèmes rencontrés par SM et à donner des exemples des mots-clés de Nzym présentés.
Simple
Type nomOfType = valeur ;nomOfType.MethodOfType = valeur2;Nom de la classeOfClass = InheritFrom;Nom de la fonctionOfFx = ReturnType;Nom de la méthode = ReturnType;
En supprimant les fonctionnalités rarement utilisées, mal comprises et déroutantes du C++ et en supprimant les aspects parfois déroutants de la syntaxe de type C, qui pour beaucoup ont été la cause de beaucoup de souffrance et de chagrin, un langage plus simple est né.
Au début, SM n’employait que trois programmeurs à temps plein, dont deux stagiaires recrutés à l’université. Le plus grand défi qui leur était présenté était de pouvoir créer et reproduire des sites Web statiques, adaptés à différents types de clients, mais en réduisant le temps de production. Bien entendu, les feuilles de style allaient différer d’un projet à l’autre, mais certains éléments allaient exister dans chaque projet et dans tous les projets, notamment la navigation, les widgets de pied de page, la page d’accueil, la page de contact, une page à propos et une page pour mettre en avant les produits et afficher les portfolios. Il fallait trouver un moyen plus simple de prototyper et de produire…
Un autre aspect de la simplicité est la portabilité visuelle. L'un des objectifs de Nzym est de permettre la création d'applications multimédias pouvant fonctionner sur n'importe quelle plate-forme et conserver leur aspect visuel et leur attrait. L'utilisation de feuilles de style en cascade et d'éléments de technologie Web pour créer des affichages visuels standard est devenue une fonctionnalité cible essentielle du développement de Nzym. L'apparence d'un écran dans un navigateur, dans une application mobile et dans une application de bureau sera la même ou, à tout le moins, sera uniforme en termes d'apparence et de convivialité sur toutes les plates-formes.
Orienté objet
Les fonctionnalités orientées objet de Nzym sont essentiellement celles de la plupart des langages de type C qui l'ont précédé, mais avec une syntaxe différente et des règles beaucoup plus souples. Les fichiers de script Nzym sont les objets clés d'un projet Nzym et, à l'intérieur, ils peuvent contenir des classes qui sont également traitées comme des objets.
Lors de la création d'un site Web, l'équipe de SM savait qu'elle allait toujours devoir recréer des éléments communs comme le formulaire de contact ou un menu déroulant, mais avec quelques modifications à la demande du client. Comme il s'agissait principalement de créer des sites Web statiques, il semblait judicieux de trouver un moyen de regrouper ces éléments communs dans des fichiers distincts pour les importer facilement dans un projet, au fur et à mesure des besoins, avec des modifications mineures pour le client. Par exemple, des changements de couleur, l'ajout ou la suppression de certains champs d'un formulaire, ou l'inclusion d'icônes dans le menu.
Interprété
L'équipe de SM utilisait Bootstrap ou un code interne existant à l'époque pour recréer et générer différents types de sites Web. Cependant, ces blocs de code présentaient de nombreux inconvénients, notamment lors de l'affichage sur différents appareils et navigateurs plus anciens.
L’un des objectifs clés du processus d’interprétation de Nzym a également été de créer des produits qui fonctionnent sur n’importe quel appareil, sur n’importe quelle plateforme, en conservant non seulement la portabilité visuelle, mais également les mêmes fonctionnalités et performances.
Impératif
L’une des difficultés rencontrées par l’équipe de SM était de savoir où placer les éléments qu’elle réutilisait dans chaque projet. Un site Web avait un système de menus situé en haut de la page, au-dessus de l’en-tête, et un autre avait un menu en dessous de l’en-tête. Parfois, le menu était placé dans l’en-tête, parmi d’autres éléments de l’en-tête, et parfois, il était à part. Savoir où positionner le bloc de code avec les menus était alors une tâche qui demandait beaucoup de soin et si l’on s’éloignait un moment de son projet, il était toujours difficile de le reprendre. C’était tout aussi déroutant si quelqu’un devait reprendre un projet en cours d’une autre personne, sans pouvoir savoir d’un seul coup d’œil où le projet allait et ce qui avait été fait.
La programmation impérative de Nzym rend le langage facile à apprendre car il existe un flux de contrôle clair qui peut être affiché, ce qui donne à l'utilisateur plus de pouvoir pour modifier et optimiser le programme. Cela crée également plus d'efficacité dans le sens où le programmeur peut dire au programme informatique exactement ce qu'il doit faire. Du côté procédural, il y a l'avantage de la modularité car un programme peut être décomposé en procédures plus petites et réutilisables, et celles-ci peuvent également être réutilisables dans d'autres programmes. Le débogage est également beaucoup plus simple en raison du paradigme impératif.
Multiplateforme
Tandis que le travail sur les sites Web était le gagne-pain de SM, il y avait un autre grand projet auquel SM a pris part, et qui impliquait le travail sur un progiciel multimédia appelé AVisPar (African Visual Package). AVisPar était un ensemble de logiciels et d'outils pour créer des visualisations 3D, des films, des jeux, des ressources de jeu et des effets visuels. Ce qui était unique à propos d'AVisPar était sa capacité à utiliser une carte graphique pour produire des rendus 3D de haute qualité et les enregistrer sur disque presque en temps réel. AVisPar a également été développé pour fonctionner, non seulement sur les systèmes d'exploitation de bureau commerciaux les plus courants, mais également sur certaines distributions Linux.
Étant donné que Nzym peut générer des sites Web avec des ressources Web, y compris des pages HTML avec JavaScript et CSS, il peut être décrit comme multiplateforme. Cependant, lorsque Nzym génère un fichier ctlyst, il est possible d'exécuter le fichier sur n'importe quelle plate-forme disposant d'une implémentation de Nzym Console.
Haute performance
La dernière implémentation de Nzym et de Nzym Console a été créée à l'aide de Rust et a désormais hérité de caractéristiques de haute performance supplémentaires du langage puisque le compilateur Rust a pu optimiser le code pour la vitesse. De plus, la bibliothèque standard Rust fournit un certain nombre d'algorithmes et de structures de données efficaces qui ont été utilisés dans la création de la version actuelle de Nzym. Pour donner un bref aperçu de ce que cela signifie pour les programmes Nzym :
- Sécurité de la mémoire : le système de propriété de Rust garantit que la mémoire est toujours gérée correctement, ce qui peut éviter les fuites de mémoire et les plantages. Cela peut conduire à des améliorations significatives des performances, car Nzym n'a pas besoin de passer du temps à gérer la mémoire manuellement.
- Efficacité : Le compilateur de Rust est très efficace pour optimiser le code en termes de vitesse. Cela signifie que Nzym Console est capable de fonctionner aussi vite que possible, même sur des tâches complexes.
Multithread
AVisPar était un projet unique pour l'équipe de SM. Il a permis de nombreuses expérimentations sur la manière de créer les solutions impliquées, mais l'équipe a dû faire face à un énorme problème, celui de la gestion des événements simultanés. La base de code initiale d'AVisPar avait été écrite en C++ avec certaines bibliothèques d'autres moteurs de jeu 3D tels qu'Irrlicht qui étaient incluses. Le moteur de jeu 3D Irrlicht en particulier avait des fonctionnalités multithreading faciles à utiliser et à adapter pour exécuter différents processus sur une seule machine. Cependant, l'exécution de plusieurs threads sur un réseau avec différents processeurs et unités de traitement graphique impliqués, les threads sont devenus vraiment difficiles et compliqués à gérer.
C et C++ sont traditionnellement monothread et l'utilisation de certaines bibliothèques pour réaliser la création de plusieurs threads entraîne les mêmes inconvénients que la plupart des programmeurs rencontrent lorsqu'ils utilisent Java ou Objective C pour créer des applications multithread. Habituellement, les problèmes proviennent de la complexité en termes de nécessité de comprendre comment les threads interagissent, des problèmes de performances dus au basculement du système d'exploitation entre les threads si la conception n'est pas soigneusement réalisée et, en fin de compte, d'une utilisation plus élevée des ressources. Nzym, d'autre part, utilise le modèle async/await de Rust pour le code concurrent lors de la création d'un fichier ctlyst. Cependant, Nzym a également un repli en termes d'utilisation de Web Workers, de la même manière que JavaScript, dans la mesure où plusieurs threads peuvent être convertis en JavaScript pour des projets de sites Web et bénéficier ensuite des performances, de la réactivité et de l'évolutivité améliorées dont bénéficient les applications JavaScript avec plusieurs threads.
Dynamique
Depuis le début de l'année 2011 et tout au long de l'année jusqu'à la fin de l'année 2012, SM a connu une augmentation du nombre de clients qui lui demandaient de développer des applications mobiles. SM a utilisé Java pour créer des applications pour les smartphones de l'époque qui supportaient Java, y compris les téléphones Android qui gagnaient beaucoup de parts de marché à cette époque. Le problème est devenu que le code de ces plateformes, bien qu'écrit dans le même langage, n'était pas et ne pouvait pas être le même. La présentation visuelle n'était pas portable et les fonctionnalités différaient grandement, tout comme les bibliothèques utilisées dans le développement.
Java était autrefois le langage de référence pour le développement de langages mobiles, mais il a perdu du terrain ces dernières années au profit de langages plus récents, tels que Kotlin et Swift. Les principaux problèmes de Java étaient et restent
- Performances : Java n'est pas aussi performant que certains des langages plus récents, ce qui peut entraîner des applications plus lentes.
- Complexité : Java est un langage complexe, ce qui peut rendre son apprentissage et son utilisation difficiles.
- Fragmentation : Il existe de nombreuses versions différentes de Java, ce qui peut rendre difficile le développement d'applications fonctionnant sur tous les appareils.
Alors que Java reste populaire pour le développement d'applications mobiles, en raison de son écosystème de bibliothèques et d'outils, du support de nombreux fournisseurs et de sa maturité, de nouveaux langages gagnent du terrain. Avec l'initiative de Nzym de suivre le chemin et de rendre plus facile, plus efficace et plus rapide la création et le portage d'applications sur autant d'appareils que possible avec une base de code unique comme objectif, Nzym est sans aucun doute un langage à surveiller alors qu'il se dirige vers cet objectif.
Conclusion
Développement actuel
Développement futur
- Bibliothèques prédéfinies pour une création d'applications plus facile et plus rapide
- Des classes et des objets plus puissants
- Un meilleur débogueur
- Un IDE simple mais plus convivial