Zarobki C++ vs Rust - z czego wynikaja roznice; dyskusja o przyszlosci Rust

1

Przegladajac rozne oferty pracy czy to na linkedin czy nofluff lub justjoin zaobserwowalem, ze kiedy glowny stack to Rust mozna zarobic znacznie lepsze pieniadze niz w C++ (oczywiscie nie liczac skrajnosci). Z czego to wynika?

Planuje rozszerzyc (w zasadzie juz to robie) swoj stack oprocz C++ (~12 lat exp) o Rust i z tym uderzac do projektow w przyszlosci. Oprocz oczywiscie kwestii zainteresowan i tego ze podoba mi sie ten jezyk, zastanawiam sie jak z nim bedzie w przyszlosci? Czy to chwilowa moda? C++ obecnie pod wzgledem rozwoju naprawde pedzi i ciezko nadazyc z ich tempem wprowadzania zmian. Jezyk jest juz niesamowicie skomplikowany, jednak wciaz wiekszosc programow w nim napisanych nie jest "well formed" pomimo zmian ktore wprowadzaja w przeciwienstwie do Rust. Jakis czas temu Mozilla skasowala sporo programistow Rusta ze swoich szeregow. Co sadzicie?

Kolejna sprawa, standaryzacja ISO. C++ jak wiemy jest standaryzowany w ISO, Rust obecnie nie. Czy to moze powstrzymywac duze korporacje do wejscia w Rust? Czy bedzie to tylko forma "zabawki" dla niepowaznych startupow wypelnionych mlodymi programistami pelnymi hypu na kolejna nowa technologie?

5
winuser napisał(a):

Kolejna sprawa, standaryzacja ISO. C++ jak wiemy jest standaryzowany w ISO, Rust obecnie nie. Czy to moze powstrzymywac duze korporacje do wejscia w Rust? Czy bedzie to tylko forma "zabawki" dla niepowaznych startupow wypelnionych mlodymi programistami pelnymi hypu na kolejna nowa technologie?

Czy jakiś inny język oprócz (C i C++) są standaryzowane ISO? Mnóstwo korporacji używa Javy, Kotlika, Scali a niektóre banki nawet Haskella. A nie słyszałem żeby jakiś z nich był standaryzowane przez ISO.
Taki standard może ma sens jak najpierw powstaje standard a potem kompilator. Jednak w większości znanych mi języków programowania jest na odwrót że najpierw powstaje implementacja referencyjna i do tego dokumentacja

UPDATE bo mi się zapomniało :D W przypadku Haskella faktycznie był wydawany standard (ale nie słyszałem żeby to był standard ISO) i kiedyś istniało wiele kompilatorów Haskella, ale obecnie GHC wyciął konkurencję XD Inne kompilatory Haskella np opisane są tu

1

Mało osób pracuje w Ruscie, więc jak ktoś już szuka programisty to ma problem przez co zarobki są duże. Do tego sam język jest po prostu trudny

Kolejna sprawa, standaryzacja ISO. C++ jak wiemy jest standaryzowany w ISO, Rust obecnie nie. Czy to moze powstrzymywac duze korporacje do wejscia w Rust? Czy bedzie to tylko forma "zabawki" dla niepowaznych startupow wypelnionych mlodymi programistami pelnymi hypu na kolejna nowa technologie?

ISO w C++ działa tak dobrze, że korporacje (Google) wycofują się z C++, bo jest za bardzo "standardowo". Duże korporacje już teraz mocno wchodzą w rozwój Rusta (na pewno Amazon, Microsoft i Google chyba też o ile dobrze pamiętam)

2

pan CEO z microsoft powiedział że oni będa wchodzi w rust itd. użył trochę karkołomnych stwierdzeń jak to że on wexmie świezych ludzi i przyuczy ich do rust i już będzie miał fachowców(tak w skrócie bo to napisał troche inaczej) bo w c++ tego by nie zrobił bo język za trudny.

Rust sie przyjmie ale ile lat zajmie budowa całego stacka w okół języka różne libki, sdk itd. nikt ci tego nie powie.

2

Niestety w swiecie Java nie orientuje sie, dlatego nie wiem czy byl standaryzowany.

