Einführung in Nzym: Ein Whitepaper zur Programmiersprache, die Multimedia revolutionieren wird
Published on 12 Aug 2023
Einführung
Nzym-Syntax
Zahl meineInteger = 10;
Methoden werden für Objekte mithilfe der Punktnotation aufgerufen. Um beispielsweise die Add -Methode für ein Objekt vom Typ „Zahl“ aufzurufen, schreiben Sie Folgendes:
meineInteger.Add = 6;// Wenn der Wert von myInteger vorher gleich 10 war, ist er jetzt 16
Es ist auch wichtig zu beachten, dass das Semikolon ( ; ) zum Beenden aller Anweisungen verwendet wird und ein Kommentar durch die Verwendung von zwei Schrägstrichen (//) und normalerweise einem Leerzeichen danach erstellt wird.
Primitive Typen
- Zahl – speichert Ganzzahlen, Gleitkommazahlen oder eine Mischung aus beidem
- String – speichert Zeichen und kann für komplexere Ausdrücke verwendet werden
- Boolean – ein binärer Typ, der „true“ oder „false“ speichert
- Gruppe – ein Array von Objekten, das zum Erstellen und Definieren komplexerer Elemente verwendet wird
- Link – ein eindeutiger Typ, der ungültig sein kann oder auf eine Funktion verweist
Klassen & Methoden
Klassenmensch;
Stringname = Kein Name;
Anzahl Alter = 18;Methode ShowName;
Rohname;
Zurückkehren;
Zurückkehren;
Funktion GetPerson = String;
Person zufälligePerson;randomPerson.name = Ein Fremder;zufälligePerson.Name anzeigen;
Zurückkehren;
Der obige Code erstellt eine Klasse namens „Person“ und instanziiert die Eigenschaften „Name“ und „Alter“, indem er sie mit Standardvariablen einrichtet. In „Person“ befindet sich außerdem eine Methode, die den Namen der angegebenen Personenklasse ausgibt. Die Funktion „GetPerson“ hat einen Rückgabetyp von „String“ und erstellt tatsächlich eine neue Person und gibt ihren Namen auf dem Bildschirm aus, sofern die Methode der Klasse „Person“ verwendet wird.
Nachlass
Klasse Superheld = Person;
Gruppen-Superkräfte = (Laseraugen, Superstärke, Fliegen);
Anzahl Aktivleistung = 1;Methode PowerInUse;
Rohe Superkräfte [activePower];
Zurückkehren;
Zurückkehren;
Die SuperHero-Klasse hat außerdem Zugriff auf alle Eigenschaften und Methoden der Person-Klasse.
Nzym Schlagworte
Nzym: Eine einfache, objektorientierte, interpretierte, imperative, plattformübergreifende, leistungsstarke, mehrthreadige und dynamische Sprache.
Viele Programmiersprachensysteme verwenden eine Reihe von Standardschlüsselwörtern, die sie charakterisieren. Diese sind nach ihren Paradigmen, ihrer Typisierungsdisziplin und den Problemen geordnet, die die Sprache lösen soll. Wir verwenden diese Schlüsselwörter, die wir hier als Schlagworte bezeichnen, um Nzym zu beschreiben und den Kern seiner Struktur und seines Ökosystems vorzustellen.
Sadomba-Mahari Computers (Private) Limited (oder einfach SM), das Unternehmen hinter der Entwicklung von Nzym, stieg 2010, also einige Monate nach seiner Registrierung, in die Webentwicklungsbranche ein und beschäftigte sich auch mit der Entwicklung spezieller Software für die lokale Filmindustrie in Simbabwe. Etwa ein paar Jahre später begannen sie auch mit der Entwicklung mobiler Anwendungen für höherwertige Mobiltelefone auf den Plattformen Android, Windows Phone und iOS. Die eingerückten, kursiv gedruckten Abschnitte unten sollen einen Überblick über die Probleme geben, mit denen SM konfrontiert ist, und Beispiele für die vorgestellten Schlüsselwörter von Nzym liefern.
Einfach
Typname des Typs = Wert;Typname.Typmethode = Wert2;Klasse NameDerKlasse = InheritFrom;Funktion NameOfFx = Rückgabetyp;Methode NameDerMethode = Rückgabetyp;
Durch die Beseitigung der selten verwendeten, schlecht verstandenen und verwirrenden Funktionen von C++ und der manchmal verwirrenden Aspekte der C-Typsyntax, die für viele eine Menge Schmerz und Kummer verursacht hat, entstand eine einfachere Sprache.
Zu Beginn beschäftigte SM nur drei Vollzeitprogrammierer, von denen zwei Praktikanten der Universität waren. Die größte Herausforderung für sie bestand darin, statische Websites zu erstellen und zu replizieren, die auf verschiedene Arten von Kunden zugeschnitten waren, aber gleichzeitig die Produktionszeit verkürzen sollten. Natürlich würden sich die Stylesheets von Projekt zu Projekt unterscheiden, aber es gab Elemente, die in jedem Projekt vorhanden sein würden und die in allen Projekten vorhanden sein würden, insbesondere Navigation, Footer-Widgets, die Homepage, die Kontaktseite, eine Infoseite und eine Seite zum Hervorheben von Produkten und Anzeigen von Portfolios. Es musste eine einfachere Möglichkeit zum Prototyping und zur Produktion geben …
Ein weiterer Aspekt der Einfachheit ist die visuelle Portabilität. Eines der Ziele von Nzym ist es, die Erstellung von Medienanwendungen zu ermöglichen, die auf jeder Plattform ausgeführt werden können und dabei ihr visuelles Erscheinungsbild und ihre Attraktivität beibehalten. Die Verwendung von Cascading Stylesheets und Webtechnologieelementen zur Erstellung standardisierter visueller Anzeigen wurde zu einem zentralen Zielmerkmal der Nzym-Entwicklung. Das Erscheinungsbild eines Bildschirms in einem Browser, in einer mobilen Anwendung und in einer Desktopanwendung wird auf allen Plattformen gleich oder zumindest einheitlich sein.
Objektorientiert
Die objektorientierten Funktionen von Nzym entsprechen im Wesentlichen denen der meisten C-artigen Sprachen, die davor existierten, jedoch mit einer anderen Syntax und viel lockereren Regeln. Nzym-Skriptdateien sind die Schlüsselobjekte eines Nzym-Projekts und können darin Klassen enthalten, die ebenfalls als Objekte behandelt werden.
Bei der Arbeit an einer Website wusste das Team von SM, dass es immer gängige Elemente wie das Kontaktformular oder ein Dropdown-Menü neu erstellen musste, allerdings mit einigen vom Kunden gewünschten Änderungen. Da sie sich hauptsächlich mit der Erstellung statischer Websites beschäftigten, schien es eine gute Idee zu sein, diese gemeinsamen Elemente in separaten Dateien zu gruppieren, um sie bei Bedarf einfach in ein Projekt importieren zu können, wobei für den Kunden nur geringfügige Änderungen erforderlich waren. Beispielsweise Farbänderungen, das Hinzufügen oder Entfernen bestimmter Felder aus einem Formular oder die Aufnahme von Symbolen in das Menü.
Interpretiert
Das Team bei SM verwendete Bootstrap oder eine damals vorhandene interne Boilerplate, um verschiedene Arten von Websites nachzubilden und zu generieren. Diese Codeblöcke hatten jedoch viele Nachteile, insbesondere bei der Anzeige auf verschiedenen Geräten und älteren Browsern.
Ein Hauptziel des Interpretationsprozesses bestand für Nzym auch darin, Produkte zu schaffen, die auf jedem Gerät und auf jeder Plattform funktionieren und dabei nicht nur die visuelle Portabilität, sondern auch die gleiche Funktionalität und Leistung aufweisen.
Imperativ
Eine Schwierigkeit bei der Arbeit des Teams bei SM bestand darin, genau zu bestimmen, wo die Elemente platziert werden sollten, die sie in jedem Projekt wiederverwendeten. Eine Website hatte ein Menüsystem oben auf der Seite über der Kopfzeile und eine andere hatte ein Menü unter der Kopfzeile. Manchmal wurde das Menü in der Kopfzeile zwischen anderen Kopfzeilenelementen platziert und manchmal war es getrennt davon. Zu wissen, wo der Codeblock mit den Menüs zu platzieren war, war eine Aufgabe, die viel Sorgfalt erforderte, und wenn man sein Projekt für eine Weile unterbrach, war es immer schwierig, es fortzusetzen. Es war ebenso irritierend, wenn jemand ein laufendes Projekt von einer anderen Person übernehmen musste und nicht auf einen Blick erkennen konnte, wohin das Projekt ging und was getan worden war.
Die imperative Programmierung für Nzym macht die Sprache leicht zu erlernen, da ein klarer Kontrollfluss angezeigt werden kann, der dem Benutzer mehr Möglichkeiten gibt, das Programm zu ändern und zu optimieren. Dies schafft auch mehr Effizienz in dem Sinne, dass der Programmierer dem Computerprogramm genau sagen kann, was es tun soll. Auf der prozeduralen Seite gibt es den Vorteil der Modularität, da ein Programm in kleinere wiederverwendbare Prozeduren zerlegt werden kann, die wiederum in anderen Programmen wiederverwendbar sein können. Auch das Debuggen ist aufgrund des imperativen Paradigmas viel einfacher.
Multiplattform
Während die Arbeit an den Websites das Hauptgeschäft von SM war, gab es noch ein weiteres großes Projekt, an dem SM beteiligt war. Dabei ging es um die Arbeit an einem Multimedia-Softwarepaket namens AVisPar (African Visual Package). AVisPar war eine Reihe von Softwareprogrammen und Tools zum Erstellen von 3D-Visualisierungen, Filmen, Spielen, Spielressourcen und visuellen Effekten. Das Besondere an AVisPar war die Fähigkeit, mithilfe einer Grafikkarte hochwertige 3D-Renderings zu erstellen und diese nahezu in Echtzeit auf der Festplatte zu speichern. AVisPar wurde außerdem so entwickelt, dass es nicht nur auf den gängigsten kommerziellen Desktop-Betriebssystemen, sondern auch auf einigen Linux-Distributionen funktioniert.
Da Nzym Websites mit Web-Assets erstellen kann, einschließlich HTML-Seiten mit JavaScript und CSS, kann es als plattformübergreifend beschrieben werden. Wenn Nzym jedoch eine ctlyst-Datei erstellt, kann die Datei auf jeder Plattform ausgeführt werden, auf der eine Implementierung der Nzym-Konsole vorhanden ist.
Hohe Leistung
Die neueste Implementierung von Nzym und Nzym Console wurde mit Rust erstellt und hat fortan zusätzliche Hochleistungsmerkmale der Sprache geerbt, da der Rust-Compiler den Code auf Geschwindigkeit optimieren konnte. Darüber hinaus bietet die Rust-Standardbibliothek eine Reihe effizienter Algorithmen und Datenstrukturen, die bei der Erstellung des aktuellen Builds von Nzym verwendet wurden. Hier ein kurzer Überblick darüber, was dies für Nzym-Programme bedeutet:
- Speichersicherheit : Das Eigentümersystem von Rust stellt sicher, dass der Speicher immer korrekt verwaltet wird, wodurch Speicherlecks und Abstürze verhindert werden können. Dies kann zu erheblichen Leistungsverbesserungen führen, da Nzym keine Zeit mit der manuellen Speicherverwaltung verbringen muss.
- Effizienz : Der Compiler von Rust ist sehr gut darin, Code auf Geschwindigkeit zu optimieren. Das bedeutet, dass Nzym Console auch bei komplexen Aufgaben so schnell wie möglich ausgeführt werden kann.
Mehrfädig
AVisPar war für das SM-Team ein einzigartiges Projekt. Es ermöglichte viel Experimentieren hinsichtlich der Erstellung der entsprechenden Lösungen, aber das Team stand vor einem großen Problem, nämlich der Handhabung gleichzeitiger Ereignisse. Die ursprüngliche Codebasis von AVisPar war in C++ geschrieben und enthielt einige Bibliotheken anderer 3D-Spiele-Engines wie Irrlicht. Insbesondere die 3D-Spiele-Engine Irrlicht verfügte über einige Multithreading-Funktionen, die einfach zu verwenden und anzupassen waren, um mehrere Prozesse auf einer einzigen Maschine auszuführen. Wenn jedoch mehrere Threads in einem Netzwerk mit verschiedenen beteiligten CPUs und Grafikprozessoren ausgeführt wurden, wurde die Handhabung der Threads wirklich schwierig und kompliziert.
C und C++ sind herkömmlicherweise Single-Threaded und die Verwendung einiger Bibliotheken zur Erstellung mehrerer Threads führt zu denselben Nachteilen, mit denen die meisten Programmierer konfrontiert sind, wenn sie Java oder Objective C zur Erstellung von Multithread-Anwendungen verwenden. Normalerweise ergeben sich Probleme aus der Komplexität, da herausgefunden werden muss, wie die Threads interagieren, aus Leistungsproblemen, da das Betriebssystem zwischen Threads wechselt, wenn das Design nicht sorgfältig durchgeführt wird, und letztendlich aus einem höheren Ressourcenverbrauch. Nzym hingegen verwendet Rusts async/await-Modell für gleichzeitigen Code, wenn auf die Erstellung einer ctlyst-Datei zurückgegriffen wird. Nzym hat jedoch auch einen Fallback in Bezug auf die Verwendung von Web Workers, ähnlich wie JavaScript, da mehrere Threads für Website-Projekte in JavaScript konvertiert werden können und dann von der verbesserten Leistung, Reaktionsfähigkeit und Skalierbarkeit profitieren, von der JavaScript-Anwendungen mit mehreren Threads profitieren.
Dynamisch
Von Anfang 2011 bis Ende 2012 verzeichnete SM einen Anstieg der Kunden, die die Dienste von SM in Anspruch nahmen, um mobile Anwendungen für sie zu entwickeln. SM verwendete Java, um Apps für Smartphones dieser Zeit zu erstellen, die Java unterstützten, darunter auch Android-Telefone, die damals einen großen Marktanteil gewannen. Das Problem bestand darin, dass der Code für diese Plattformen, obwohl in derselben Sprache geschrieben, nicht derselbe war und nicht sein konnte. Die visuelle Darstellung war nicht portierbar und die Funktionalität sowie die bei der Entwicklung verwendeten Bibliotheken unterschieden sich stark.
Java war einst die bevorzugte Sprache für die Entwicklung mobiler Sprachen, hat aber in den letzten Jahren gegenüber neueren Sprachen wie Kotlin und Swift an Boden verloren. Die Hauptprobleme von Java waren und bleiben
- Leistung : Java ist nicht so leistungsfähig wie einige der neueren Sprachen, was zu langsameren Apps führen kann.
- Komplexität : Java ist eine komplexe Sprache, die das Erlernen und Verwenden erschweren kann.
- Fragmentierung : Es gibt viele verschiedene Java-Versionen, was die Entwicklung von Apps, die auf allen Geräten funktionieren, erschweren kann.
Obwohl Java aufgrund seines Ökosystems aus Bibliotheken und Tools, der Unterstützung durch viele Anbieter und seiner Reife weiterhin beliebt für die Entwicklung mobiler Anwendungen ist, gewinnen neuere Sprachen an Boden. Mit der Initiative von Nzym, diesem Weg zu folgen und das Erstellen und Portieren von Anwendungen auf so viele Geräte wie möglich mit einer einzigen Codebasis einfacher, besser und schneller zu machen, ist Nzym zweifellos eine Sprache, die man im Auge behalten sollte, da sie auf dieses Ziel hinarbeitet.
Abschluss
Aktuelle Entwicklung
Zukünftige Entwicklung
- Vorgefertigte Bibliotheken für eine einfachere und schnellere App-Erstellung
- Leistungsstärkere Klassen und Objekte
- Ein besserer Debugger
- Eine einfache, aber benutzerfreundlichere IDE