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

Srpsko-američki Index Health osigurao dodatnih $3 miliona investicije za unapređenje proizvoda

Startap domaćeg osnivača Luke Ivićevića, Index Health iz Majamija, koji nudi usluge telemedicine zasnovane na personalizovanim podacima pacijenata, podigao je novih $3 miliona u 'seed' rundi investiranja.

Karijere

Borislav Vesnić: I game dev industrija u Srbiji se suočava sa otkazima, ali i dalje je u blagom porastu

Visoki porezi i nedostatak mentorstva u vođenju biznisa i dalje su glavni neprijatelji domaće gejming industrije, kaže Borislav Vesnić, jedan od osnivača Tricoman Studios. O tome, ali i o drugim izazovima (i dobrim stranama) njegovog preduzetničkog puta sa njim razgovaramo u intervjuu koji sledi.

Tehnologija

Mislav Malenica: Razvoj veštačke inteligencije nije uticao na otkaze u IT industriji

Mislav Malenica, osnivač AI startapa Mindsmiths i potpredsednik organizacije Cro AI, na ovogodišnjem Weekend Media Festivalu bio je jedan od panelista, a u intervjuu za Netokraciju objasnio je zašto veštačka inteligencija ne može zameniti ljude i kako takav stav štetno utiče na njen razvoj.

Propustili ste

Startapi i poslovanje

Srpsko-nemački randevu.tech zatvorio ‘pre-seed’ investiciju od € 325.000

ICT Hub Venture, TS Ventures Fond i Earlybird Vision Lab inkubator udruženo su investirali u randevu.tech - tehnološku kompaniju sa sedištem u Berlinu i Beogradu koja transformiše način na koje kompanije grade i razvijaju B2B marketplace rešenja i digitalne proizvode.

Office Talks Podcast

Stanje IT industrije i odnos programera prema HR-u

U 169. epizodi Office Talks podkasta sa Ivom Marinković (Smallpdf) i Anom Golobočanin (Daon), analiziramo trenutno stanje na IT tržištu kao i probleme sa kojima se susreću tehnološke kompanije.

Karijere

Popunite anketu o transparentnosti IT plata u Srbiji

Inicijativa "Anketa o platama - Transparentnost zarada u IT industriji" biće anonimna, a pokrenuta je sa ciljem unapređenja transparentnosti i otvorenosti unutar srpske IT zajednice.

Novost

Trickest lansira javnu verziju svoje platforme za orkestraciju security workflow-a

Trickest, startap koji posluje u domenu automatizacije cybersecurity procesa, lansirao je svima dostupnu verziju svoje platforme za orkestraciju security workflow-a.

Upoznajte poslodavce

STADA GIS Serbia ima tim od 150 ljudi u Beogradu i Vršcu – i trenutno traži nove kolege

Kako izgleda poslovanje u okviru kompanije STADA GIS Serbia? Otkrivamo u tekstu koji sledi.

Startapi i poslovanje

Sofascore ima preko 25 miliona aktivnih korisnika mesečno, a ljudi iz Srbije najviše prate košarku

Svi ljubitelji sporta ali i sportskog klađenja, gotovo sigurno imaju instaliranu aplikaciju Sofascore na svojim telefonima. O tome kako ovaj servis funkcioniše i kako izgleda poslovanje ove kompanije, razgovarali smo sa osnivačem Ivanom Bešlićem.