Présentation de Nzym : un livre blanc sur le langage de programmation qui va révolutionner le multimédia

Published on 12 Aug 2023

Logo Nzym

Introduction

Nzym est un nouveau langage de programmation qui vise à rendre la programmation plus facile, plus simple et plus rapide, en accélérant le temps de production pour produire de meilleurs résultats, en particulier pour les applications multimédias. Au cœur de Nzym se trouve un objet fichier script qui peut exister seul ou être lié à d'autres. C'est grâce à ces objets scriptés que l'interpréteur Nzym peut générer des programmes et des pages de contenu. Ce document sert à présenter ce langage et les nouveaux concepts qu'il contient.


Syntaxe Nzym

La syntaxe de base de Nzym est très simple. Les objets sont créés en attribuant une valeur à une variable du type approprié. Par exemple, pour créer un nouvel objet de type Number, vous devez écrire ce qui suit :

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

Nzym introduit seulement cinq types primitifs de base :
  • 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

Les classes Nzym peuvent être utilisées pour créer des types personnalisés. Chaque fichier de script d'un projet peut être appelé et consulté en tant que classe. Cependant, dans un fichier de script, d'autres classes peuvent être créées. Nzym a également une approche unique des méthodes. Il existe deux types de méthodes en termes de création et cela dépend de l'endroit où elles sont créées. Celles qui sont contenues dans des classes imbriquées sont simplement appelées méthodes. Celles qui sont en dehors d'une classe sont appelées fonctions. Le code suivant donne un exemple des deux :


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

Les classes Nzym peuvent hériter d'autres classes. Cela vous permet de réutiliser du code et de créer des types plus complexes. Pour hériter d'une classe, vous devez utiliser le signe égal après avoir créé la classe. Par exemple, la classe suivante hérite de la classe Person :

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

L'un des principaux objectifs du développement de Nzym était de créer des systèmes qui pouvaient être programmés facilement sans nécessiter beaucoup de formation, présentant certaines similitudes avec les concepts précédents, mais ayant une touche plus simplifiée qui attirerait même les plus débutants en programmation. Les langages de programmation les plus couramment enseignés à l'époque du développement de Nzym étaient ceux similaires à la syntaxe C++, notamment C++, C#, Java et Python. Ces langages de programmation sont également orientés objet. Alors que C++ comportait certains niveaux de complexité que les autres langages mentionnés n'avaient pas, comme l'absence de gestion de la mémoire et le concept de pointeurs et de surcharge d'opérateurs, les autres ont essayé d'améliorer ces concepts, mais il restait encore une courbe d'apprentissage abrupte pour les programmeurs pour les maîtriser avec des frais généraux et des concepts supplémentaires tels que le garbage collection, l'héritage multiple et les coercitions automatiques étendues.
Nzym se concentre sur l'objet et supprime complètement le besoin d'accolades et de nombreux types de crochets ou même de guillemets. Pour chaque instruction dans Nzym, il y a généralement deux à trois parties principalement sous la forme de :

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

C'est sans doute l'un des mots à la mode les plus utilisés pour décrire un langage de programmation, mais c'est en fait un concept clé pour décrire Nzym. La programmation orientée objet en tant que paradigme de programmation est basée sur des objets constitués de données et de code. Dans Nzym, les données se présentent sous la forme de types qui composent les différentes propriétés d'un objet, puis le code est stocké dans les méthodes (qui sont les procédures). Nzym utilise la conception orientée objet en raison de la manière dont elle facilite la définition claire des interfaces et permet de fournir des éléments réutilisables.

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é

Les fichiers de script Nzym sont interprétés au moyen de l'interpréteur Nzym Builder (appelé Elephant) et la sortie peut être un site Web entier dans un fichier nzym qui fonctionne comme une bibliothèque à utiliser dans d'autres projets Nzym ou un fichier ctlyst qui est un bytecode Nzym qui peut être exécuté à l'aide d'une implémentation de Nzym Console sur n'importe quel appareil ou machine. Bien que Nzym Console existe désormais pour la plupart des systèmes d'exploitation, de plus en plus d'implémentations sont en cours de développement, ce qui permettra d'exécuter un programme Nzym compilé sur n'importe quel appareil. Cependant, si un programme Nzym est interprété sur un site Web, la sortie sera immédiatement disponible pour être portée sur n'importe quel appareil ou serveur à héberger, généralement sous la forme d'un site Web statique.

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

