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

Infobip ❤️ Netokracijašta akvizicija znači za vas i za nas?

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.


Odgovori

Tvoja e-mail adresa neće biti objavljena.

Popularno

Karijere

Dejan Milošević: Istraživanje i rad na sebi sastavni su deo karijere svakog uspešnog developera

Prethodnih 20 godina Dejan Milošević radi u IT industriji, gde je imao priliku da se susretne sa različitim programskim jezicima i stručnim pozicijama. Sada je član kompanije HTEC, a on nam je otkrio kako je izgledala njegova karijera na 'tech' sceni i šta tačno podrazumeva pozicija Tech Excellence Specialist na kojoj trenutno radi.

Karijere

Kako je Miljan od pozicije praktikanta došao do posla softver inženjera u Microsoft razvojnom centru

Microsoft i ove godine organizuje plaćenu studentsku praksu u svom razvojnom centru, a svi zainteresovani studenti mogu da se prijave do 7. avgusta.

Najava

Najveća regionalna konferencija za programere ovog septembra u Zadru – vidimo se na Infobip Shift 2022!

Najveća konferencija za programere u ovom delu Evrope ponovo okuplja istaknute IT stručnjake, programere, startape i preduzetnike. Ovogodišnju Infobip Shift konferenciju obeležiće nikad bogatiji program i spektakularna produkcija.

Propustili ste

Najava

Najveća regionalna konferencija za programere ovog septembra u Zadru – vidimo se na Infobip Shift 2022!

Najveća konferencija za programere u ovom delu Evrope ponovo okuplja istaknute IT stručnjake, programere, startape i preduzetnike. Ovogodišnju Infobip Shift konferenciju obeležiće nikad bogatiji program i spektakularna produkcija.

Startapi i poslovanje

Samo i Iza prodali su ‘Talking Tom’ i u Srbiji započeli poljoprivrednu revoluciju – održiva proizvodnja hrane njihov je životni cilj

U ekskluzivnom intervjuu za Netokraciju, Samo Login otkriva kako je od prodaje slovenačke kompanije Outfit7 došao do fondacije koja se u Srbiji bavi čistim vazduhom, čistom vodom, očuvanjem resursa i održivom poljoprivredom.

Office Talks Podcast

Demagog sa dva nova naslova osvaja tržište indie igara

Razvoj video igara u Srbiji ima sve veći značaj na globalnoj sceni. Tom prilikom smo u 105. epizodi Office Talks podkasta ugostili beogradski Demagog studio čija je video igra Golf Club Wasteland do sada zabeležila značajne rezultate na AppStore i Google Play prodavnicama.

Tehnologija

IT Srbija od ‘outsourcinga’ do vodeće zemlje za razvoj digitalnih proizvoda i usluga

O razvoju i rastu domaće IT industrije govorimo već nekoliko godina unazad. Prethodne dve, bile su najintenzivnije kada je reč o ovoj grani koja ima značajan udeo u domaćem BDP-u. Kako godine prolaze, informaciona i tehnološka industrija u Srbiji započela je put napretka od 'outsourcinga' do kompanija koje razvijaju zahtevne proizvode.

Gaming

Epic Games kreće sa izgradnjom kampusa u Novom Sadu

Kompanije Epic Games i 3Lateral najavljuju početak izgradnje svog kampusa nadomak Univerzitetskog centra, u Radničkoj ulici u Novom Sadu. Reč je o savremenom R&D centru koji podržava razvoj hardverskih i softverskih rešenja koja omogućavaju kreiranje fotorealističnih digitalnih ljudi.

Intervju

Kako je platforma Native Teams stvorila uslove za uspešno i jednostavno ‘freelance’ poslovanje

Zahvaljujući Native Teams platformi, 'freelance' radnici imaju mogućnost da ostvare sve benefite onih koji su zaposleni 'za stalno', online ili putem mobilne aplikacije.