Rust - impresii despre el

Ati folosit Rust?
Sau macar ati scris ceva linii in el?

La o prima vedere este inspirat din C/C++, dar cu focus pe memory safety, concurenta mai buna si mai usor de implementat. In Romania nu pare a fi popular(limbaj de nisa), in sensul ca nu am vazut locuri de munca unde se cere limbajul sau macar sa fie prin lista de nice to have. Nici pe Meetup nu am fasit grupuri.

Printre cele mai cunsocute proiecte in Rust ar fi:

  • Firefox. Nu in totalitate.
  • Firecracker un miniVM facut de Amazon. Am inteles ca in Romania este dezvoltarea
  • exa - inlocuitor pt ls
  • Microsoft Azure IoT Edge

Multe altele deasemenea.

Ca domenii, ei zic ca poate fi folosit pt:

  • CLI
  • WebAssembly
  • Networking
  • Embedded - o alternativa la C

Sintaxa nu mi se pare cea mai draguta, dar nici oribila.

// Create an `enum` to classify a web event. Note how both
// names and type information together specify the variant:
// `PageLoad != PageUnload` and `KeyPress(char) != Paste(String)`.
// Each is different and independent.
enum WebEvent {
    // An `enum` may either be `unit-like`,
    PageLoad,
    PageUnload,
    // like tuple structs,
    KeyPress(char),
    Paste(String),
    // or c-like structures.
    Click { x: i64, y: i64 },
}

// A function which takes a `WebEvent` enum as an argument and
// returns nothing.
fn inspect(event: WebEvent) {
    match event {
        WebEvent::PageLoad => println!("page loaded"),
        WebEvent::PageUnload => println!("page unloaded"),
        // Destructure `c` from inside the `enum`.
        WebEvent::KeyPress(c) => println!("pressed '{}'.", c),
        WebEvent::Paste(s) => println!("pasted \"{}\".", s),
        // Destructure `Click` into `x` and `y`.
        WebEvent::Click { x, y } => {
            println!("clicked at x={}, y={}.", x, y);
        },
    }
}

fn main() {
    let pressed = WebEvent::KeyPress('x');
    // `to_owned()` creates an owned `String` from a string slice.
    let pasted  = WebEvent::Paste("my text".to_owned());
    let click   = WebEvent::Click { x: 20, y: 80 };
    let load    = WebEvent::PageLoad;
    let unload  = WebEvent::PageUnload;

    inspect(pressed);
    inspect(pasted);
    inspect(click);
    inspect(load);
    inspect(unload);
}

O introducere blanda
https://stevedonovan.github.io/rust-gentle-intro/readme.html

PS: @IceRidder, ce aplicatii vrei sa faci in Rust?


Pe Windows se instaleaza sub CLI :smiley:

How else? :smiley: /unix-rant

Sintaxa da pare usoara, dar limbajul vine cu niste concepte diferite(ownership, borowing, lifetimes) fata de alte limbaje, care necesita exercitiu.
Initial vreau sa fac un mic web app (folosind actix-web, diesel si tera) standard, pe care ulterior sa invat wasm.

Astazi am inceput sa arunc o privire peste Rust. Am cumparat cartea asta https://www.amazon.co.uk/gp/product/1718500440/ref=ppx_yo_dt_b_asin_image_o00_s00?ie=UTF8&psc=1 ca sa incep.

Ce parere aveti despre Rust? Merita invatat?

1 Like

merita!
Are niste concepte interesante. Sunt cele enumerate de @IceRidder mai sus.

Nu stiu cat de cautat este in UK, dar in Romania nu il folosesc prea multi. Chiar si asa iti formeaza o anumita gandire. :slight_smile:

1 Like

Nu vreau sa-l invat pentru oportunitatea de a gasi un job related. Vreau mai mult sa invat si sa experimentez si alte limbaje ca sa-mi imbunatatesc asa cum zici si eu alt mod de gandire.

1 Like

Eu zic ca da. Mie imi place foarte mult limbajul, si cred ca e de viitor. Din pacate, in domeniul in care lucrez eu (machine learning), Python e folosit in proportie de 99.99%. :frowning:

1 Like

