Vi introducerar Nzym: En vitbok om programmeringsspråket som kommer att revolutionera multimedia
Published on 12 Aug 2023
Introduktion
Nzym syntax
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
- 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
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
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
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
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
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
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
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
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
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
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
Aktuell utveckling
Framtida utveckling
- 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