4 razloga zašto učiti Rust u 2021. i kako se uz to dobro zabaviti

Rust se smatra kompleksnim jezikom s vrlo strmom krivuljom učenja. To je jedna strana medalje. S druge strane Rust je ispred ostalih programskih jezika u domeni user-friendly korisničkog okruženja

Rust je moderan programski jezik koji se fokusira na korištenje samo potrebnih podatkovnih struktura i performanse. Za razliku od drugih high-end programskih jezika, u njemu ne postoje “garbage kolektor”, niti virtualne mašine. Umjesto toga, Rust adresira dokumentirane probleme već poznatih jezika niže razine kao što su C ili C+. U isto vrijeme, programski jezik je poznat po strmoj krivulji učenja, što odbija mnoge developere da mu se ozbiljno posvete i koriste njegove funkcionalnosti. Mi vam želimo ponuditi četiri razloga zbog čega Rust, usprkos svojoj kompleksnosti, ima prednosti koje će učiniti vaš rad (i život) uz ovaj programski jezik prilično lakšim.

Rust: jezik niske razine s apstrakcijama preuzetima iz jezika visoke razine

Rust kao jezik niske razine vrlo je efikasan, te tako može funkcionirati bez “garbage kolektora”. I pored toga, nudi performanse jezika poput C i C+, ali bez zamki koje su od ranije poznate developerima u navedenim jezicima.

Autori programskog jezika Rust od samog početka željeli su izraditi jezik koji čini sistemsko programiranje sigurnijim i paralelnim (npr., simultano izvršavanje nekoliko računskih operacija, instrukcija ili naredbi). Paralelnost izvođenja i sigurnost bez grešaka događa se kada programski kod pristupi podacima kojima se ne treba pristupiti u tom trenutku.

Paket menadžer

Rust je jedan od nekolicine programskih jezika koji u sebi sadrži paket menadžer. Paket menadžer se naziva Cargo i cijenjen je među developerima zbog njegove relativne jednostavnosti korištenja. U kombinaciji s TOML koristi jednostavno razumljivu sintaksu koja se može brzo naučiti zahvaljujući preciznoj semantici.

[package]
name = "project"
version = "2.0"
authors = ["WeAreDevelopers"]
[dependencies]
image = "0.23.5"

Za razliku od JavaScripa, u Rustu developeri ne trebaju da se zamaraju postavkom “build” skripti, jer paket menadžer automatski kompajlira i povezuje biblioteke i programe. Produkcijski i razvojni “build” se ne mora zasebno konfigurirati u Rustu, a developeri koji u njemu rade ne moraju brinuti oko kompatibilnosti.

Činjenica da ne morate koristiti “build” skripte u Rustu ne znači da su one potpuno onemogućene. Naime, iste skripte se koriste kada se linkaju prema C ili C+ bibliotekama, te se po potrebi mogu prilagođavati. Cargo posjeduje integracijski unit i testiranje. U usporedbi sa drugim programskim jezicima u kojima su developerima na raspolaganju različita testna okruženja koja se zasebno moraju učiti, ovo predstavlja veliku prednost.

Kompajler

Rust kompajler vrlo je dobro zamišljen, te posjeduje brojne funkcionalnosti koje drugi kompajleri ne podržavaju. U jednu ruku, output je kolor-kodiran što značajno doprinosi njegovoj čitljivosti. Prikaz grešaka je vrlo detaljan jer kompajler prikazuje mnogo konteksta što znatno olakšava rad developerima pri traženju uzroka grešaka. U većini slučaja, Rust kompajler će pokazati što uzrokuje grešku i gdje se može pronaći uzrok – obilježavanjem relevantne linije koda i prikazivanjem direktno u terminalu uz brojna druga objašnjenja. U mnogim slučajevima ponudit će i rješenje za prepoznatu grešku. Ako to nije moguće, onda će u krajnjem slučaju predložiti komandu – rust — explain [error-code], koja se dalje može koristiti za prikazivanje daljnjih objašnjenja. Za razliku od drugih jezika, ova komanda ne prikazuje samo URL, već se dokumentacija otvara direktno u terminalu.