impresia mea e sa nu crezi marketing-ul chiar de la fellow devs, cei care l-au invatat normail ca o sa zica ca e foarte pt ca daca are adoptie skil-urile lor au demand, ce vreau sa zic e ca la noi cu televiziunile, nu au nici un interes sa te informeze corect, nu o sa iti zica ca downsides ca timpul foarte mare de compile pt un proiect mai serios, cred ca mai mare decat C++, sau faptul ca avatanjele nu conteaza, eg vrei mai multa viteza, foloseste mai multe servere mai degraba, cu rust iti i-a de 10 ori timp sa face ceva pt ca nu sunt librarii pt nimic.

1 Like

Vezi sa nu pici in capcana aia in care stii multe dar nu esti senior in nimic. Vei fi vesnic in competitie cu juniorii si la un moment dat nu o sa mai faci fata. Am vazut cazuri.

1 Like

Cred ca mai am ceva pana sa ajung senior.
Eu ma gandeam sa invat si alt limbaj de programare pe langa JavaScript si partea asta de front end. Vreau sa fiu mult mai familiar cu partea de backend si voiam sa aleg intre Rust si Go. Nu neaparat pentru ca sunt in trending (avem de gand sa invat Go de anul trecut, cumparasem si o carte pentru el dar am zis sa ma focusez mai mult pe JS si React). Si din cate am citit este mult mai usor sa le stapanesti decat C, C++, C#, Java parerea mea. Si plus ca este interesant sa inveti sa sa te pricepi la partea de memory management unde in JS, Python si Java nu trebuie sa-ti faci griji. In princpiu eu ma uit sa invat si sa inteleg si alte concepte decat cele cu care sunt destul de familiar pentru a-mi dezvolta modul de gandire atunci cand scriu ceva.

Ca incepator in Rust, in cateva ore am reusit sa fac un web scraper de 10x ori mai rapid decat unul scris in Python.

Libraria serde pentru serializare si deserializare de date e geniala, nu am mai vazut asa ceva in niciun alt limbaj de programare, e foarte concisa, foarte rapida si foarte puternica.

Deci Rust are destule librarii pentru multe chestii.

1 Like

m-am referit la librarii serioase, maintained, nu toy project-ul cuiva facut sa invete rust, care nu acopera edge case-uri si e abandonat in x luni. Asa e si in golang, de ex nu exista o librarie serioasa pt pdf-uri, doar unele facute asa, ca sa puna authorul pe cv ca stie golang.

1 Like

Eu zic ca este
https://unidoc.io/
Si cu suport comercial chiar

1 Like

Nu as spus nimeni ca este perfect, doar ca ceea ce incearca limbajul sa rezolve este:

https://msrc-blog.microsoft.com/2019/07/18/we-need-a-safer-systems-programming-language/

Orice companie mare ar da un compile time ceva mai mare(care nu mai este asa de mare cum era odata) pentru a reduce 70% din vulnerabilitati.

In alta ordine de idei AWS a angajat(apropo cauta si in romania link) cam tot ce se putea din echipa de rust, iar google munceste sa introduca rust in linux kernel (momentan il introduce in android Google Online Security Blog: Rust in the Linux kernel), unde pana acum singurul limbaj disponibil a fost C (nici macar C++).

In acelasi timp sunt curios (si mai era cineva la un momentdat pe aici cu aceeasi mentalitate ca tine) cum folosesti mai multe servere intr-o masina electrica sau poate chiar un avion(cough 737MAX cough). Trebuie sa se intealaga ca nu toata lumea isi permite sa mai adauge 4gb de ram ca e ieftin, sau sa punem clientul sa downladeze 50MB de ram pentru un amarat de site de prezentare.

Deci nu stiu ce sa spun despre aceste avantaje care nu conteaza.

2 Likes

Asa este, la sfarsitul zilei sunt 2 feluri de devi

  • cei care cauta o librarie pe net pentru left pad
  • programatori
1 Like

Daca te referi la embeded programming cred ca expunerea rust e foarte mica, posturile-ul pe care il citezi sunt content marketing, google/microsoft au tot interesul sa isi bage nasul peste tot, se cheama chasing the trend, adica vrajeala pt expunere, brand.

