• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przyszłość Rusta i czy Rust zastąpi C++

Aruba Cloud - Virtual Private Server VPS
+1 głos
271 wizyt
pytanie zadane 14 stycznia w Inne języki przez whiteman808 Gaduła (3,430 p.)
Jak w temacie, zastąpi ten język C++ lub chociaż C, czy raczej będzie funkcjonował obok tych dwóch języków? Jak Rust wypada pod kątem wydajności, wsparcia dla różnych platform, bezpieczeństwa kodu, dostępności bibliotek względem konkurencji? mam na myśli głównie C++, Go, Java, C#

Ma ten język przyszłość przed sobą? Co ciągnie ludzi do tego języka? Jak łatwo znaleźć zatrudnienie w Ruście i w jakich działkach IT chcą programistów Rusta?

Jak dobry jest Rust jeśli chodzi o gamedev, niskopoziomowe programowanie?

2 odpowiedzi

+2 głosów
odpowiedź 14 stycznia przez reaktywny Nałogowiec (46,230 p.)
edycja 14 stycznia przez reaktywny

Raczej (szybko) nie zastąpi, chyba, że w nowych projektach. Jest wiele działek gdzie nic nie zastąpi C++.

Rust jest bardziej odpowiedzią na C++ niż na C.

Z wydajnością idzie w parze z C++, tylko zapewnia większe bezpieczeństwo, trudniej jest napisać kod który będzie miał np. wycieki pamięci czy w programowaniu równoległym - kilka wątków w tym samym czasie będzie chciało zmienić wartość współdzielonej zmiennej (dojdzie do race conditions i wartość zmiennej będzie miała niepoprawną wartość). Bibliotek Rust jest znacznie mniej niż w C++ czy Pythonie, ale powoli się to zmienia. Najważniejsze już są.

