Zašto je Rust najvoljeniji programski jezik među developerima?

Zašto je Rust najvoljeniji programski jezik među developerima — razgovor sa programerom

Visoke performanse i bezbednost osobine su zbog kojih su mnogi programeri odlučili da pređu na Rust, a zbog svoje brzine ovaj programski jezik je u stanju da za veoma kratko vreme obradi velike količine podataka.

Prema ovogodišnjoj Stack Overflow analizi, Rust ulazi u sedmu godinu zaredom kao najvoljeniji programski jezik među developerima koji su imali priliku da se sa njim upoznaju, a čak 87% njih izjasnilo se da će nastaviti da ga koristi i u budućnosti.

Međutim, oni koji do sada nisu koristili Rust, mogu se zapitati šta ovaj programski jezik čini toliko posebnim. Na ovo, ali i na mnoga druga pitanja, odgovorio nam je Đorđe Pešić, Rust developer iz kompanije Ethernal.

Za početak, da li možeš da nam kažeš šta je tačno Rust programski jezik i čemu je namenjen? 

Đorđe: Rust je programski jezik opšte namene. Nastao je 2006. godine, kao lični projekat Grejdona Hoarea (Graydon Hoare), inženjera koji je radio u kompaniji Mozilla. Kako je vreme prolazilo, projekat je rastao da bi 2015. godine bila objavljena prva stabilna verzija 1.0.

Rust je vrlo brzo našao primenu u raznim ograncima industrije (blockchain, backend web, embedded, itd).

2021. godine osnovana je Rust fondacija čiji je cilj unapređenje ovog programskog jezika koji je u međuvremenu izazvao veliko interesovanje u svetu developera. Trenutno, Rust najviše koriste veliki cloud provajderi kao što je Amazon Web Services (AWS), a u okviru industrije vizualnih efekata i cyber bezbednosti. 

Rust fondacija konstantno povećava broj uticajnih članova, te su joj se pored Mozille i AWS-a, pridružili i tehnološki giganti kao što su Google, Meta, Microsoft, Arm i Huawei. 

Kako si odlučio da izučavaš baš ovaj programski jezik?

Đorđe: Od početka svoje karijere, pre nešto više od sedam godina, bavio sam se embedded C i C++ programiranjem. U poslednje dve godine, posao se sveo samo na C, pa sam u jednom krenuo da razmišljam o daljoj budućnosti, i zaključio sam da ne želim više da se bavim C-om.

U međuvremenu, C++ je dosta uznapredovao, što nisam ispratio. U istom trenutku se desilo da sam pričao sa kolegom koji se bavi Rust-om, i on mi je predstavio svoj posao. Nakon kratkog pregleda jezika i tržišta, Rust mi se učinio kao odlična alternativa za C i C++, kao i način da promenim domen, što dolazi kao osveženje u karijeri i proširivanje znanja i vidika.

Odlučio sam da pređem u blockchain domen, jer se u njemu Rust najviše koristi i, kako kaže statistika, veoma je tražen. Nakon kraćeg upoznavanja sa samim jezikom i blockchain tehnologijom, dobio sam priliku i da promenim posao i da počnem da radim u novoj oblasti.

Još jedan razlog da se odlučim za Rust je njegova ekspanzija u različite oblasti, što daje velike naznake da jezik neće zamreti, nego će nastaviti da se širi. Štaviše, počinje da se koristi i u embbedded programiranju, ali ta tranzicija je značajno sporija od ostalih, pa nisam želeo da čekam. Blockchain je veoma dinamična i izazovna oblast za učenje što mi donosi osveženje i motivaciju za daljim radom.

Na Elektrotehničkom fakultetu završio si osnovne, a potom i master studije. Da li ti je fakultet pružio predznanja iz oblasti Rust programiranja?

Đorđe: Nije. Na ETF-u se Rust ne izučava, a možda će se u budućnosti to promeniti.

Koje prednosti Rust nudi u odnosu na tri najpopularnija programska jezika: Python, C++ i Java?