Nawiazujac do niektorych komentarzy tutaj, co mnie osobiscie tez irytuje to zlozonosc. Wiele lat bylem wielkim wyznawca C++, jednak w pewnym momencie doszedlem do wniosku po ktoryms wywaleniu produkcji w firmie gdzie przykladamy niesamowita wage do bezpieczenstwa kodu - co my dostajemy w zamian? Piszemy czesto bardzo zlozony kod skladniowo, mlodym juniorom moze to imponowac, lecz przychodzi moment kiedy trzeba analizowac kolejny wyscig, deadlock lub UB i przestaje byc smiesznie.

Kiedy zaczalem kodowac w Rust mialem wrazenie momentami jakbym ogladal dobry film sci-fi, ktory pokazuje przyszlosc IT. Dodam, ze przeciez z C++ jestem w miare na biezaco z najnowszymi standardami, mimo tego jednak Rust mi zaimponowal.

0

Dużo znaczących firm i organizacji inwestuje zasoby w Rust, więc nie sądzę, żeby to była chwilowa moda.
tylko pytanie, co dalej?

Czy Rust zwycięży C++? Czy może i za 10 lat będzie niszowym językiem?

A obecnie ekosystem Rusta jest w takim stanie, że są biblioteki, ale dokumentacje często są szczątkowe, brak przykładów, wiedza poukrywana gdzieś tam po blogach, discordach itp. Wchodzenie w Rusta to eksperymentowanie. Więc to w zasadzie zwiększa próg wejścia. Bo o ile samego języka można się nauczyć, bo są materiały, to wchodzenie w libki, ekosystem, to kolejna sprawa.

Jak ktoś chce wejść dzisiaj w Rusta, to chyba najrozsądniejsze będzie od razu założyć bloga i dokumentować swoje postępy i co jak się robiło w której bibliotece. Dla siebie i dla innych.

1

Z moich doswiadczen wynika ze Rust ma znakomita wrecz dokumentacje. Poki co nie spotkalem sie jeszcze z opisanym problemem, mozesz podac przyklad?

Szczerze obawiam sie, ze troche skonczy jak jezyk D, ktory pare lat tem swietnie sie zapowiadal, rowniez mialem okazje go poznac, jednak ostatecznie dalem sobie spokoj, bo to taki C++ na lekkich sterydach z nieco poprawiona skladnia, jednak z wszystkimi innymi problemami z C++ wciaz nierozwiazanymi.

10

A obecnie ekosystem Rusta jest w takim stanie, że są biblioteki, ale dokumentacje często są szczątkowe, brak przykładów, wiedza poukrywana gdzieś tam po blogach, discordach itp.

