RUST - co fajnego można z tym zrobić?

RUST - co fajnego można z tym zrobić?
MrMadMatt
  • Rejestracja:ponad 9 lat
  • Ostatnio:5 dni
  • Postów:373
0

Cześć wszystkim.

Od jakiegoś czasu noszę się z zamiarem hobbistycznej nauki RUSTa. Chciałbym poszerzyć horyzonty i uciec w wolnym czasie od szarej codzienności w Javie. Stąd moje pytanie: czy ktoś z forumowiczów używał RUSTa? Jeśli tak to do czego? Szukałem po sieci informacji o pisaniu w RUST, restowych serwisów i jakiś bibliotek do gamedevu ale przyznam szczerze że materiałów jest niewiele, w porównaniu do Javy. Jak wygląda praca z tym językiem? Czy tak samo jak w przypadku C/C++ biblioteki trzeba budować ze źródeł pod wersję kompilatora (jeżeli jej nie ma na stronie dostawcy) czy może istnieje jakiś RUSTowy Maven? Co poza sterownikami można napisać w RUST?

Warto czy nie warto? Chętnie zapoznam się z opiniami.
Cheers.

PA
Nie znam się na rustcie, ale cargo jest dosyć mocno promowane w tutorialach, a to właśnie taki RUSTowy Maven.
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:4 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
1
MrMadMatt napisał(a):

Szukałem po sieci informacji o pisaniu w RUST, restowych serwisów i jakiś bibliotek do gamedevu ale przyznam szczerze że materiałów jest niewiele, w porównaniu do Javy.