Język Rust ma przyszłość, ale nie wiem czy branża programistów w kontekście AI ma jeszcze przyszłość, czy za parę lat to wszystko się nie skończy :( :(

Z pracą jest bardzo kiepsko w Rust. Ofert pracy jest bardzo mało, a jak są to ~3/4 dotyczy blockchainu i kryptografi. Raczej Rusta warto poznać jako kolejny język, nie ograniczać się tylko do Rust.

Do gier masz wiele silników, np. Bevy, Fyrox i wiele innych. Niektórzy żartują. że w Rust jest więcej silników do gier niż gier napisanych w Rust :)

 

Bevy i Fyrox są najpopularniejsze:

[ Bevy Engine ]
--> https://bevyengine.org/

[ Fyrox - A feature-rich game engine built in Rust ]
--> https://fyrox.rs/

Tu masz listę wszystkich silników:

[ Game Engines | Are we game yet? ]
--> https://arewegameyet.rs/ecosystem/engines/

 

KIlka gier już powstało w Rust, najciekawsza z tych co pamiętam to: Hydrofoil Generation

Hydrofoil Generation to realistyczny i ekscytujący symulator żeglowania oraz foilingu od niezależnych twórców z Jaxx Vane Studio. Jest to projekt zrodzony z pasji Stefano „kunosa” Casillo, współzałożyciela Kunos Simulazioni, znanego na całym świecie twórcy arcydzieła symulacji wyścigów – Assetto Corsa.

W Hydrofoil Generation zasiądziesz za sterami najnowocześniejszych cudów inżynierii odtworzonych z niespotykaną dokładnością – chodzi tu o żaglówki, które potrafią „unosić się” nad wodą z prędkością powyżej 50 węzłów. Przejmij kontrolę nad kursem, żaglami oraz, co najważniejsze, płatami wodnymi. Utrzymuj swoją łódź wysoko, aby zmaksymalizować prędkość, ale nie przesadzaj z tym, gdyż ryzykujesz tym ciężki upadek z pluskiem, a nawet coś gorszego – wywrócenie łodzi.

https://store.steampowered.com/app/1448820/Hydrofoil_Generation/

 

Na youtube:

[ Hydrofoil Generation - Official Launch Trailer - YouTube ]
--> https://www.youtube.com/watch?v=DAsQYDJlBfc

[ Hydrofoil Generation [PC] Debut Trailer - YouTube ]
--> https://www.youtube.com/watch?v=K_Jt1Vyj27k

[ Hydrofoil Generation Beta Racing - YouTube ]
--> https://www.youtube.com/watch?v=96sr17BLbSA

[ Hydrofoil Generation – How to takeoff in the Jx40 (Auto-Foils) - YouTube ]
--> https://www.youtube.com/watch?v=QP82w_pfMpc

[  Hydrofoil Generation | GamePlay PC - YouTube ]
--> https://www.youtube.com/watch?v=z_2n0ZDyy-k

 

–2 głosów
odpowiedź 14 stycznia przez WojAbuk Gaduła (3,000 p.)
C na pewno nie zastąpi. C++ raczej nie zastąpi. Będzie funkcjonować gdzieś obok.
W kwestii bezpieczeństwa większość języków z GC jest bezpieczniejsza od Rust, choć to jest raczej nie wielka różnica i z czasem będzie się zacierać. W wielu miejscach podaje się informacje że Rust jest bezpieczny, ale Rust jest bezpieczny pomimo braku GC, czyli Rust jest bezpieczniejszy od C++, ale mniej bezpieczny od Javy i Go.
Kwestia wydajność jest skomplikowana, ale przyjmijmy że jest tak samo wydajny jak C++, szybszy od Javy. W przypadku porównania z Go sprawa wygląda tak że to zależy od typu zadań. W kwestii wydajność mogę napisać że moim zdaniem Rust ma skopaną współbieżność i w aplikacjach wieloprocesorowy dla kogoś kto nie mam dużej wprawy w Rust może się okazać że Rust jest wolniejszy od Javy nie mówiąc o Erlangu czy Elixirze. Wiadomo to wynika z braku umiejętność programisty, ale to nie zmienia faktu że pisanie dobrego kodu wielowątkowego w Rust jest trudne.
W kwestii bibliotek to Rust moim zdaniem wypada dość słabo: C++ jako stary język ma ich dość sporo, Go jest łatwiejszym językiem o podobnym wieku, co też sprawia że ma większy ekosystem, Java ma olbrzymi ekosystem za sprawą androida i tego że to język który w zasadzie rozpropagował GC. C# którego ogólnie nie cierpię też ma lepszą dostępność bibliotek, choć tu trzeba przyznać że większość ekosystemu C# jest specyficzna dla Windows, co sprawia że prawdopodobnie na innych platformach Rust może wypaść nieznacznie lepiej.
Co do dostępność platform to C++ wypada lepiej, ale prawdopodobieństwo że gdzieś Rust nie będzie obsługiwany jest marginalne, Go wypada nieznacznie gorzej, bo ogólnie lista wpieranych praform dla Rust i Go jest ta sama, ale wiem że Go ma czasem przy próbie użycia na mikrokontrolerach i nie do konica działa. Nie wiem jak wygląda porównanie z Javą, ale wydaje mi się że jeszcze Java obsługuje więcej platforma. Jak chodzi o wieloplatformowość to C# zdecydowanie przegrywa z Rust.

Ogólnie przyjął bym że Rust doskonale radzi sobie tam gdzie masz aplikacje czasu prawdziwie rzeczywistego, a wszędzie indziej inne języki zapewne poradzą sobie lepiej. Gamedev to są aplikacje czasu prawdziwie rzeczywistego, więc Rust tu jest świetnym językiem, a co do programowania niskopoziomowego to należało by zdefiniować co masz na myśli, co to znaczy, bo w różnych niszach elektroniki/informatyki co innego to znaczy. Rust teoretycznie jest lepszy od Fortran w aplikacjach czasu prawdziwie rzeczywistego, ale o dziwo w systemach krytycznych czasu prawdziwie rzeczywistego z względów historycznych używa się Fortran. Co do przyszłość tego języka to trudno powiedzieć. Dużo tu zależy od rozwoju Mercurial, bo jeśli GC czasu kompilacji będą działać dobrze w bliskiej przyszłość to Rust idzie do kosza, a tak długo jak nie będą wystarczające do aplikacji czasu prawdziwie rzeczywistego Rust będzie się rozwijać.
komentarz 14 stycznia przez WojAbuk Gaduła (3,000 p.)
Napisał ktoś, kto postawił 13 kropek w dwóch zdaniach, a to są co najmniej 3 błędy interpunkcyjne. Nie wiem jak liczyć te błędy, ale naprawdę to się źle czyta.
Trafiłem na wyznawcę Rust, czy purystę ortograficznego który poprawia ludzi, a sam nie opanował interpunkcji która jest znacznie ważniejsza w komunikacji?
Nie wykluczam, że w mojej wypowiedzi są jakieś błędy ortograficzne, a jak masz na myśli jakieś błędy merytoryczne to wypadało by jakieś wskazać.
Spora część programistów Rust nie rozumie jakie skutki ma zastosowanie GC i zgaduje że błędy jakie widzisz są związane z tym, ale ich nie ma.
komentarz 14 stycznia przez reaktywny Nałogowiec (46,230 p.)

Ja przykładowo z tym się nie zgadzam:

Rust jest bezpieczniejszy od C++, ale mniej bezpieczny od Javy i Go.

Ale kolega @mokrowski będzie pewnie miał więcej uwag.

komentarz 15 stycznia przez WojAbuk Gaduła (3,000 p.)

@reaktywny, czyli uważasz że C++ jest bezpieczniejszy od Rust? C++ jest konsekwentny w założeniach związanych z bezpieczeństwem i nie daje fałszywych gwarancji, ale to już trochę przesada. Java to jeden z języków które mają formalnie zweryfikowane mechanizmy bezpieczeństwa.

komentarz 15 stycznia przez WojAbuk Gaduła (3,000 p.)

Czyli nie ma błędów. Twoje zarzuty są wokół precyzji językowej, która patrząc po twojej interpunkcji nie jest ci zbyt dobrze znana. Wybacz, ale nie myślę w języku angielskim i nigdy nie przyszło mi do głowy przyczepić się że ktoś używa mniej precyzyjnego języka niż w mojej dziadzienie niż francuski czy łacina gdy rozmowa tyczy się w języku polskim.
1. Kwestia typowo językowa i nie można nazwać jej błędem.
2. formalna weryfikacja (na przykład przy użyciu Coq) w przypadku Rust jest fatalnie udokumentowana i pod tym względem z popularnych języków przegrywa z: C, Java, Haskell i Ocaml; typy algebraiczne i owszem tu ma przewagę nad większością języków spoza rodziny ML, mechanizmy zbliżone do wyjątków, synchronizacja wątków… ale tu jedynie typy algebraiczne i możliwość formalnej weryfikacji daje Rust przewagę nad innymi językami. Przy czym nie wieżę że ktoś korzysta z formalnej weryfikacji w Rust.
3. Ciąg dalszy kwestii językowych. Pracujemy w innych niszach i to co ja rozumiem jako „systemy czasu prawdziwie rzeczywistego” to prawdopodobnie zbiorcza nazwa na to co nazwałeś Firm i Hard.
4. To jest jedna z dziedzin w której używa się Fortran. Ja będąc fizykiem teoretycznym mam głównie odczynia z tym zastosowaniem Fortran, ale choć by awionika stoi na Fortranie, a awionika to są systemy Hard według twojej nomenklatury.

komentarz 15 stycznia przez reaktywny Nałogowiec (46,230 p.)
Chyba pomyliłeś z kim rozmawiasz ;) OK, nie jest to ważne.