Huh -- przecież Rust to jeden z niewielu języków, który do tego podszedł idealnie:

  • wbudowany menedżer pakietów, z centralnym repozytorium na https://crates.io,
  • wbudowany generator dokumentacji, z wersją online w https://docs.rs/,
  • wbudowane linty w stylu #[forbid(missing_docs)], które krzyczą o brakujące dokumentacje dla publicznych funkcji oraz struktur,
  • niemal wszystkie szeroko polecane, często wykorzystywane biblioteki mają idealną dokumentację (np. https://serde.rs do serializacji/deserializacji czy https://docs.rs/anyhow/1.0.66/anyhow/ do obsługi błędów),
  • wbudowana obsługa przykładowych kodów, które można insta-uruchomić za pomocą cargo run --example nazwa-przykładu,
  • język ma wbudowany mechanizm pisania przykładów, które są kompilowane (oraz uruchamiane) w trakcie budowania dokumentacji:
    struct Foo;
    
    impl Foo {
        /// foo-izes self
        ///
        /// # Example
        ///
        /// ```
        /// Foo.fooize();
        /// ```
        fn fooize(&self) {
            /* ... */
        }
    }
    

Oczywiście, że jakieś niszowe kratki dokumentacji posiadać nie będą lub będzie ona niepełna - ale mówienie, że dokumentacje często są szczątkowe jest imo zwyczajnie błędne :-P

2

Przeglądając oferty w pracy w Polsce dla Rusta to ich strasznie mało, pewnie w jakiś zagranicznych korpo bardziej popularny. Ludzie jednak go chyba lubią bo w tych ankietach np. ze stackoverflow zawsze jest jako top1 ulubionych języków, a np. w community pythonowców Rust jest ostatnio popularny jako inny używany język.

0

To prawda - ja celuje raczej w zagraniczne firmy fully remote. Widze raczej tylko taka opcje, lub kontraktornie. Polskie oddzialy duzych korpo z USA poki co nie wchodza w Rust jakos mocno.

2

Nie wiem, jak wygląda rynek C++, ale z mojego ograniczonego doświadczenia większość dobrze płatnych ofert w Ruście to niestety kryptowaluty, web3 albo inny blockchain. Stanowiska zajmujące się czymś bardziej "standardowym" płacą stawki porównywalne np. z Go.

0

Polski rynek Rusta nie istnieje a to dlaczego są takie różnice w zarobkach wynika z tego samego dla którego jest taka różnica w zarobkach pomiędzy Java a C++.

5

na early adopterów to się trochę spóźniliście, aczkolwiek nadal wszystko wskazuje że przyszłość Rusta jest bezpieczna

jaki inny język poza C i Rustem jest w kernelu? żaden, i pewnie przez następne 10-20 lat się nie pojawi nic nowego

głupotkami typu ISO to bym się nie przejmował, bo to prędzej wygląda jak na formalny sposób sabotaż języka

1
1a2b3c4d5e napisał(a):

na early adopterów to się trochę spóźniliście, aczkolwiek nadal wszystko wskazuje że przyszłość Rusta jest bezpieczna

Ale po co być early adopterem? Lepiej przyjść jak już jest technologia w miarę gotowa i już nabiera rozpędu, ale jeszcze nie jest mainstreamem.

Wydaje mi się, że Rust może być właśnie w tej fazie teraz.

5

@LukeJL:

bo w momencie stabilizacji będziesz już miał lata doświadczenia z daną tech? będziesz miał w rękawie taką kartę, że nie będziesz kimś kto tam pół roku wcześniej nauczył się Rusta, a doświadczonym soft. eng. z kilkoma latami expa znającym WTFy i inne takie Rusta.

i jest też moja osobista teoria, nie mam na nią żadnego potwierdzenia, możemy podyskutować, ale na ciekawe technologie raczej nie rzucają się pierwsze lepsze firmy klepiące crudy, a jacyś tam hobbyści, co może powodować że te początkowe oferty są ciekawsze? nie wiem.

1

Wlasnie takie zalozenie mi przyswieca, zeby za 2-3 lata byc juz gotowym i na poziomie zaawansowanym w Rust :)

Moje zdanie: W bliskiej perspektywie do 5 lat Rust na pewno nie zastapi C++, ale bedzie stopniowo wygryzal swoj kawalek tortu tak jak w przyszlosci bylo z innymi jezykami dzieki nowym frameworkom. Kiedys C++ byl niemalze uniwersalnym jezykiem "do wszystkiego", potem przyszedl Python, C# oraz inne, bardziej odpowiednie do konkretnych zadan i liczba zastosowan zmniejszyla sie, chociaz nie spowodowalo to, ze C++ zniknal z rynku. Swoja role odgrywa tutaj tez ociezalosc z wprowadzaniem nowych standardow. Tak naprawde postep w tym temacie w C++ mamy od okolo 10 lat, wczesniej nic sie nie dzialo, do wszystkiego niemalze uzywalo sie boosta. Teraz jest odwrotnie, nawet zbyt szybko wprowadzaja zmiany, jednak pewnych problemow nigdy nie rozwiaza, nawet w C++40, bo stoi to w sprzecznosci z tym czym jest C++.

C++ dalej bedzie istnial, tylko wedlug mnie jego marginalizacja bedzie postepowac, to kolejny kamyczek do tego stawu.

Dzisiaj nie znac C++ kiedy chce sie pracowac w pewnych obszarach IT to powazny problem, ale chyba w przyszlosci znajomosc wylacznie jego w rodzinie jezykow do tego zastosowania to tez bedzie potencjalny problem i ograniczenie stawki. Tak sadze.

5

Przeciętne zarobki często są wyższe w niszowych technologiach bo ciężej o programistę, który zna technologię na wystarczającym poziomie by pociągnąć biznes. Widać to też w innych językach jak cobol czy ocaml, w przeszłości było tak też ze scalą. Dla porównania średnie zarobki w JavaScript są dość niskie bo na rynku jest mnóstwo juniorów po bootcampach, ale fachowcy i tak zgarniają więcej niż przyzwoite pieniądze.