Dizajn programskog jezika

Rust je mlad programski jezik koji je dizajniran imajući u vidu današnje potrebe u programiranju – luksuz koji si mnogi drugi programski jezici ne mogu pripisati. Stari jezici kao C i C++ su vrlo kompleksni, pa su se moderne funkcionalnosti naknadno morale dodavati u proteklim godinama uz zadršku podrške za legacy kodom. Takva ostavština ne postoji u Rustu. Rust ima metode kao što su map (), filter () i find (), te dinamički Clojure dijalekt koji neodoljivo podsjeća na workflow koji možemo naći u JavaScriptu, radije nego u C++. Činjenica da programski jezik ima ovakve karakteristike je i više nego impresivna, znajući da može postići performanse C i C++.

Sigurnost na prvom mjestu kao princip koji se primjenjuje u Rustu u velikoj mjeri zagorčava život svima onima koji ga žele naučiti. Ipak, sve to se može sumirati u jednu pozitivnu sliku, te uzimajući u obzir zabrinutost developera, Rust forsira developere da obrate posebnu pažnju na zauzeće izvršne memorije. Ovo osobito utiče na strmu krivu učenja, ali istodobno omogućava da su aplikacije razvijene pod ovim programskim jezikom vrlo sigurne i nesklone bugovima, što naposljetku dovodi do što manje debuggiranja. Sigurnost memorije koju omogućava Rust jedan je od glavnih razloga za rastući interes programskih jezika koje podržava Mozilla.

Ne tako davno, u listopadu 2018, AWS je žestoko investirao u Rust. Prema posljednjim izvješćima, i Microsoft iskazuje veliki interes, što će uveliko doprinijeti njegovom ubrzanom razvoju, kao i korištenju u razvoju vlastitih produkata u budućnosti. Prema naznakama u internom blogu Microsoftovog sigurnosnog tima, preko 70% sigurnosnih problema kojima tim dodjeljuje CVE broj su direktno povezani sa sigurnosti uskladištenih podataka. Ako bi se koristili programski jezici kao što je Rust, takvi problemi vjerojatno se ne bi materijalizirali, zaključuje autor ovog bloga.

Želite li početi učiti Rust danas?

GitHub korisnik Dhghomon kreirao je repozitorij koji objašnjava osnovne koncepte programskog jezika, te u početnom stadiju korištenja nudi pomoć. Dhghomon navodi da Rust ima mnoge eksterne resurse za učenje ovog programskog jezika, ali da većina njih stvaraju poteškoće za sve one kojima engleski jezik nije materinji. Zbog toga su Rust developeri i lingvistički entuzijasti kreirali repozitorij Rust in easy English, gdje su dana pojašnjena o centralnim programskim konceptima jezika na jednostavnom engleskom.

Upute iz repozitorija se doimaju kao da su napisane od strane strpljivog kolege, koji će stajati iza vas i nadzirati svaki vaš korak. Preostaje nam samo još da se pitamo: Zašto nije dostupan za sve programske jezike?

Svi koji žele raditi s Rustom moraju razmisliti o memorijskim resursima. Pametni pokazivači i reference su praktično baza Rust memorijskog menadžmenta. Bilo tko da dolazi iz C++ programskog okruženja će se lako familijarizirati sa Rustom. Ukoliko dolazite iz Python ili JavaScript okruženja, vjerojatno će vam trebati nešto duže vrijeme da se upoznate sa konceptima. U konačnici dobiveni kod je “clean by default”. Sve dok se zabrinutosti oko memorije tiče, s Rustom imate potpunu kontrolu sa mnogo više sigurnosti u odnosu na C.

 

Ovaj tekst nastao je u suradnji s WeAreDevelopers, vodećom dev zajednicom u Europi. Želite li biti u tijeku s najnovijim dev trendovima slijedite ovaj link.

 

Thomas Limbüchler
WeAreDevelopers