w google dla zapytania rust rest api jest 4 miliony odpowiedzi. Tu jest porównanie frameworków do rest api.
Tutoriali będzie mniej niż do Javy bo język młodszy i ma jeszcze małe community


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
MrMadMatt
Hm faktycznie na rest jest sporo wyników, teraz tylko pytanie klucz: czy ktoś robił w tym i dał to na produkcję?
KamilAdam
Tego to już nie wiem :(
SI
Jest w Rust jakaś alternatywa dla C++ i Qt?
KA
Naprawdę istnieje programowanie poza web I rest...
Escanor16
  • Rejestracja:prawie 5 lat
  • Ostatnio:około 20 godzin
  • Postów:366
1

Rusta tak samo jak i Scale robili chyba na prochach i prochy są potrzebne by ogarnąć co się tam dzieje, wiem, że rust to w miare niskopoziomowy język do zastąpienia C++ no ale naprawde, musieli taką zawiłą składnie zrobić?


Nie chciałem być programistą jednak tego zechciał świat.
Zobacz pozostałe 15 komentarzy
PA
@nalik: przecież to było ogólne stwierdzenie, a nie atak na osobę. I przykro mi to mówić, ale twój wywód o niczym nie świadczy. W javie mógłbyś mówić - "Znam wiele osób, które postawione przy odpowiednich problemach uciekną się refleksji i będą miały w gdzieś poprawność, ważne by wyrobić się w terminie i by działało."
nalik
I tak narodziły się serwery aplikacyjne i springi :D Żarcik, nie siedzę w javie od dawna.
PA
@nalik: ale to świetna analogia - jeżeli chodzi o frameworki albo biblioteki, to taki unsafe albo refleksja są jak najbardziej ok. Jeżeli chodzi o kod biznesowy już nie.
nalik
Zgadzam się, tylko, że rust jest językiem systemowym, a więc potencjalne grono odbiorców zazwyczaj ma spore doświadczenie w c i c++, są przyzwyczajeni do manualnego zarządzania światem, a problemy nie są typowo aplikacyjne. Dla problemu aplikacyjnego nawet nie sięgnąłbym po rusta, tylko od razu po coś z gc albo arc. W każdym razie, pożyjemy, zobaczymy jaka bedzie adopcja języka w branży i czy coś zmieni.
KA
Polecam 3 części tego wywiadu https://youtu.be/h_TVcQwaKyE
nalik
  • Rejestracja:około 9 lat
  • Ostatnio:prawie 2 lata
  • Postów:1039
4
edytowany 1x, ostatnio: nalik
MrMadMatt
Dzięki za materiały ale pytanie brzmi: co Ci się udało z RUSTa urzeźbić?
nalik
Wszytko co w c, c++, czy nawet go. Rzeczywiście można do web-assembly kompilować: https://rustwasm.github.io/docs/book/ . Zajrzyj na 4 pozycje listy w poszukiwaniu bibliotek i inspiracji.
TS
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:394
0

Można zrobić todo listę w React.js i skompilować sobie to do wasm, a potem odpalić w przeglądarce i zastanawiać się jak to k*wa może działać.

Wibowit
zastanawiać się jak to k*wa może działać - eee, normalnie? z poziomu WASMa możesz uruchomić funkcje JSowe, chociaż parametry trzeba czasem serializować.
TS
Ech, i przyszedł pan maruda...
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:około 2 godziny
  • Postów:8398
2

Ja miałem się tego uczyć i jakieś HelloWorld zrobiłem, ale potem zapału i motywacji zabrakło.

MrMadMatt napisał(a):

Szukałem po sieci informacji o pisaniu w RUST, restowych serwisów i jakiś bibliotek do gamedevu

to widziałeś pewnie https://arewegameyet.rs/ ?

KamilAdam napisał(a):

Tutoriali będzie mniej niż do Javy bo język młodszy i ma jeszcze małe community

To akurat może być zaleta. Bo można nauczyć się tego Rusta i robić tutoriale, pisać artykuły czy dostarczać inną wartość (np. tooling), a za parę lat wyrobić sobie pozycję eksperta i status, jaki ma np. DHH w światku Ruby'owym.

A taki myk trudniej byłoby zrobić np. we frontendzie, gdzie masz od groma tutoriali i całą gromadę rozpoznawalnych ekspertów.

Tylko pytanie, czy Rust się wybije. Dla mnie to obiecujący język ze względu na możliwość zastosowania do WebAssembly (oraz do wieloplatformowości, żeby pisać apki, które się odpalą zarówno na stronie jak i na desktopie, zamiast w powolnym Electronie). Ale to jeden język? Przecież są inne języki, które się kompilują do WebAssembly. Przypuszczam, że to raczej WebAssembly będzie tym słowem mocy. Chcą z tego całą platformę uruchomieniową zrobić (niezależną od weba), coś na modłę JVM. A to rodzi kolejne zastosowania (sandboxing? Robienie wirtualek?).


edytowany 1x, ostatnio: LukeJL
Zobacz pozostałe 5 komentarzy
LukeJL
Nic nie może przecież wiecznie trwać.
LukeJL
i Python jeszcze jest na fali. Kiedyś to był niszowy język, a teraz jeden z najmodniejszych.
nalik
Python niszowy? Ja się pythona uczylem chyba w 2007-2008 i nie był niszowy. Chyba, że mówisz o ilości ofert pracy w PL
LukeJL
@nalik no właśnie o to chodzi, że mówiło się, że Python jest mało popularny w Polsce, więc nie wiadomo jak z pracą. Ale również wsparcie tego na serwerach, to były czasy, gdzie serwera z Pythonem trzeba było szukać specjalnie, bo wiele serwerów tylko PHP dawało.
nalik
O matko, pamiętam jak pisaliśmy projekt w diango, a hostingi to tylko dla PHP były :D. Kolega nam swoje "komercyjne" hosting przekonfigurował, abyśmy mogli wgrać nasz projekt.
SI
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Gdynia
  • Postów:5
1

W Rust możesz pisać gry które działają nawet na klawiaturze mechanicznej.

KA
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 2 lata
  • Postów:594
2
edytowany 1x, ostatnio: karsa
Zobacz pozostałe 11 komentarzy
nalik
Weź pod uwagę czasy, gdy owe systemy powstawały, czas potrzebny na osiągnięcie pełnej gotowości na produkcji i wpływ języka na ten czas. A także kadrę i doświadczenie jakie posiadasz. I tak google mógł sobie pozwolić na stworzenie bigtable w c++, ale już odtwórcy tworząc Hbase być może nie. Choć biorąc pod uwagę ponoć sporą bazę kodu Facebooka w c++, nie wiem czemu wybrali javę dla cassandry, pewnie było szybciej.
KA
Biorę pod uwagę czasy kiedy te systemy powstawały i imo już nie ma powodu pchać Javy wszędzie by później odprawiać taniec szamana ;)
nalik
Więc co byś użyła? Go? Też ma GC i też były problemy z tuningowaniem. O hakach w postaci balastów 10gb, aby oszukać GC nie wspomnę. Wszędzie rust? To dużu developerów trzeba edukować zupełnie od nowa. C++? Powodzenia, możliwe, ale kosztowne. Można tak dalej wyliczać, ale to zawsze jest jakiś kompromis. Jak działa, to niech sobie działa, lepiej nie ruszać. A w międzyczasie można tworzyć ulepszoną wersję.
KA
Go nie, nie jest ani wybitne ani nisko ani wysoko poziomowo. Poruszyles temat problemów organizacyjnych z którymi się zgadzam. Ale jednak to trochę inny temat niż techniczny. Ogólnie jest już mimo wszystko sporo alternatyw do javowych rzeczy. Powiedziałbym, że największy monopol ma Lucene ;)
purrll
  • Rejestracja:około 5 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Kuala Lumpur
  • Postów:241