Nie mówię, że C++ jest bezpieczniejszy od Rusta (jest odwrotnie), nie zgadzam się z drugą częścią Twojego zdania (odnośnie Java i Golang). We wszystkich czterech językach można napisać kod który ma np. wycieki pamięci, ale Rust daje sporo zabezpieczeń i wymusza pisanie kodu tak aby tego uniknąć. Kiedyś memory leaks były dość powszechne w niektórych appkach w Javie / pod Androidem. Zastosowanie GC nie wyklucza w 100% pojawienia się wycieków pamięci (jest to rzadkie, ale jednak).
komentarz 15 stycznia przez WojAbuk Gaduła (3,000 p.)
Nie pomyliłem. Nie określiłeś z którą częścią zdania się nie zgadzasz, więc napisałem to trochę ironicznie.
Zgoda że nie wyklucza, ale by w Javie dochodziło do wycieków pamięci w pętli trzeba użyć słowa kluczowego native lub robić dziwne rzeczy z wątkami. Może coś jeszcze się znajdzie, ale nie teraz nie przychodzi mi do głowy żaden przykład bez użycia native i tworzenia olbrzymiej liczby wątków, który w Javie spowodował by wyciek pamięci pomijając tworzenie nieskończonej liczby plików. Owszem jeszcze są przykłady z użyciem słowa static, ale ciężko mi to nazwać wyciekami i nie spowoduje wycieku w pętli. Nie wiem jak w przypadku android, bo w przypadku androida używa się innej biblioteki standardowej i w androidzie może być gdzieś niezweryfikowane użycie słowa native.
W przypadku Rust w bibliotece standardowej często pojawia się unsafe, a o formalnej weryfikacji jak jak miało miejsce w OpenJDK już nie ma mowy, choć trzeba przyznać, że formalna weryfikacja nie obejmowała całej biblioteki i dotyczyła Javy 6 jak dobrze pamiętam, więc trochę się zmieniło od tego czasu.
komentarz 16 stycznia przez WojAbuk Gaduła (3,000 p.)
Ja w twojej wypowiedzi jest więcej błędów interpunkcyjnych niż zdań i piszesz o błędach których nie wskazujesz to się nie da nie wspomnieć od twojej interpunkcji.
To co napisałeś o Fortran pokazuje że masz wąską wąską perspektywę. W rożnych dziedzinach inżynierii używa się rożnych nomenklatur, co więcej często w ramach jednej dziedziny używa się różnych nomenklatur w różnych regionach.
To co robisz to narzucasz słownictwo z swojej niszy i regionu, a użycie innej uważasz za błąd. Błędem jest używanie że wszędzie używa się twojej nomenklatury.
Moimi głównymi zajęciami była telekomunikacja i fizyka. Twoje podejście jak byś pracował na styku energetyki i telekomunikacji prawdopodobnie doprowadziło by do katastrofy.
komentarz 16 stycznia przez mokrowski Mędrzec (158,200 p.)

@WojAbuk Zwracam Ci kolego uwagę że naruszasz standardy komunikacji tak w obszarze kultury wypowiedzi, jak i jej warstwy merytorycznej. Nie zamierzam kontynuować wymiany myśli na takim poziomie.

Podobne pytania

+1 głos
0 odpowiedzi 525 wizyt
pytanie zadane 20 listopada 2016 w Ogłoszenia, zlecenia przez Rubycom Początkujący (410 p.)
0 głosów
1 odpowiedź 248 wizyt
pytanie zadane 26 maja 2020 w Inne języki przez Arcturus Bywalec (2,370 p.)
+1 głos
0 odpowiedzi 285 wizyt
pytanie zadane 3 października 2019 w Inne języki przez reaktywny Nałogowiec (46,230 p.)

93,329 zapytań

142,323 odpowiedzi

322,400 komentarzy

62,662 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...