Đorđe: Sa Pythonom ga ne bih poredio zato što to nisu programski jezici istog tipa. Python je interpretirani jezik, dinamički tipiziran, dok je Rust kompajliran, statički tipiziran jezik. Python ima druge domene upotrebe, koji ne spadaju u oblast mog interesovanja.

Što se tiče Jave, Rust i Java mogu biti konkurenti. Java ima prednost što ima integrisane elemente sa kojima se može razvijati grafički korisnički interfejs (GUI), dok Rust još uvek nema zvaničnu podršku za GUI. Po pitanju brzine, Rust je dominantan u odnosu na Javu.

Prema ovogodišnjem Stack Overflow istraživanju, Rust je najvoljeniji programski jezik među ispitanicima koji su imali priliku da ga upoznaju.

Što se tiče C++, on je od tradicionalnih jezika najjači konkurent Rust-u. Oba jezika imaju visok nivo apstrakcije i odlične performanse, oba se kompajliraju za konkretnu arhitekturu i performanse su dosta slične. Rust je bolji od C++ zato što je pisanje bezbednog koda uslovljeno dizajnom jezika, čime se otklanja mnoštvo bagova koji su standardno prisutni u C++ programima (loša upotreba memorije, bagovi u konkurentnim i distribuiranim programima, itd).

Mehanizmi koji su uvedeni u Rust da bi se ovo postiglo smanjuju fleksibilnost samog pisanja programa u odnosu na C++ (programer ne može baš da piše šta mu padne na pamet), ali to je mala cena za izbegavanje bagova, koji bi se inače jako teško reprodukovali i otklanjali.

U okviru ovog pitanja, pomenuo bih i C programski jezik. C je jezik niskog nivoa i još uvek dominira u embedded sistemima, pogotovo tamo gde su performanse kritične i resursi izuzetno ograničeni. Međutim, performanse Rust programa u potpunosti odgovaraju performansama C programa, s tim što je Rust kod daleko bezbedniji od C koda. U Rust-u se takođe mogu pisati programi za embedded sisteme, a sama činjenica da Rust polako ulazi u Linux kernel i u niske slojeve Android OS-a, govori sama za sebe.

Ne bih se usudio da kažem da će C i C++ izaći iz upotrebe zbog Rust-a, prvo zato što postoje jako dugo i što je mnogo softvera već napisano u ova dva jezika, a onda i zato što je C++ u aktivnom razvoju (za sada, nove verzije izlaze na svake dve godine, počev od 2011-te). Ali, u budućnosti Rust predstavlja izuzetno privlačnu alternativu.

Da li ti je bilo neophodno znanje iz nekog od navedenih programskih jezika da bi se upustio u izučavanje Rust-a?

Đorđe: Znanje C i C++ jezika bilo je izuzetno korisno i olakšalo je učenje. Ne bih rekao da je neophodno, ali smatram da je učenje Rust-a kao prvog programskog jezika prilično izazovan zadatak i daleko je lakše naučiti Rust ako se već zna neki drugi programski jezik kao i osnovni principi programiranja.

Rust nudi veću zaštitu podataka u odnosu na konkurentne jezike. Na koji način?

Đorđe: Način na koji Rust pruža zaštitu podataka je nešto što je jedinstveno za Rust. Da bi lakše objasnio, napraviću prvo osvrt na dva osnovna uslova korišćenja memorije u mainstream jezicima:

  • Memorija se oslobađa onda kada to programer želi. Ovako programer ima kontrolu nad memorijom, kao i odgovornost za pravilnu upotrebu. 
  • Nakon oslobađanja memorije, pokazivači na oslobođenu memoriju se više nikada ne smeju koristiti.