3
MrMadMatt napisał(a):

Cześć wszystkim.

Od jakiegoś czasu noszę się z zamiarem hobbistycznej nauki RUSTa. Chciałbym poszerzyć horyzonty i uciec w wolnym czasie od szarej codzienności w Javie. Stąd moje pytanie: czy ktoś z forumowiczów używał RUSTa? Jeśli tak to do czego? Szukałem po sieci informacji o pisaniu w RUST, restowych serwisów i jakiś bibliotek do gamedevu ale przyznam szczerze że materiałów jest niewiele, w porównaniu do Javy.

Pisanie weba to sredni pomysl. Owszem mozna ale znajda sie przyjemniejsze klocki do budowy tak trywialnych rzeczy.
Mozna natomiast pisac w nim jakies uslugi sieciowe czy uslugi przetwarzania jakiejs konkretnej rzeczy, procesu, danych itd.
Jezeli dobrze zepniesz design to dostaniesz dobra wydajnosc moze nawet lepsza niz w innych klockach ale czesto kosztem sporo mniejszych zasobow.

Jak wygląda praca z tym językiem? Czy tak samo jak w przypadku C/C++ biblioteki trzeba budować ze źródeł pod wersję kompilatora (jeżeli jej nie ma na stronie dostawcy) czy może istnieje jakiś RUSTowy Maven?

Cargo. Dodatki zwa sie crates. Dodajesz je w pliku z dependencies, zapisujesz i przy budowaniu/uruchamianiu cargo samo dociaga co potrzebuje.
https://crates.io

Co poza sterownikami można napisać w RUST?

Teoretycznie jak w kazdym jezyku - wszystko. Jednak nie wszystko sie oplaci, bo wlozenie np. 50 linii w jezyku X da taki sam rezultat co wlozenie 150 w Rust.
Mozna pisac w tym systemy operacyjne Redox OS, mocno zasobozerne moduly, embedded, etc.

Warto czy nie warto? Chętnie zapoznam się z opiniami.

Tutaj masz moj post sprzed X czasu w ktorym opisalem swoj punkt widzenia https://4programmers.net/Forum/Inne/339229-w_jaka_strone_zmierza_rust?p=1673166#id1673166

