Biz Tech web portal powered by vidi logo2

Pregled dva nova programska jezika Istaknuto

  • Napisao/la  Nenad Crnko
Pregled dva nova programska jezika
Programski jezici: Zig i Mojo

Dva programska jezika za budućnost

Na početku svake kalendarske godine obično se donose predviđanja na različitim područjima ljudskog djelovanja. Programski jezici po tom pitanju nisu nikakav izuzetak. U prošlom broju časopisa osvrnuli smo se na to koji bi od već dobro poznatih programskih jezika mogli voditi glavnu riječ u 2026. godini. Ovaj put ćemo se malo detaljnije pozabaviti s dva relativno nova i slabo poznata jezika, ali s popriličnim potencijalom za širenje u 2026. i godinama iza nje.

Iako njihovi nazivi (Zig i Mojo) više djeluju kao nazivi patuljaka iz priča za malu djecu, odnosno kao nazivi svemiraca iz nekog SF uratka, riječ je o vrlo ozbiljnim, ali istovremeno dosta različitim proizvodima po svojoj namjeni. Premda nijedan od ovih programskih jezika trenutačno nije baš previše popularan među programerima, čini nam se da u njima ima „nečega“.

Prema istraživanju provedenom od strane dobro poznatog web foruma Stack OverFlow, Zig je nešto popularniji od programskog jezika Mojo (koristi ga 2,1% prema svega 0,4% sudionika ankete). Razloge za nešto veću popularnost sigurno treba tražiti u tome što je Zig nastao 2016. godine, a Mojo je predstavljen javnosti tek 2023. godine. Ono što im je slično jest to da oba alata imaju prilično veliki rast popularnosti među programerima. Glavni razlog zbog čega ih detaljnije opisujemo u ovom broju časopisa.

Slika01-zigmojo.jpg

https://survey.stackoverflow.co: Pregled popularnosti programskih jezika