Nu conteaza avantajele pe care le zici tu deloc, ce conteaza e time to market, nu te plateste nimeni sa stai tu o saptamana sa reinventezi roata, in afara de firefox nici o companie nu are nimic serios un rust care sa arate commitment, si firefox se nu o duce bine.

Eu nu inteleg ce fumezi? Astea sunt joburile postate pentru romania:

Software Development Engineer - EC2 Nitro Enclaves
Graduate Software Dev Engineer - Bucharest
Junior Software Development Engineer - Firecracker
Software Development Engineer - Firecracker
Senior Software Development Engineer - Firecracker
Principal Software Engineer - AWS EC2 KaO

Cat despre time to market vs facut lucrurile cum trebuie:

  1. A report issued by the National Cyber Security Alliance, based on a Zogby Analytics survey of 1,008 small businesses with up to 500 employees, found that after suffering a data breach 10 percent went out of business, 25 percent had to file for bankruptcy and 37 percent experienced a financial loss. (link)
  2. Boeing 737MAX. Pentru cine stie, pentru a iesi cu avionul mai repede si mai ieftin pe piata, Beoing a ales sa rezolve o problema de hardware cu una de software (si aia implementata prost in india), drept urmare 2 avioane s-au prabusit iar custuri conform wikipedia sunt: Boeing estimated it would cost an additional $6.3 billion to produce the remaining 737 MAX program, $4 billion for “future abnormal costs” as production restarted, plus an estimated $8.3 billion for concessions and compensation to customers

Multi romani nu sunt capabili de o discutie inteligenta fara sa recurga la insulte, pierdere de vreme.

Pt Boeing 737MAX, parca tin minte ca a fost o problema de specificatii, care au fost gresite, si in india e taboo sa zici ca superiorul tau ca e gresit, nu are legatura cu rust, nu a fost un data race, poti sa faci software prost in orice limbaj, firefox e mai prost ca chrome in toate aspectele, performance, stabilitate, security etc, si mult e in rust.

Nu inseamna mare lucru ca companiile au proiecte de nisa, google are fucshia doar cu scopul de a retine senior enginers, si faptul ca angajeata in ro ar trebuie sa iti spuna ca nu e un proiect stategic, companiile serioase nu fac outsource la proiectele strategice / vitale.

O discutie inteligenta? Eu iti aduc argumente documentate si tu scoti din *** expresii de genul “posturile-ul pe care il citezi sunt content marketing” in conditiile in care in linkul respectiv toate joburile din ro sunt actual development? Ai avut curiozitatea macar sa deschizi linkul sau stii tu mai bine? Acuzi pierdere de vreme in conditiile astea, si tot tu te simt jignit ca te-am intrebat ce fumezi tinand cont de aberatia care ai scris-o?

Declari ca time to market este ceea ce conteaza. Contra argument iti prezint cazul Boeing, care ales time to market in locul solutiei safe, drept urmare a fost un dezastru, dar a trecut pe langa tine si imi replici ca firefox is bad si chrome is good.

Iti scriu ma sus ca google introduce rust in kernelul de android, da ma scuzi, android e doar un produs de nisa…

Nu mai are sens, cine vrea sa invete ceva nou si vrea sa se dezvolte are de unde alege, nu doar rust, pentru ceilalti, nu este nici o problema, inca sunt multe proiecte legacy care trebuie mentinute inca multi ani de acum incolo, la o adica sunt firme care inca folosesc cobol/fortran si chiar acum cateva luni am vorbit cu o companie care facea actionscript.

Dar nu e contra argument, time to market mai rapid, nu inseamna mai prost facut, Boeing nu a fost time to market fast, cheap to market, au mutat dev in india si aia au implementat orbeste specificatii gresite, si cazul nu are legatura cu limbajul, poti sa ai data races si in rust, oricum intr-un avion nu cred ca folosec thread-uri cu orice limbaj ar fi, ci process separate, tocmai ca sa nu ai data races.

android suporta si dart si, si kotlin si altele, nu inseamna mare lucru

Desigur, are de unde alege, sa invete cat vrea, dar tu zici ca Rust e cine stie ce limbaj, cu x avantaje, eu zic ca prea, dezavantajele sunt mai mari, mai bine folosesti python si algorithmii specifici de high performance faci in C++, asa functioneaza machine learning-ul.