Wpis z mikrobloga

Znalazłem ciekawe badanie “Benefits and Drawbacks of Adopting a Secure Programming Language: Rust as a Case Study” z roku 2020 o Ruście. Ciekawa praca, próbuje odpowiedzieć na pytanie czym jest Rust, jakie ma cechy i dlaczego go generalnie lubimy, w sensie my programiści (a przynajmniej większość powinna). Na potrzeby tej pracy przeprowadzono ankietę wśród programistów Rusta (przynajmniej tak się określali w niej).

Odpowiadali na pytanie co im się podoba, a co nie, dlaczego Rust, jak z Rustem sprawa wygląda w firmach dla których pracują i wiele innych. Wszystko jest w treści pracy, 20 stron, ale nie ma nudy: https://obj.umiacs.umd.edu/securitypapers/Rust_as_a_Case_Study.pdf

Małe i uproszczone streszczenie z mojej strony - po więcej zachęcam do lektury zalinkowanej pracy wyżej.

Developerzy zgłaszają, ze lubią Rusta za wydajność, bezpieczeństwo oraz ogólne zaufanie do kodu, nie wiem czy dobrze to na polski biorę, ale generalnie chodzi o fakt, że jeśli już coś się skompiluje, to jest duża pewność poprawnego działania programu - chodzi oczywiście o brak niezdefiniowanych zachowań, niezrozumiałych padów aplikacji (np. panic), bo ktoś zapomniał błąd obsłużyć itp - sporo rzeczy weryfikuje nam kompilator. Oczywiście nie chodzi tu o błędy w logice biznesowej, typu, że zamiast sprawdzać czy mniejszy, sprawdzamy czy większy, bo nam się pomyliło i np. tracimy pieniądze. Przed tym Rust nas nie ochroni. :)
Ankietowi przyznali pozytywny wpływ pisania w Rust na development aplikacji, szybciej można wprowadzać poprawki, co do których jest duża pewność, że nie wywalą nam produkcji.
Mało tego - umiejętność pisania programów w Rust przekłada się na lepsze zrozumienie programowania ogólnie i pisanie lepszego kodu w innych językach programowania.

Wady? Krzywa uczenia, mówiąc krótko, to nie jest najprostszy język do nauki, a sama kwestia ownershipu i zaawansowanego systemu typów może (przynajmniej na początku) spędzać imigrantom z innych języków sen z powiek. Wciąż brakuje niektórych bibliotek w ekosystemie (praca jest z roku 2020 - zatem to już trochę “staroć” jak chodzi o świat rozwoju języków). Wśród wad oczywiście mała podaż programistów Rust, no i nieśmiertelny klasyk- nacisk biznesu, by szybko coś dostarczać, a nie “bawić się” w jakieś nowe języki, mimo iż, jak ankieta pokazuje, zalet biznesowych z użycia Rusta jest naprawdę sporo.

Także wiecie, rozumiecie, polecam naukę tego języka niezdecydowanym, jeśli nie dla zmiany pracy, to chociaż dla poprawienia umiejętności programowania w innych językach, bo sam po sobie zauważyłem, że to zmienia podejście (np. do obsługi błędów w #golang).

#programowanie #rustlang
  • 16
@devopsiarz: Spoko jeśli ktoś zamierza pisać niskopoziomowy kod - tam gdzie ważna jest wydajność, ale jeśli ktoś chce się po prostu nauczyć myśleć w nowy inny sposób niż się to robi w mainstreamowych językach to chyba lepiej wybrać haskella albo clojure.
@scriptkitty: coś tam sobie dziobałem w haskellu jakiś czas i nie wiem czy to dobry pomysł. Rust wydaje mi się zdecydowanie prostszy do nauki i nie wymusza "jedynego i słusznego" podejścia do wszystkich problemów. Oczywiście, sama nauka Haskella, też posiada swoje niezaprzeczalne benefity dla pisania w innych językach (imo).
@scriptkitty: Wydajność to jest tylko jedna z zalet Rusta, ale nie główna. Znacznie ważniejsze jest bezpieczeństwo i poprawność kodu.

Rust jest też znacznie bardziej wysokopoziomowy niż Java - przynajmniej ma porządne genericsy, makra, pattern-matching, do końca rozwiązaną sprawę nulli zamiast 3 protez, lepszą obsługę błędów, o wiele sensowniejszy system modułów / pakietów w którym package-private działa tak jak powinno, a nie tak jak w javie, lepiej rozwiązane sprawy formatowania i lintowania
Developerzy zgłaszają, ze lubią Rusta za wydajność, bezpieczeństwo oraz ogólne zaufanie do kodu, nie wiem czy dobrze to na polski biorę, ale generalnie chodzi o fakt, że jeśli już coś się skompiluje, to jest duża pewność poprawnego działania programu


@devopsiarz: jeszcze nie przeczytałem, ale mogę potwierdzić, że dla mnie to jego największa zaleta :)

@devopsiarz: Z czego się uczyłeś Rusta?


@olrajt: jeśli umiesz już programować (a raczej jest to
@devopsiarz: w korpo ten język jeszcze długo nie zagości. U mnie startował nowy projekt, taka systemowa aplikacja konsolowa, idealnie pod Rusta. Niechęć była od góry, przez architekta po większość programistów, którym nie chciało się nic nowego uczyć(nie chodzi tylko o składnie języka, ale strukturę projektu, toolchain, podział na biblioteki, testy, mockowanie).
@fnzavrjvrz: prawdopodobnie masz rację. Natomiast ciężko powiedzieć coś więcej apropo twojego przypadku. Architekt musi uwzględnić wiele spraw, nie tylko to, czy dany język lubi czy nie lubi. Jak lubi, to musi liczyć się z opinią zespołu, bo nie "zmusisz" zespołu do pisania w tym, czym lubisz, jeśli zespół oponuje, bo zespół Ci odejdzie. I dopiero będziesz miał.

Jak sam nie lubi, to ma ułatwione zadanie. Nawet jak ma stosunek obojętny i
@devopsiarz: Tak, Rust jest fajnym językiem. Przerobiłem oficjalny tutek, ale potem już trochę zapał opadł, bo nie mam nic ciekawego do zakodowania w tym języku. Najbardziej mi sie podoba model obiektowy z separacją structów i implementacji. Widze pewien potencjał w backendowych apkach biznesowych, ale obawiam się, że jednak to trochę overkill.
@fnzavrjvrz: Może jeszcze nie w średniej i małej wielkości firmach, ale w big tech Rust już zagościł na dobre ( ͡° ͜ʖ ͡°). G, Meta, Amazon mocno inwestują, a czy się chce czy nie, to oni jednak ustalają trendy. Powstało Rust Foundation, wsparcie w kernelu i w AOSP. A to tylko początek. :)
@poprostulogin: imo big tech to nie jest dobry przykład, bo w tego typu kolosach masz projekty w absolutnie każdej dostępnej technologii, superantycznej lub supernowoczesnej. Bardziej bym szukał metryki, czy nowe projekty w unicornach opierają się głównie na Ruście i czy ilość takich projektów wzrasta. Zupełnie czym innym jest bawić się w Rusta w jakimś zespole z FAANGa, gdzie nawet jak cały projekt zamkną i zespół zlikwidują, to nikt nie zauważy, a