U ispunjavanju ovih uslova, jezici se obično svrstavaju u dve kategorije.

  • Bezbednost na prvom mestu: Ovde spadaju skoro svi moderni jezici (Python, JavaScript, Java, C#, i mnogi drugi) i oni koriste garbage collector za vođenje računa o memoriji, čime se programer lišava te odgovornosti. Cena za ovo su nešto lošije performanse, zato što je garbage collector poseban program koji uzima određene resurse računara, kao i nemanje kontrole nad memorijom. 
  • Kontrola na prvom mestu: Suprotan princip od prethodnog. Programeru se daje sva kontrola nad upravljanjem memorijom, čime se postižu bolje performanse, ali se i sva odgovornost za pravilnu upotrebu memorije ostavlja programeru. Ovde spadaju samo C i C++ od modernih jezika.

Dizajneri Rust-a bili su u situaciji da nijedan od gore navedenih kompromisa ne dolazi u obzir, jer su želeli da Rust bude i bezbedan i performativan, stoga su morali da unesu promene u nekim fundamentalnim principima.

Rešenje je jedinstveno za Rust i zapravo predstavlja glavni izazov prilikom učenja. To rešenje su restrikcije u upotrebi pokazivača. Uveden je čitav niz pravila koji ograničavaju programera, ali vode ka tome da kompajler garantuje ispravnu upotrebu memorije.

Rezultat je bezbedan kod, kome su očuvane performanse. Pokušaću da dam osnovni prikaz ovih pravila.

Prvo pravilo je da je svo oslobađanje memorije vezano za scope(doseg) važenja. Memorija koje je alocirana za neku promenljivu na apsolutno bilo koji način, biće oslobođena nakon izlaska iz opsega važenja promenljive vezane za tu memoriju. Ovim se izbacuje potreba za garbage collectorom i potreba da programer ručno oslobađa memoriju, iako mu je ta mogućnost ostavljena. 

Dalje, uvedeni su koncepti vlasništva (ownership) i provere pozajmljivanje (borrow checker).

Rust nudi bezbedan kod, očuvanih performansi.

Ilustrovaću ih na jednostavnim primerima.

let a=String::from(“Test”).

Promenljiva a ukazuje na, i postaje vlasnik stringa “Test”, koji je alociran u memoriji.

let b=a

Adresa stringa test se pomera u promenljivu b, čime promenljiva b postaje novi vlasnik stringa “Test”, dok promenljiva a postalje nevalidna, i više se kao takva ne može koristiti.

let c=a

Ova linija koda nije validna.

Borrow checkeer prati tokove upotrebe promenljivih i ako detektuje potencijalno nepravilnu upotrebu, program se neće kompajlirati. Jednostavan primer:

let x = vec![10, 20, 30]; // Niz brojeva, alociran u memoriji, čija se adresa nalazi u promenljivoj x.

if c {

f(x); // … promenljiva x se pomera u funkciju f, ona postaje novi vlasnik.

} else {

g(x); // … promenljiva x se pomera u funkciju g, ona postaje novi vlasnik.

}

h(x); // Nevalidno: promenljiva x je bila pomerena u neku od ove dve funkcije i više se ne može koristiti.

Primer kada će gore navedeni segment biti validan:

let x = vec![10, 20, 30]; // Niz brojeva.

if c {

f(&x); // … promenljiva x se pozajmljuje funkciji f.

} else {

g(&x); // … promenljiva x se pozajmljuje funkciji g.

}

h(x);// Segment je sada validan, jer je sve vreme promeljiva x ostala u vlasništvu ovog segmenta.

Još jedna veoma bitna osobina Rusta je multiple reader-single writer pristup memoriji preko pokazivača. Kompajler ne dozvoljava da se koristi više od jednog pokazivača na memoriju, u koju je dozvoljeno upisivanje.

Za memoriju iz koje je moguće samo čitanje, moguće je korišćenje više pokazivača za čitanje, ali nije moguće napraviti pokazivač preko koga bi se pisalo. Na ovaj način su eliminisana čitava klasa problema koja prati korišćenje podataka u konkurentnom programiranju.

Rust je u nekim aspektima čak 3 puta brži od Jave. Koji su to faktori koji utiču na brzinu ovog programskog jezika?

Đorđe: Zato što se Rust kompajlira direktno za konkretnu arhitekturu procesora, ne zahteva virtuelnu mašinu i nema garbage collector, dok se Java kompajlira u bajtkod, zahteva virtualnu mašinu (JVM) i ima garbage collector.

I za kraj, zašto misliš da su se tehnološki giganti priključili Rust fondaciji?

Đorđe: Moja pretpostavka je da oni koji koriste Rust, koriste ga zbog odličnih performansi, bezbednosti koda, manje podložnosti bagovima, kao i visokog nivoa apstrakcije koji ovaj programski jezik pruža.


Želiš da podeliš svoje mišljenje o ovoj temi? Komentari su otvoreni na našoj Facebook i LinkedIn stranici!

Popularno

Startapi i poslovanje

Startap Stomatopoda iz Srbije transformiše restorane u SAD — uz pomoć AI softvera!

Njihovo 'flagship' rešenje jeste SaaS proizvod aTavloa koji uz pomoć veštačke inteligencije analizira korisničko iskustvo čime omogućava ugostiteljima da budu uslužniji i efikasniji. U tekstu koji sledi, saznajte kako!

Intervju

Neubase olakšava online otvaranje firme u SAD-u za nerezidente uz prilagođene cene

Kompanija Neubase bavi se osnivanjem LLC preduzeća u SAD-u za nerezidente, sa posebnim fokusom na preduzetnike sa Balkana. Mi smo imali priliku da u velikom intervjuu razgovaramo sa osnivačima ove kompanije.

Office Talks Podcast

Da li je novi Hladni rat u toku?

Šta se dešava u odnosu SAD-a i Kine i da li se Rusija meša u izbore u Americi? Samo su neka od pitanja na koja smo dali odgovor u 187. epizodi Office Talks podkasta!

Propustili ste

Sponzorisano

NextSilicon razvija moćni čip za mnoge industrije i zapošljava nove IT stručnjake u Srbiji

Današnji svet počiva na hardverskim i softverskim sistemima i sigurno je da će budućnost modernog društva nastaviti da se bazira na sofisticiranim čipovima koji će pokretati globalnu industriju. Jedno od takvih rešenja razvija se i u Srbiji, tačnije u kompaniji NextSilicon.

Web 3.0

Druga ETH Belgrade konferencija: Srbija ponovo centar okupljanja Web3 zajednice

Nakon velikog uspeha prve konferencije održane 2023. godine, druga po redu konferencija ETH Belgrade će se održati od 3. do 5. juna 2024.

Ekskluzivno

TS Ventures uložio u Reputeo i Mindsmiths — vodeće regionalne AI startape

Srpski investicioni fond Telekom Ventures podržao je domaći Reputeo i hrvatski Mindsmiths, prepoznavši njihov potencijal za globalni rast na polju veštačke inteligencije.

Najava

Empple Festival ove godine odgovara na najvažnija pitanja employer brandinga

Četvrti po redu Empple Festival, koji okuplja stručnjake iz employer branding-a, TA-a, internih komunikacija i HR-a održaće se 3. i 4. oktobra u Madlenianumu.

Office Talks Podcast

Randevu.tech: Put od ETF-a do Berlina sa CEO-om Aleksandrom Orlićem

Gost 189. epizode Office Talks podkasta bio je Aleksandar Orlić, CEO i jedan od suosnivača startapa Randevu.tech. Sa njim razgovaramo o njegovoj karijeri u IT industriji ali i o tome koji proizvod tačno razvija pomenuti startap i za koje tržište.

Tehnologija

OTP Connect: €5.000 za pobedničko rešenje Junior m-bank aplikacije

OTP banka održala je finale prvog Izazova u okviru svog inovacionog ekosistema, OTP Connect, pod nazivom 'Kažeš inovacija, misliš aplikacija' namenjeno startap i IT kompanijama i timovima koji se bave različitim vrstama dizajna i razvojem mobilnih aplikacija.