Obecna sytuacja zarobków C++ vs rust przypomina mi sytuację java vs scala z przeszłości. Jest jeszcze kwestia tego, że C++ ma dużo szersze domenowe zastosowanie przez długoletnią obecność na rynku będąc otwartą technologią nie skupioną wokół jednego podmiotu dostarczającego wzorcowej implementacji, każdy może sobie stworzyć kompilator na swoją platformę i zacząć robić biznes. W domenach, gdzie świetnie płacą w rust, świetnie również płaci się programistom C++.

Ty nie mniej zwiększanie umiejętności by lepiej być przygotowanym na sytuacje rynkowe jest jak najbardziej wskazane.

1

każdy może sobie stworzyć kompilator na swoją platformę i zacząć robić biznes

Ale ze kto tak niby robi? To jakies pojedyncze przypadki.

Zreszta z LLVM chyba jest podobnie?

0

Ale ze kto tak niby robi? To jakies pojedyncze przypadki.

Co? Chyba każdy współczesny mikro procesor 16bit i wyżej ma swój kompilator C/C++. Każda konsola ever, platformy dla RTOS, FPGA, super komputery, samoloty itd mają swoje własne kompilatory, choćby i nawet były to jakieś zmodyfikowane forki LLVMa, no ale wciąż. Statystyk nie prowadzę, ale strzelam, że byłaby to przynajmniej trzycyfrowa liczba. Rozwarstwienie domen w których programista C++ może znaleźć pracę jest ogromne, stąd i rozwarstwienie zarobków.

Z rust tak nie będzie, przynajmniej na razie bo w tej chwili panuje monokultura skupiona wokół jednego podmiotu, który produkuje referencyjną implementację. Tym nie mniej, jeśli rust pojawi się w kernelu to siłą rzeczy pojawi się na kilku platformach.

2
several napisał(a):

Każda konsola ever, platformy dla RTOS, FPGA, super komputery, samoloty itd mają swoje własne kompilatory, choćby i nawet były to jakieś zmodyfikowane forki LLVMa, no ale wciąż

Przecież kompilator Rusta też jest oparty na LLVM i Rust atakuje embedded. Pięć pierwszych linków z google dla embedded Rust:

Oczywiście nie jest to poziom C++, ale atak już jest rozpoczęty

4

No tak, zapomniałem, że jak nie dodam masy disclaimerów pisząc o rust w postaci w przyszłości się może zmienić albo dynamicznie się rozwija to ludzie zasypią mnie masą linków i będą czepiać się co drugiego słowa pomijając w ogóle główną argumentacje i kontekst by zrobić offtop. To, że napisałem, że rust warto poznać przez jakieś oznaki pojawiające się na rynku również zostało pominięte.

Pięć pierwszych linków z google dla embedded Rust:

A to ja dam tylko jeden https://doc.rust-lang.org/beta/rustc/platform-support.html gdzie jest napisane, że gwarancje działania masz na pięciu platformach czyli na 64/32bit linux, 64/32bit windows i 64bit macos. atak już jest rozpoczęty jest zupełnie nie znaczącym komentarzem w temacie rozmowy o różnicach zarobków pomiędzy C++ a rust, czego dotyczyła moja wypowiedź. Oczywiście może się to zmienić w przyszłości, ale dodawanie disclaimera do każdego zdania pisanego o rust jest strasznie męczące, prawie tak samo jak ludzie ciągle przypominający, że go nie dodałeś.

@stivens
Rozumiem, że czepiasz się słowa każdy w skrócie myślowym każdy może sobie zrobić kompilator i zacząć biznes. No faktycznie, nie każdy, ale na pewno nie są ani pojedyńcze ani rzadkie przypadki. Na każdą nie egzotyczną platformę możesz programować w C++ właśnie dzięki temu, że producent platformy dostarcza "swój" kompilator. Swój w cudzysłowie, bo czasem jest to update starego, czasem modyfikacja ogólnie dostępnego, a czasem autorski. Tym nie mniej jest to kompilator na tą konkretną platformę dostarczany przez vendora. Ilu obecnie masz vendorów dostarczających kompilatory rust?