btw. Jedna mała uwaga. To co napisał @karsa - nie ma się co oburzać gdy ktoś pisze co myśli i ma w tym 100% racji. Nie takie jest przeznaczenie tego języka. To, że można i ktoś tak zrobił nie oznacza, że jest to dobre ;-)


edytowany 1x, ostatnio: purrll
KA
Co do małej uwagi. Każdy robi co chce. Napisałem co myślę i tyle, każdy ma prawo się nie zgodzić, nie mam z tym problemu :) Każdy jest kowalem swojego losu ;) Aczkolwiek trzeba brać poprawke na to, że po prostu niewiele firm potrzebuje Rust i nie rozwiazuje tego rodzaju problemów.
SI
Tylko że Rust nie powstał do weba, w nim piszesz oprogramowanie typu desktop jak przeglądarki Firefox, edytory programistyczne, systemy mobilne - Fuchsia. Różne wydajne gry AAA w przyszłości prawdopodobnie zostaną napisane w Rust. Wydajne rozbudowane silniki do gier też z niego skorzystają (Liczę na jakiś open source Game Engine pod PS5). Jak sam wybredny Linus pozwolił dołączyć kod Rust do kernela Linux to wiedz, że coś się dzieje. https://www.phoronix.com/scan.php?page=news_item&px=July-2020-Highlights
KA
Ja się w pełni zgadzam
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około godziny
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4706
2

Bardzo fajny podcast w temacie https://open.spotify.com/episode/1rk8SRQTwwfY6bMaRawza4?si=utkCDA1FTW-uMXpNmZo-dw

Developer mozilli opisuje jak po audycie na kodzie C++ okazało się, że każde współdzielenie danych między wątkami miało jakiś błąd (mogący również wpłynąć na security).
I troche jak rust temu zapobiega.


jeden i pół terabajta powinno wystarczyć każdemu
nalik
Właśnie słucham do porannej kawki. Dzięki.
KA
Polecam też posłuchać Bryan Cantrill, nie tyle, że ciekawie mówi o Rust ostatnio to po prostu zawsze sie dobrze go słucha ;) CoRecursive ma fajne wywiady ogolnie.
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:około 2 godziny
  • Postów:8398
2

fajne wprowadzenie do Rusta, gdzie zamiast dogłębnego tutoriala piszą po prostu przykłady kodu z krótkim komentarzem:
https://fasterthanli.me/articles/a-half-hour-to-learn-rust

Wynika z tego, że Rust jest fajniejszy niż myślałem. Tj. pisząc w nim jakieś HelloWorldy, rysował mi się obraz "języka podobnego do C++, tylko że trochę bardziej nowoczesnego i z niesławnym borrow checkerem".

A z tych snippetów widzę, że to i do Ruby'ego jest podobne.
Np. bloki kodu mogą zwracać wartości (są wyrażeniem), ify też są wyrażeniem. Można robić destructuring krotek.

Nic dziwnego, że ludzie uważają to za cool język (chociaż podobno straszna hipsteroza tam jest. No ale generalnie technologie na literę R tak mają, że przyciągają dziwnych ludzi).


stivens
To co wymieniasz jest naturalne dla paradygmatu funkcyjnego, ktory Rust wspiera. C++ z FP to ma moze lambdy. I to brzydkie:)
LukeJL
@stivens to miło z jego strony, że wspiera. Jeszcze widzę, że Rust ma przyjazne błędy kompilatora, trochę jak Swift, że mówi ci, co masz źle(i czasem nawet sugeruje rozwiązanie!). I ogólnie podobna logika, co w Swifcie, tam były jakieś optionale(jeśli dobrze pamiętam?), tutaj też funkcje mogą zwrócić wartość niebezpośrednio, ale opakowaną w jakieś pudełko i trzeba je unwrap. To mi się z jakimś Haskellem kojarzy, ale ja się tam nie znam.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)