Nzym utilise des instructions pour modifier l'état du programme. Dans ce cas, il s'agit d'un langage de programmation impératif, décrivant le fonctionnement du programme à chaque étape. Nzym peut également suivre les principes de la programmation procédurale dans le sens où un programme peut être construit à partir d'une ou plusieurs procédures, via l'utilisation de fonctions, qui peuvent localiser les changements d'état dans des méthodes spécifiques.

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

Nzym a été conçu non seulement pour le Web, mais également pour les applications multimédias dans leur ensemble. Lorsque nous parlons d'applications multimédias, nous faisons référence à des logiciels interactifs qui combinent différents types de médias tels que du texte, des images, de la vidéo et de l'audio, pour transmettre des informations à un public. Ces applications sont le type de logiciel le plus répandu sur divers types d'appareils et de matériels, couvrant divers systèmes d'exploitation, consoles de jeu et appareils grand public comme les téléphones portables et les montres.

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

En ce qui concerne le format de fichier ctlyst, la console Nzym est conçue pour le convertir directement en code machine pour le processeur particulier sur lequel l'application s'exécute au moment de l'exécution. Le format de fichier porte si bien son nom du mot catalyseur qui fait référence à ce qui accélère une réaction chimique. Dans ce cas, cependant, la console Nzym exécute le fichier ctlyst, ce qui permet au programme de fonctionner comme n'importe quelle autre application sur le système.

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

Pour créer une application multimédia impressionnante, puissante et interactive, il faudra généralement être capable de gérer la réactivité interactive en temps réel et une meilleure synchronisation entre tous les éléments impliqués. Cela signifie que l'application devra être capable de gérer plusieurs processus en même temps, ce qui implique plusieurs threads et des événements simultanés qui peuvent se produire en même temps.

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

Nzym est toujours en développement et en constante évolution. Il a été conçu pour s'adapter à un paysage technologique déjà en constante évolution. Avec le développement et l'expansion continus de la console Nzym et de ses implémentations, Nzym peut devenir le langage de choix pour la création d'applications pour appareils portables et mobiles, y compris les montres intelligentes et les smartphones.

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

Nzym est un nouveau langage de programmation conçu pour être simple, élégant et puissant. Bien qu'il en soit encore à ses débuts, il vise à devenir le choix des programmeurs qui souhaitent créer des applications multimédias et des sites Web orientés objet. Dans sa simplicité, il supprime le besoin d'accolades et de guillemets pour les chaînes et rend la syntaxe plus simple et directe.

Développement actuel

Le langage d'implémentation original de Nzym était C++, mais avec l'émergence et la sortie de la première version stable de Rust 1.0 en 2015, le développement et la production de Nzym ont basculé vers le nouveau langage. Opter pour un langage qui renforce la sécurité de la mémoire, sans nécessiter l'utilisation de garbage collection ou de comptage de références, semblait être une excellente option pour un langage qui sera utilisé pour créer des applications multimédia puissantes avec des performances élevées et très peu de bugs.

Développement futur

Nzym étant encore en cours de développement, un certain nombre de fonctionnalités sont prévues pour les prochaines versions. Ces fonctionnalités incluent :
  • 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
Nzym est un nouveau langage de programmation prometteur qui a le potentiel de devenir un choix populaire pour la programmation orientée objet. C'est un bon choix pour les programmeurs qui souhaitent créer des applications simples, élégantes et rapides, en particulier pour diverses plates-formes, notamment les appareils mobiles et Internet. Pour plus d'informations, envoyez un e-mail à hello@nzym.org.
Tags
  • #Technologie
Icon
THANK YOU

You will receive an email with a download link. To access the link, please check your inbox or spam folder