Vi introducerar Nzym: En vitbok om programmeringsspråket som kommer att revolutionera multimedia

Published on 12 Aug 2023

Nzym logotyp

Introduktion

Nzym är ett nytt programmeringsspråk som fokuserar på att göra programmering enklare, enklare och snabbare, vilket påskyndar produktionstiden för att till och med ge bättre resultat, särskilt för multimediaapplikationer. Kärnan i Nzym är ett skriptfilobjekt som kan existera på egen hand eller länkas ihop med andra. Det är genom dessa skriptobjekt som Nzym-tolken kan generera program och innehållssidor. Detta dokument tjänar till att introducera detta språk och de nya begreppen däri.


Nzym syntax

Den grundläggande syntaxen för Nzym är mycket enkel. Objekt skapas genom att tilldela ett värde till en variabel av lämplig typ. Till exempel, för att skapa ett nytt objekt av typen Number, skulle du skriva följande:

Number myInteger = 10;

Metoder anropas på objekt genom att använda punktnotationen. Till exempel, för att anropa Add -metoden på ett objekt av typen Number, skulle du skriva följande:

myInteger.Add = 6;
// Om värdet på myInteger var lika med 10 tidigare blir det nu 16

Det är också viktigt att notera att semikolon ( ; ) används för att avsluta alla påståenden och en kommentar skapas genom att använda två snedstreck (//) och vanligtvis ett mellanslag efter.

Primitiva typer

Nzym introducerar bara fem grundläggande primitiva typer:
  • Number – lagrar heltal, flytande tal eller en blandning av de två
  • String – lagrar tecken och kan användas för mer komplexa uttryck
  • Boolean – en binär typ som lagrar sant eller falskt
  • Grupp – en uppsättning objekt som används för att skapa och definiera mer komplexa element
  • Länk – en unik typ som kan vara ogiltig eller som leder till en funktion

Klasser och metoder

Nzym-klasser kan användas för att skapa anpassade typer. Varje skriptfil i ett projekt kan anropas och nås som en klass, men inom en skriptfil kan andra klasser skapas. Nzym har också en unik syn på metoder. Det finns två typer av metoder när det gäller hur de skapas och detta är baserat på var de skapas. De som finns i kapslade klasser kallas helt enkelt för metoder. De utanför en klass kallas för funktioner. Följande kod ger ett exempel på de två:


Klass Person;
String name= Inget namn;
Antal ålder = 18;
Metod ShowName;
Rå namn;
Återvända;
Återvända;
Funktion GetPerson = String;
Person randomPerson;
randomPerson.name = En främling;
randomPerson.ShowName;
Återvända;

Koden ovan skapar en klass som heter Person och instansierar egenskaperna för namn och ålder, ställer in dem med standardvariabler. In Person är också en metod som skriver ut namnet på den givna personklassen. Funktionen GetPerson har en returtyp av String och skapar faktiskt en ny person och skriver ut deras namn på skärmen givet metoden från klassen Person.


Arv

Nzym-klasser kan ärva från andra klasser. Detta gör att du kan återanvända kod och skapa mer komplexa typer. För att ärva från en klass använder du likhetstecknet efter att du har skapat klassen, till exempel ärver följande klass från klassen Person:

Klass SuperHero = Person;
Gruppsuperkrafter = (Laserögon, Superstyrka, Flygning);
Antal activePower = 1;
Metod PowerInUse;
Råa superkrafter[activePower];
Återvända;
Återvända;

SuperHero-klassen kommer också att ha tillgång till alla egenskaper och metoder för klassen Person.

Nzym Buzzwords

Nzym: Ett enkelt, objektorienterat, tolkat, imperativt, multiplattformsspråk, högpresterande, flertrådigt och dynamiskt språk.

Många programmeringsspråkssystem använder en uppsättning standard nyckelord som kännetecknar dem, framställda enligt deras paradigm, skrivdisciplin och de problem som språket syftar till att lösa. Vi använder dessa nyckelord, som vi här refererar till som modeord, för att beskriva Nzym och introducera kärnan i dess struktur och ekosystem.

Sadomba-Mahari Computers (Private) Limited (eller helt enkelt SM), företaget bakom utvecklingen av Nzym, gick in i webbutvecklingsbranschen 2010, ungefär några månader sedan de registrerades, samt sysslade med att tillverka specialiserad programvara för den lokala filmindustrin i Zimbabwe. Ungefär några år senare började de också utveckla mobilapplikationer riktade till avancerade mobiltelefoner på Android-, Windows Phone- och iOS-plattformarna. De indragna kursiverade delarna nedan syftar till att ge en berättelse om de problem som SM står inför och att ge exempel på nyckelorden i Nzym som presenteras.

Enkel

En av de viktigaste hyresgästerna med utvecklingen av Nzym var att det fanns ett behov av system som enkelt kunde programmeras utan behov av mycket utbildning, med vissa likheter med koncept som kom tidigare, men med en mer förenklad touch som skulle locka även de mest nybörjare inom programmering. De vanligaste programmeringsspråken som lärdes ut under tiden för Nzyms utveckling var de som liknade C++-syntaxen, inklusive C++, C#, Java och Python. Dessa programmeringsspråk är också objektorienterade. Medan C++ kom med vissa nivåer av komplexitet som de andra nämnda inte hade, såsom brist på minneshantering och konceptet med pekare och operatörsöverbelastning, försökte de andra förbättra dessa koncept men det återstod fortfarande en brant inlärningskurva för programmerare att bemästra dem med ytterligare omkostnader och koncept som sophämtning, multipelt arv och omfattande automatiska tvång.
Nzym fokuserar på objektet och tar helt bort behovet av hängslen och många parentestyper eller till och med offerter. För varje uttalande i Nzym finns det vanligtvis två till tre delar huvudsakligen i form av:

Typ nameOfType = värde;
nameOfType.MethodOfType = värde2;
Class NameOfClass = InheritFrom;
Funktion NameOfFx = ReturnType;
Metod NameOfMethod = ReturnType;

Genom att ta bort de sällan använda, dåligt förstådda, förvirrande funktionerna i C++ och ta bort de ibland förvirrande aspekterna av C-typsyntaxen, som för många har varit orsaken till mycket smärta och sorg, föddes ett enklare språk.

I början anställde SM endast tre heltidsanställda programmerare, varav två var praktikanter anställda från universitetet. Den största utmaningen som ställdes för dem var att kunna skapa och replikera statiska webbplatser, skräddarsydda för olika typer av kunder men minska produktionstiden. Uppenbarligen skulle stilmallar vara olika från projekt till projekt, men det fanns element som skulle finnas i varje projekt och som skulle finnas i alla projekt, särskilt navigering, sidfotswidgets, startsidan, kontaktsidan, en om-sida och en sida för att lyfta fram produkter och visa portföljer. Ett enklare sätt att prototyper och producera behövde vara möjligt...

En annan aspekt av att vara enkel är visuellt bärbar. Ett av målen med Nzym är att möjliggöra skapandet av mediaapplikationer som kan köras på vilken plattform som helst och behålla sitt visuella utseende och tilltalande. Användningen av överlappande stilmallar och webbteknikelement för att skapa visuella standardskärmar blev en central målfunktion för Nzym-utveckling. Sättet som en skärm ser ut i en webbläsare, i en mobilapplikation och i en stationär applikation kommer att vara densamma eller åtminstone enhetlig i utseende och känsla på alla plattformar.

Objektorienterad

Förmodligen ett av de mest överanvända modeorden när det gäller att beskriva ett programmeringsspråk men är faktiskt ett nyckelbegrepp för att beskriva Nzym. Objektorienterad programmering som programmeringsparadigm bygger på objekt gjorda av data och kod. I Nzym är data i form av de typer som utgör de olika egenskaperna hos ett objekt, och sedan lagras koden i metoderna (som är procedurerna). Nzym använder sig av objektorienterad design på grund av hur det underlättar en ren definition av gränssnitt och gör det möjligt att tillhandahålla återanvändbara element.

De objektorienterade faciliteterna i Nzym är i huvudsak de av de flesta C-typspråk som kom före det men med en annan syntax och mycket mer avslappnade regler. Nzym-skriptfiler är nyckelobjekten i ett Nzym-projekt och inom dem kan de innehålla klasser som också behandlas som objekt.

När de arbetade på en webbplats visste teamet på SM att de alltid skulle behöva återskapa vanliga element som kontaktformuläret eller en rullgardinsmeny men med vissa modifieringar enligt kundens önskemål. Eftersom de mest handlade om att skapa statiska webbplatser, verkade det vara en bra idé om det fanns ett sätt på vilket de kunde gruppera dessa gemensamma element i separata filer för enkel import till ett projekt, när och när de behövdes, med mindre ändringar för klienten. Till exempel ändringar i färg, tillägg eller borttagning av vissa fält från ett formulär, eller inkludering av ikoner på menyn.

Tolkas

Nzym-skriptfiler tolkas med hjälp av Nzym Builder-tolken (som kallas Elephant) och utdata kan vara en hel webbplats till en nzym-fil som fungerar som ett bibliotek att använda i andra Nzym-projekt eller en ctlyst-fil som är Nzym bytecode som kan köras med en implementering av Nzym Console på vilken enhet eller maskin som helst. Medan Nzym Console nu finns för de flesta operativsystem, utvecklas fler implementeringar, vilket gör det möjligt att köra ett kompilerat Nzym-program på vilken enhet som helst. Men om ett Nzym-program tolkas till en webbplats, skulle utgången omedelbart vara tillgänglig för port till valfri enhet eller server att vara värd för, vanligtvis som en statisk webbplats.

Teamet på SM skulle använda Bootstrap eller en egen boilerplate som fanns på den tiden för att återskapa och generera olika typer av webbplatser. Dessa kodblock hade dock många nackdelar, särskilt när de visades på olika enheter och äldre webbläsare.

Ett centralt mål med tolkningsprocessen för Nzym har också varit att skapa produkter som fungerar på vilken enhet som helst, över vilken plattform som helst, och inte bara bibehålla visuell portabilitet, utan samma funktionalitet och prestanda också.

Tvingande

Nzym använder uttalanden för att ändra programmets tillstånd, och i det här fallet är det därför ett imperativt programmeringsspråk som beskriver hur programmet fungerar vid varje steg. Nzym kan också följa principerna för procedurprogrammering i den meningen att ett program kan byggas från en eller flera procedurer, via användning av funktioner, som kan lokalisera tillståndsändringarna till specifika metoder.

En svårighet i arbetet för teamet på SM var att bestämma var de skulle placera element som de återanvänder i varje projekt. En webbplats skulle ha ett menysystem högst upp på sidan ovanför rubriken, och en annan skulle ha en meny under rubriken. Ibland placerades menyn i rubriken, bland andra huvudelement och ibland var den isär. Att veta var man skulle placera kodklumpen med menyerna var då en uppgift som krävde mycket omsorg och om man gick bort ett tag från sitt projekt var det alltid svårt att återuppta. Det var lika jobbigt om någon behövde ta över ett pågående projekt från en annan person, utan att kunna säga vart projektet var på väg och vad som hade gjorts med en blick.

Imperativ programmering för Nzym gör språket lätt att lära sig eftersom det finns ett tydligt kontrollflöde som kan visas, vilket ger användaren mer kraft att ändra modifiera och optimera programmet. Detta skapar också mer effektivitet i den meningen att programmeraren kan tala om för datorprogrammet exakt vad det ska göra. På den procedurmässiga sidan finns det fördelen med modularitet eftersom ett program kan delas upp i mindre återanvändbara procedurer, och dessa kan också återanvändas i andra program. Felsökning är också mycket enklare på grund av det imperativa paradigmet.

Multiplattform

Nzym designades inte bara för webben utan med multimediaapplikationer i åtanke som helhet. När vi tittar på multimediaapplikationer syftar vi på interaktiv programvara som kombinerar olika typer av media som text, bilder, video och ljud för att förmedla information till en publik. Dessa applikationer är den mest dominerande typen av programvara som finns på olika typer av enheter och hårdvara, som spänner över olika operativsystem, spelkonsoler och konsumentenheter som mobiltelefoner och klockor.

Medan arbetet med webbsidorna var SM:s bröd och smör, fanns det ett annat stort projekt som SM blev en del av, och som innebar arbetet med ett multimediaprogrampaket kallat AVisPar (det afrikanska visuella paketet). AVisPar var en uppsättning program och verktyg för att skapa 3D-visualiseringar, filmer, spel, speltillgångar och visuella effekter. Det som skulle vara unikt med AVisPar var dess förmåga att använda ett grafikkort för att producera högkvalitativa 3D-renderingar och spara dem på disk nästan i realtid. AVisPar utvecklades också för att fungera, inte bara på de vanligaste kommersiella stationära operativsystemen utan även på vissa Linux-distributioner.

Eftersom Nzym kan generera webbplatser med webbtillgångar, allt inklusive HTML-sidor med JavaScript och CSS i dem, kan det beskrivas som multiplattform. Däremot, där Nzym genererar en ctlyst-fil, är det möjligt att köra filen på vilken plattform som helst som har en implementering av Nzym Console.

Hög prestanda

När det gäller ctlyst-filformatet är Nzym-konsolen utformad för att konvertera den direkt till maskinkod för den specifika CPU som applikationen körs på under körning. Filformatet är så passande uppkallat efter ordet katalysator som syftar på det som påskyndar en kemisk reaktion. I det här fallet kör dock Nzym Console ctlyst-filen, vilket gör att en miljö för programmet kan köras som vilken annan applikation som helst i systemet.

Den senaste implementeringen av Nzym och Nzym Console skapades med Rust och har hädanefter ärvt ytterligare högpresterande egenskaper från språket sedan Rust-kompilatorn kunde optimera koden för hastighet. Dessutom tillhandahåller Rust-standardbiblioteket ett antal effektiva algoritmer och datastrukturer som användes vid skapandet av den nuvarande versionen av Nzym. För att ge en kort beskrivning av vad detta betyder för Nzym-program:

  • Minnessäkerhet : Rusts ägarsystem säkerställer att minnet alltid hanteras korrekt, vilket kan förhindra minnesläckor och kraschar. Detta kan leda till betydande prestandaförbättringar, eftersom Nzym inte behöver lägga tid på att hantera minnet manuellt.
  • Effektivitet : Rusts kompilator är väldigt bra på att optimera kod för hastighet. Detta innebär att Nzym Console kan köra så snabbt som möjligt, även vid komplexa uppgifter.

Flertrådad

För att göra en imponerande kraftfull och interaktiv multimediaapplikation innebär det vanligtvis att det kommer att finnas ett behov av att kunna hantera interaktiv lyhördhet i realtid och bättre synkronisering mellan alla inblandade element. Detta kommer att innebära att applikationen måste kunna hantera flera processer samtidigt, vilket innebär flera trådar och samtidiga händelser som kan inträffa samtidigt.

AVisPar var ett unikt projekt för teamet på SM att arbeta med. Det möjliggjorde en hel del experiment i termer av hur man skapar de inblandade lösningarna, men det fanns ett stort problem som teamet stod inför och som handlade om att hantera samtidiga händelser. Den ursprungliga kodbasen för AVisPar hade skrivits i C++ tillsammans med några bibliotek från andra 3D-spelmotorer som Irrlicht som ingick. Speciellt 3D-spelmotorn Irrlicht hade en del multithreading-funktionalitet som var lätt att använda och anpassa för att köra olika processer på en enda maskin. Men genom att köra flera trådar i ett nätverk med olika processorer och grafikprocessorer inblandade, blev trådarna riktigt svåra och komplicerade att hantera.

C och C++ är konventionellt enkeltrådade och att använda vissa bibliotek för att skapa flera trådar resulterar i samma nackdelar som de flesta programmerare möter när de använder Java eller Objective C för att skapa flertrådade applikationer. Vanligtvis uppstår problem från komplexitet när det gäller att behöva ta reda på hur trådarna interagerar, prestandaproblem på grund av att operativsystemet byter mellan trådar om designen inte är noggrant gjord och i slutändan högre resursanvändning. Nzym å andra sidan använder sig av Rusts async/await-modell för samtidig kod när man skapar en ctlyst-fil. Nzym har dock också en reserv när det gäller att använda Web Workers, ungefär på samma sätt som JavaScript gör, genom att flera trådar kan konverteras till JavaScript för webbplatsprojekt och sedan dra nytta av den förbättrade prestanda, lyhördhet och skalbarhet som JavaScript-applikationer med flera trådar dra nytta av.

Dynamisk

Nzym är fortfarande utvecklat och i ständig utveckling. Den har utformats för att anpassa sig till ett redan ständigt utvecklande tekniskt landskap. Med den kontinuerliga utvecklingen och expansionen av Nzym-konsolen och dess implementeringar, kan Nzym bli det valda språket för att skapa applikationer för bärbara och mobila enheter, inklusive smartklockor och smartphones.

Från början av 2011, och under hela året fram till slutet av 2012, upplevde SM en ökning av antalet kunder som efterfrågade deras tjänster för att utveckla mobila applikationer åt dem. SM använde sig av Java för att skapa appar för den tidens smartphones som stödde Java, inklusive Android-telefoner som tog stora marknadsandelar vid den tiden. Problemet blev att koden för dessa plattformar, även om den var skriven på samma språk, var och kunde inte vara densamma. Den visuella presentationen var inte bärbar och funktionaliteten skiljde sig mycket åt, liksom biblioteken som användes i utvecklingen.

Java var en gång det vanligaste språket för att utveckla mobila språk men har tappat mark de senaste åren till nyare språk, som Kotlin och Swift. Huvudproblemen med Java var och förblir

  • Prestanda : Java är inte lika presterande som vissa av de nyare språken, vilket kan leda till långsammare appar.
  • Komplexitet : Java är ett komplext språk, vilket kan göra det svårt att lära sig och använda.
  • Fragmentering : Det finns många olika versioner av Java, vilket kan göra det svårt att utveckla appar som fungerar på alla enheter.

Medan Java fortfarande är populärt för att utveckla mobila applikationer, på grund av dess ekosystem av bibliotek och verktyg, stöd från många leverantörer och dess mognad, vinner nya språk mark. Med initiativet från Nzym att följa vägen och göra det enklare, bättre och snabbare att skapa och porta applikationer till så många enheter som möjligt med en enda kodbas som målet, är Nzym utan tvekan ett språk att titta på när det skjuter mot detta mål.


Slutsats

Nzym är ett nytt programmeringsspråk som är designat för att vara enkelt, elegant och kraftfullt. Medan det fortfarande är i sin linda, siktar det på att bli valet för programmerare som vill skapa objektorienterade medieapplikationer och webbplatser. I sin enkelhet tar det bort behovet av lockiga hängslen och citat för strängar och gör syntaxen mer enkel och direkt.

Aktuell utveckling

Nzyms ursprungliga implementeringsspråk var C++ men med uppkomsten och lanseringen av den första stabila utgåvan av Rust 1.0 2015, övergick Nzyms utveckling och produktion till det nya språket. Att välja ett språk som upprätthåller minnessäkerhet, utan att kräva användning av sophämtning eller referensräkning verkade vara ett utmärkt alternativ för ett språk som kommer att användas för att skapa kraftfulla medieapplikationer med hög prestanda och väldigt få buggar.

Framtida utveckling

Eftersom Nzym fortfarande är under utveckling finns det ett antal funktioner som är planerade för framtida releaser. Dessa funktioner inkluderar:
  • Förbyggda bibliotek för enklare och snabbare appskapande
  • Kraftfullare klasser och objekt
  • En bättre debugger
  • En enkel men mer användarvänlig IDE
Nzym är ett lovande nytt programmeringsspråk som har potential att bli ett populärt val för objektorienterad programmering. Det är ett bra val för programmerare som vill skapa enkla, eleganta och snabba applikationer, speciellt för olika plattformar inklusive mobil och internet. För mer information skicka ett e-postmeddelande till hello@nzym.org.
Tags
  • #Tech
Icon
THANK YOU

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