Zig ( https://ziglang.org/ )

Zanimljivo je da Zig zapravo nije nastao kao svjesno pokrenuti projekt razvoja novog programskog jezika, nego prije kao nusproizvod sasvim drugačijeg projekta. Početna ideja njegovog autora Andrewa Kelleyja je u stvari bila razviti softver za upravljanje digitalnom radio stanicom, ali je tijekom procesa razvoja postao jako frustriran ograničenjima programskog jezika C. Zato je odlučio prvo razviti svoj vlastiti programski jezik (Zig), kako bi onda pomoću njega lakše dovršio glavni projekt. Tijekom rada na Zigu početni projekt je polako pao u drugi plan, a Andrew se potpuno posvetio razvoju novog programskog jezika.

Prva javna verzija programskog jezika objavljena je 8.2.2016. Kakve li slučajnosti – upravo na godišnjicu tog datuma, autor piše ovaj tekst! Danas o Zigu brine neprofitna organizacija Zig Software Foundation (ZSF). Trenutačna verzija jezika je 0.16.0 i može se besplatno preuzeti na vlastito računalo, pri čemu su podržani svi najpopularniji operativni sustavi (Windows, MacOS, Linux, FreeBSD i NetBSD). Zig je objavljen pod MIT licencom, što znači da ga možete slobodno koristiti, mijenjati i distribuirati (čak i u komercijalne svrhe) bez ikakvih naknada autoru ili spomenutoj organizaciji.

Na svaki od podržanih operativnih sustava Zig možete instalirati ručno tako da prvo preuzmete odgovarajuću kompresiranu datoteku, a onda izvršite njezino raspakiravanje te sve ostale neophodne naredbe. U nastavku ćemo se usredotočiti na operativni sustav Windows 11.

Slika02-zigmojo.jpg

https://ziglang.org/: Početna web adresa za programski jezik Zig

Najjednostavniji način da instalirate Zig na svoje Windows računalo je to da u terminal prozoru Windowsa (cmd) ukucate naredbu:

winget install -e --id zig.zig

Nakon toga će instalacijski program odraditi ostatak. Potrebno je još samo zatvoriti terminal, a onda ga ponovno pokrenuti kako bi sve postavke postale dostupne u novoj kopiji terminala.

Nakon pokretanja naredbe Zig u terminalu, programeru su na raspolaganju očekivani parametri potrebni za prevođenje Zig koda u izvršni oblik, odnosno njegovo izvođenje: build, build-exe, build-obj, run i slično, ali također i nešto manje očekivani parametri, koji zapravo predstavljaju vrlo pozitivno iznenađenje.

Slika03-zigmojo.jpg

winget install: Najjednostavniji oblik instalacije u Windows okruženju

Na primjer:

fmt – izvodi automatsko formatiranje programskog koda, tako da sav Zig kod bude međusobno što sličniji u pogledu strukture koda.
translate-c – prevodi postojeći programski kod u C-u u Zig.
cc, c++ – mijenja postojeći program prevoditelj za programske jezike C i C++ sa Zigovim programom za prevođenje (a on u sebi sadrži C/C++ prevoditelj).

Ovi i drugi slični parametri bitno olakšavaju integraciju postojećeg C/C++ koda u nove projekte gdje se planira korištenje Ziga. Ovo je ujedno jedan od najvećih pluseva Ziga koji može pomoći njegovom širenju, jer je - osim pisanja softvera ispočetka - olakšan nastavak održavanja i unapređivanja postojećeg softvera.

Zig se ne isporučuje s posebnim razvojnim sučeljem, što znači da programeri mogu koristiti sve na što su već prije navikli. Od vi kompatibilnih editora (Vim, gVim i slični) do najnovijih razvojnih okolina kao što je Microsoft Visual Studio Code.

Što je napravljeno „bolje“ u samom programskom jeziku? Zig nastoji biti što jednostavniji i transparentniji za korištenje od C/C++. To znači da ne postoje nekakve skrivene alokacije memorije ili skriveni pozivi funkcija, nego sve mora biti navedeno eksplicitno. Uveden je takozvani „comptime“ koncept koji omogućava izvršavanje običnog Zig koda tijekom prevođenja, što u konačnici dovodi do mogućnosti da se prilikom korištenja funkcija mogu koristiti različiti tipovi podataka, smanjuje se dio korištenih resursa, a uvjetno prevođenje moguće je bez potrebe nekakvih dodatnih alata izvan samog Ziga.

Slika04-zigmojo.jpg

Dostupni parametri: Osim samog prevođenja Zig koda, dostupno je više parametara za vezu prema C jeziku.

Na temelju navedenog moguće je pripremiti funkciju koja radi s različitim tipovima podataka:

const std = @import(“std”);

// Funkcija prima ‘T’ koji je tip (type) poznat u trenutku kompilacije
fn zbroji(comptime T: type, a: T, b: T) T {
return a + b;
}

pub fn main() void {
// 1. Korištenje s cijelim brojevima (i32)
const cijeli_broj = zbroji(i32, 5, 10);

// 2. Korištenje s decimalnim brojevima (f64)
const decimalni_broj = zbroji(f64, 3.14, 2.5);

std.debug.print(“Cijeli: {d}, Decimalni: {d}\n”, .{cijeli_broj, decimalni_broj});
}

Jedna od najzanimljivijih stvari i ujedno najvećih prednosti u cijeloj priči oko Ziga je to da možete prevoditi postojeći C/C++ kod u izvršni oblik (koji zbog prenosivosti Ziga radi na svim podržanim platformama), ili ga prvo pretvoriti u Zig kod, kako biste vidjeli razlike između programskih jezika, naučili novi, ili jednostavno nastavili razvoj u novom programskom jeziku. Pogledajmo kako to izgleda na primjeru. Krenimo od jednostavnog C koda za zapisivanje sadržaja u tekstualnu datoteku, pohranjenog u datoteku test.c. #include

<stdio.h></stdio.h>

int main() {
FILE *datoteka;

datoteka = fopen(“datoteka.txt”, “w”);

if (datoteka == NULL) {
perror(“Pogreška pri otvaranju datoteke”);
return 1;
}

fprintf(datoteka, “Prvi red.\n”);
fprintf(datoteka, “Drugi red.\n”);
fclose(datoteka);

printf(“Podaci su zapisani u datoteka.txt\n”);
return 0;
}

Za prevođenje C koda u izvršni oblik pomoću Ziga treba upisati sljedeće:

zig cc -lc test.c -o test.exe

Datoteka test.exe se sada može normalno izvesti na Windowsima i zapisati podatke u tekstualnu datoteku. U prethodnom primjeru, dio -lc je dodatak za povezivanje sa standardnim bibliotekama koje su sastavni dio samog Ziga. Ako taj dio oko povezivanja slučajno nije uspio, automatski će ga odraditi program za instalaciju.

Ako probate izvesti sljedeću naredbu, dobit ćete C kod pretvoren u Zig, pa možete provjeriti kako to izgleda. Zgodno, zar ne?

zig translate-c -lc -I . test.c > test.zig

Kao jedan od glavnih nedostataka Ziga mogli bismo spomenuti to što njegova online dokumentacija nije baš predviđena za učenje programiranja ispočetka za potpune početnike. Dokumentacija je prije svega usmjerena prema C/C++ programerima koji već znaju programirati u navedenim programskim jezicima, a zbog prednosti Ziga htjeli bi započeti koristiti novi programski jezik.

Mojo (https://www.modular.com/mojo)

Slično kao što je Zig planiran da bude unapređenje za programske jezike C/C++, tako bi Mojo trebao donijeti poboljšanje na drugom kraju spektra programskih jezika, a to je AI orijentirano programiranje. A tu danas u najvećoj mjeri dominira Python. Python je jedan od najjednostavnijih jezika za učenje, pa ga zato koristi i ogroman broj „neIT“ profesionalaca za svoje vlastite projekte. Nažalost, zbog svoje koncepcije, Python je ujedno jedan od najsporijih programskih jezika tijekom izvođenja, što predstavlja glavno područje za njegovo poboljšanje. Ujedno jedno od važnih poboljšanja koje donosi programski jezik Mojo.

Mojo je razvila tvrtka Modular Inc., koju su osnovali Chris Lattner (tvorac jezika Swift i LLVM-a) i Tim Davis. Mojo je jedan od najmlađih programskih jezika, jer se s njegovim razvojem započelo tek 2022., da bi prvo javno predstavljanje bilo održano u svibnju 2023. godine. Trenutačno je Mojo kao besplatna verzija dostupan za preuzimanje na operativne sustave Linux i macOS.

Slika05-zigmojo.jpg

https://www.modular.com/mojo : Programski jezik Mojo razvila je tvrtka Modular

Cijeli članak pročitajte na VidiLAB stranici: https://vidilab.com/teme/softverska-tema/7894-pregled-dva-nova-programska-jezika

na vrh članka

Više...

  • 1
  • 2
  • 3
Prev Next