Argument o rozwarstwieniu platform w tym temacie ma znaczenie, bo widełki płacowe dla programisty C++ FPGA w HFT będą zgoła inne niż dla programisty C++ w gamedev a jeszcze inne dla programisty C++ piszącego kod na RTOS. Zastosowanie rust ze względu na krótką ilość platform jest bardzo waskie i do tego widać go w domenach gdzie pisząc w jakimkolwiek języku możemy dobrze zarobić i to generalnie była moja argumentacja próbująca wytłumaczyć dlaczego porównując pierwsze lepsze ogłoszenia pracy w rust i C++ widzimy dużą korzyść na rzecz tego pierwszego. Nikt się do tego nie odniósł a na resztę offtopu to już nie zamierzam odpisywać.

1

Ale to w takim razie Tobie nie chodzi o to, ze vendorzy nie moga dostarczyc implementacji Rusta/LLVM na swoja platforme tylko o ze vendorzy tego nie robia. A to roznica.

No i przy okazji przeszlismy od kazdy do vendorzy.

0
several napisał(a):

A to ja dam tylko jeden https://doc.rust-lang.org/beta/rustc/platform-support.html gdzie jest napisane, że gwarancje działania masz na pięciu platformach czyli na 64/32bit linux, 64/32bit windows i 64bit macos. atak już jest rozpoczęty jest zupełnie nie znaczącym komentarzem w temacie rozmowy o różnicach zarobków pomiędzy C++ a rust, czego dotyczyła moja wypowiedź.

No, a jak to ma się do tych "swoich własnych kompilatorów"? Twórcy Clanga (opartego na LLVM) czy GCC dają ci pewność że jak sforkujesz ich produkt i przeportujesz na nową platformę to będzie to działąć?
No bo jeśli dobrze rozumiem to zaczeliśmy od tego że C++ jest wspaniały bo każdy może napisać własny kompilator tego języka. No ale czy ktoś mi da grarancje że to działa jak napiszę własny kompilator C++ lub sforkuje Clanga czy GCC? No pewnie nie. A jak sforkuje kompilator Rusta to też nikt mi nie da grawarcji że to działa. No to gdzie tu różnica? Gdzie tu wyższość C++?

1

https://twitter.com/dwizzzlemsft/status/1578532292662005760

dwrite font parsing ported to Rust? 😲😲😲

DWriteCore is the Windows App SDK implementation of DirectWrite (DirectWrite is the DirectX API for high-quality text rendering, resolution-independent outline fonts, and full Unicode text and layout support). DWriteCore is a form of DirectWrite that runs on versions of Windows down to Windows 10, version 1809 (10.0; Build 17763), and opens the door for you to use it cross-platform.

screenshot-20221026194650.png

0

Jest takie parcie na ten Rust, a nie widzę żadnych ofert pracy. Praktycznie nikt w nim nie pisze, tu na forum prawie zero tematów. Dlaczego ktoś tak silnie promuje ten język skoro ludzie w nim nie piszą?
Na stackoverflow co roku zdobywa podium jako najbardziej lubiany język, ale po faktycznych wynikach wcale tego nie widać. Ktoś tu kłamie, sztuczne nakręcanie popularności?

0

Praktycznie nikt w nim nie pisze, tu na forum prawie zero tematów

Po czym patrzysz na no flujobs a tam są oferty chociaż rust jako drugi język. A wiesz czemu na razie rust nie przebił c++ ofertami? bo najpierw na zachodzie musi urosnąć ten język i ma wsparcie np. microsoft. Tyle też że rust to nie javascript gdzie wrzucają go wszędzie a pewne zastosowania.
W Polsce tez się pisze, kolega pracuje w firmie co przechodzi w wielu projektach dla klientów na rust.

0
mondre napisał(a):

Jest takie parcie na ten Rust, a nie widzę żadnych ofert pracy. Praktycznie nikt w nim nie pisze, tu na forum prawie zero tematów. Dlaczego ktoś tak silnie promuje ten język skoro ludzie w nim nie piszą?

Na tym polega myk, że jest to głównie język hobbystyczny, więc ludzie w tym piszą dla własnej przyjemności, więc działa to na zasadzie fandomu.

Jednocześnie są solidne przesłanki za wdrażaniem Rusta w wielu działkach programowania, dlatego duże firmy to wspierają kasą.

1 użytkowników online, w tym zalogowanych: 0, gości: 1