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

question-closed Jakim językiem programowania/technologią się zająć?

VPS Starter Arubacloud
+1 głos
572 wizyt
pytanie zadane 11 stycznia 2023 w Inne języki przez Mikołaj Pątkowski Użytkownik (530 p.)
zamknięte 12 lutego 2023 przez Mikołaj Pątkowski
Cześć,

Zastanawiam się, jakie kroki podjąć dalej w swoim rozwoju. Za mną pierwszy semestr studiów, na którym uczyłem się C, wcześniej miałem doczynienia z C++ i chciałbym zająć się czymś nowym, z czym mógłbym usiąść na dłużej i znaleźć pracę. Interesuje mnie backend, algorytmy i rozwiązywanie problemów w optymalny sposób. Chciałbym też coś w końcu "stworzyć", coś co nie będzie działało tylko w drugim terminalu. Na drugim semestrze będziemy mieć Javę, ale nie będzie to tak dobre nauczanie, po którym będę czuł się pewnie z moimi umiejętnościami (czyli będę musiał dużo włożyć od siebie, poza tym np. uczą nas najstarszych standardów i nie wiem czy dobrych praktyk kodowania). Z drugiej strony mógłbym spróbować z takimi językami jak Swift i Kotlin, ale w porównaniu z Javą ofer pracy jest na oko 5-10x mniej i obawiam się, że to większe ryzyko nie wiedząc, czy się będzie opłacało.

Czy ktoś bardziej doświadczony mógłby mi poradzić, jaką decyzję podjąć?
komentarz zamknięcia: Poszedłem za radą i zacząłem uczyć się Javy z książki Java Head First, uważam to za bardzo dobry wybór. Dzięki temu, że znam C bardzo łatwo przechodziło mi się przez pierwszą połowę książki, oprócz tego Java sama w sobie bardzo mi się podoba. Nie muszę aż tak bardzo myśleć jak technicznie rozwiązać problem, mogę bardziej skupić się na logice oraz dzięki wiedzy z C i C++ wiem, dlaczego coś działa. Dodatkowo Java podobno jest niesamowicie wszechstronną i szybkością dorównuje C (ale nie pamięciowo).
komentarz 5 lutego 2023 przez reaktywny Nałogowiec (42,080 p.)
Postawiłbym na pewniaki: JS/TS, PHP, Python, ew. później inne.

Warto w mojej ocenie znać przynajmniej 2-3 języki.

1 odpowiedź

+2 głosów
odpowiedź 11 stycznia 2023 przez Gynvael Coldwind Nałogowiec (29,930 p.)
wybrane 12 lutego 2023 przez Mikołaj Pątkowski
 
Najlepsza
Ogólnie to trochę wróżenie z fusów, ale kilka rzeczy do przemyślenia napisałem poniżej:

Z podobnych języków do C/C++ Rust wydaje się ostro nabierać popularności. Java do backendu jest używana przede wszystkim w dużych korpo. Swift chyba na backend w ogóle się nie używa, Kotlin prędzej.

Na backendzie Python jest całkiem popularny (choć o "optymalności" to sobie w Pythonie za dużo nie porozmawiamy póki co), JavaScript/TypeScript trochę go gonią z uwagi na node.js i podobne, i jest jeszcze PHP, który z jakiegoś powodu jeszcze jest używany.

Więc trochę kwestia co tam dalej chcesz robić w przyszłości. Jeśli interesuje Cię ściśle "backend, algorytmy i rozwiązywanie problemów w optymalny sposób", to brzmi jakby język był trochę drugorzędny vs algorytmika. W zasadzie musisz wymaksować SPOJa + przedmioty algorytmiczne + najlepiej architekturę oprogramowania, a potem szukać pracy w jakimś dużym korpo. Tam pewnie Java będzie dominująca, a C++/Rust w kolejce.

W mniejszych firmach stawiam bardziej na Python, PHP, JavaScript, C#, etc. No i tam będzie mniej problemów algorytmicznych do rozwiązania.

Weź też pod uwagę, że tworząc oprogramowanie to tych "ważnych optymalnych algorytmów" to jest tak 1% kodu (bardzo ważne 1% kodu, ale nadal 1%), a cała reszta to "okablowanie" + luźna logika korzystająca najczęściej z gotowych bibliotek. Więc do póki nie wyrobisz sobie opinii jako "algorytmiczny troubleshooter" w dużej firmie (albo jako konsultant), to musisz to 99% kodu też umieć dobrze naklepać.

Ostatecznie możesz spróbować każdy z tych języków przez powiedzmy tydzień czy dwa, a potem wybrać ten, który najbardziej do Ciebie przemawia i się na nim skupić przez dłuższy czas. W swojej karierze i tak będziesz języki zmieniał co jakiś czas, i pewnie dojdziesz do poziomu eksperckiego w przynajmniej kilku z nich (a potem je będziesz stopniowo odkładał i zapominał).
1
komentarz 5 lutego 2023 przez reaktywny Nałogowiec (42,080 p.)
edycja 5 lutego 2023 przez reaktywny

Pełna zgoda. 

Algorytmy są bardzo często wymagane (na lisćie wymagań w ofertach pracy), są b. często częścią interview, ale później w pracy stosunkowo rzadko się z nich korzysta w większosći branż / specjalnośći. Mało jest firm, gdzie chlebem powszednim są algorytmy, nawet w branży gier mało się z nich korzysta, chyba, że ktoś chce pracować przy kolejnym silniku do gier.

Oprócz Rust, podobny do C++ jest GoLang. Jest wiecej oczywiście podobnych, jezyk V, Zig i inne, ale te muszą poczekać aż się staną bardziej popularne.

W małych firmach, rzeczywiście głównie PHP i JS, a później długo nic i dopiero  reszta języków.

Z Pythonem jest problem, że tak na prawdę w web dev liczy się głównie Django, a dopiero powoli rozkręcają się inne frameworki (przede wszystkim FastAPI, a mniejszym stopniu Starlite, Sanic, Falcon i inne). Python to wciąż głównie DS / AI / ML / DL.

 

 

 

 

1
komentarz 9 marca 2023 przez cas3y Nowicjusz (100 p.)

@Gynvael Coldwind, Co sądzisz o V i Zig warto się ich uczyć? Podobają mi się ponieważ mają już takie nowoczesne pętle jak Swift i Kotlin.

komentarz 10 marca 2023 przez Gynvael Coldwind Nałogowiec (29,930 p.)
TBH nie mam o nich zielonego pojęcia, tj. jeszcze się w pracy zawodowej z nimi nie spotkałem.
komentarz 10 marca 2023 przez cas3y Nowicjusz (100 p.)
Możesz polecić jakiś tutorial na youtube do nauki nowoczesnego C23, znalazłem tylko 30 godzinny kurs C++20, a jest już C++23 i niebawem wychodzi C++26. Czyste C jest małe i wprowadzają mniej tych zmian jak w C++, większość sterowników do procesorów i kart graficznych jest pisane właśnie w tym języku. To dlaczego w ofertach pracy zawsze dominuje C++?
1
komentarz 10 marca 2023 przez Gynvael Coldwind Nałogowiec (29,930 p.)
Przy nauce C++ nie ma praktycznej różnicy czy się uczysz C++20 czy C++23, czy C++17. Ba, nawet C++13 nie będzie specjalnie zły. Różnic trochę jest, ale nie na poziomie podstawowym.

Ale przy okazji nie zaszkodzi przejrzeć https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines :)

Konkretnych tutoriali na YT niestety nie mogę polecić, bo nie mam w nich żadnego rozeznania.

 

Co do drugiego pytania – sterowniki są pisane w C ponieważ z uwagi na to, że niskopoziomowo obiektowość trochę miesza i przeszkadza. Do tego C++ ma pewien narzut obliczeniowy i pamięciowy jak się zaczyna korzystać np. z dziedziczenia (a w szczególności metod wirtualnych i wielokrotnego dziedziczenia). Da się pisać sterowniki w C++, ale trzeba trochę więcej wysiłku w to włożyć, a efekt nie zawsze będzie lepszy. Sterowniki / jądra systemów operacyjnych / firmware to dość specyficzny kawałek kodu generalnie.

Natomiast normalne aplikacje systemowe / desktopowe / serwerowe / gry / etc pisze się wygodniej w C++ niż w C. I z definicji tego rodzaju aplikacji będzie tworzonych jednak więcej niż kodu działającego w wysoce uprzywilejowanym trybie jądra. Stąd też więcej ofert będzie w C++ (a C będzie wspominane tylko przy sterownikach lub embedded).
komentarz 10 marca 2023 przez cas3y Nowicjusz (100 p.)
edycja 10 marca 2023 przez cas3y
Nie spotkałeś się z nimi, ale coś już tam w nich powstaje jak nowoczesne i wydajne silniki gier AAA.

https://github.com/michal-z/zig-gamedev

https://machengine.org/

https://www.youtube.com/@VLang
komentarz 10 marca 2023 przez Gynvael Coldwind Nałogowiec (29,930 p.)

 ale coś już tam w nich powstaje jak nowoczesne i wydajne silniki gier AAA.

Mógłbyś podać przykład gry AAA, która korzysta z V albo Zig?

komentarz 10 marca 2023 przez cas3y Nowicjusz (100 p.)
edycja 10 marca 2023 przez cas3y
Ale te języki są dopiero w wersji 0.11 i 0.3. Nie wiem dlaczego tak pytasz, skoro ja napisałem o silnikach gier, które dopiero co powstały i są ciągle ulepszane i rozbudowywane. Nie od razu Kraków zbudowano.

https://zig.news/samhattangady/writing-and-releasing-a-game-in-zig-13f3

W Rust też powstaje coraz więcej gier na silniku Bevy i nie tylko. https://veloren.net/

https://www.youtube.com/@Tantandev/videos

https://blog.logrocket.com/5-rust-game-engines-consider-next-project/

https://itch.io/games/made-with-rust

Także silnik gier Godot ma w planach dodanie nowych języków takich jak Zig.

https://github.com/Vivraan/godot-lang-support
komentarz 10 marca 2023 przez Gynvael Coldwind Nałogowiec (29,930 p.)
Pytam o to, bo napisałeś strikte o silnikach do gier AAA. "AAA" to jest ocena gry. Oceny gier są nadawane po ich premierze. Więc jeśli jest "silnik do gier AAA", to sugeruje, że wyszła już jakaś gra na tym silniku, która dostała ocenę "AAA" od recenzentów/publiki. Inaczej to nie za bardzo ma sens, bo pisanie "silnik do gier które może kiedyś jak już wyjdą dostaną topowe oceny" jest naciągane – może wyjdzie na tym silniku kiedyś jakaś gra która dostanie AAA, a może nie ;).

I tak, nie wątpię, że powstają w tych językach rzeczy. Hobbyści zazwyczaj są wczesnymi użytkownikami nowych języków. Natomiast te języki (poza Rustem) nadal są na etapie wczesnego rozwoju i czy będzie warto w nie wejść zawodowo zobaczymy kiedyś tam w przyszłości. Póki co np. na justjoinit nie znalazłem żadnego z nich, a w indeksie TIOBE najwyżej jest D (który ma sporo lat i bardzo niską adopcję) na top48 z wynikiem 0.16%.

Rust (TIOBE top19) natomiast cały czas nabiera rozpędu, i wydaje się być zaakceptowaną alternatywą dla C/C++. Go (TIOBE top10) też ma trochę fanów.

Uczyć się dla własnej przyjemności można oczywiście wszystkiego :) (do czego zresztą bardzo zachęcam)
komentarz 10 marca 2023 przez cas3y Nowicjusz (100 p.)
edycja 10 marca 2023 przez cas3y
Serio kierujesz się tym rankingiem tiobe sponsorowanym przez microsoft, gdzie w czołówce wymienia takie języki jak Visual Basic, Matlab, Delphi/Object Pascal, Scratch, Classic Visual Basic, Fortran? Zrozumiałbym RedMonk, PyPL, czy ranking Stackoverflow 2022, ale nie tiobe.

Rust wszedł już do mainstreamu i wybrali go do pisania systemu Unix.

Do C++ powstał jeszcze Carbon, CppFront i Circle - czyli taki kompilator dodający nowe funkcje do C++.

D miał być następcą C++ ale dodali GC i to się nie spodobało, do aplikacji backendowych też się nie nadaje, ponieważ jest zbyt duży i skomplikowany w porównaniu do Go czy Javy.
komentarz 10 marca 2023 przez Gynvael Coldwind Nałogowiec (29,930 p.)

Do luźnej dyskusji na forum TIOBE jest równie dobry jak każdy inny. Patrząc na szybko w StackOverflow 2022 w top40 widocznym na stronie nie ma w ogóle Zig/V/etc. Podobnie jak nie ma ich w PYPL w top28 widocznym na stronie. Podobnie jak w top20 w RedMonk. Więc obawiam się, że wybór rankingu zupełnie nie zmienia tego o czym pisałem, tj. że nie są to popularnie używane języki (co za tym idzie, trudno mi je polecić jako warte nauki w rozumieniu zawodowym). Czy staną się bardziej popularne to zobaczymy :)

Rust wszedł już do mainstreamu i wybrali go do pisania systemu Unix.

To natomiast musisz wytłumaczyć. Z tego co kojarzę system Unix powstał pod koniec lat '60 zeszłego wieku i jestem praktycznie pewien, że nie był pisany w Ruście ;)

Pewnie masz na myśli Redox, tj. ten hobbystyczy Unix-like system pisany w Rust. Z tego co kojarzę nie używa się go do niczego konkretnego.

Albo to, że pojawiło się niedawno wsparcie dla Rusta w kernelu Linuxa, co jest dobrym krokiem na przód imo.

Jak pisałem, Rust się dobrze przyjmuje.

komentarz 10 marca 2023 przez cas3y Nowicjusz (100 p.)
edycja 10 marca 2023 przez cas3y
Tak mam na myśli Redox i Linux znalazłem też ponad 20 hobbystycznych małych systemów napisanych w języku Rust. O ile wiem google pisało w nim system Fuchsia OS, a teraz raczej tworzą KataOS, jeden z programistów microsoftu też wspominał o tworzeniu nowego systemu operacyjnego w Rust o nazwie Verona, ale projekt chyba porzucono.
komentarz 10 marca 2023 przez Gynvael Coldwind Nałogowiec (29,930 p.)
Swoją drogą kiedyś MS miał fajny eksperymentalny OS/kernel w C# – https://en.wikipedia.org/wiki/Singularity_(operating_system) :)

Go powstał przed 2010 btw (ostatni raz kiedy w nim coś pisałem było pod koniec 2009 :D).

W każdym razie imo Rust jest niezłym wyborem jeśli chodzi o inwestycje czasu. Też go mam zresztą na swojej prywatnej liście do nauczenia się na już ;)

TS jest spoko jako iteracja JSa, chociaż w webie też by się przydał nowy język. Nie wiem natomiast na ile Dart jest używany faktycznie (który też imo jest iteracją JSa). Tj. wiem że w FuchsiaOS go do UI używaliśmy, ale kurcze też ostatni raz na niego patrzyłem koło 2011, chyba chwilę przed/po wyjściu.
komentarz 10 marca 2023 przez cas3y Nowicjusz (100 p.)
edycja 10 marca 2023 przez cas3y
Powstał też silnik gier Stride w C#, nie wiem jakie ma opóźnienia. https://www.stride3d.net/
Go to nie chcę.
https://bulldogjob.pl/readme/programistow-go-czeka-niemile-zaskoczenie

Podobne pytania

+1 głos
2 odpowiedzi 1,283 wizyt
+1 głos
2 odpowiedzi 460 wizyt
pytanie zadane 1 listopada 2020 w Sprawy forum przez Igorek Mądrala (6,290 p.)
–1 głos
1 odpowiedź 243 wizyt
pytanie zadane 24 maja 2017 w C i C++ przez wisnia123qwe Nowicjusz (160 p.)

92,951 zapytań

141,911 odpowiedzi

321,136 komentarzy

62,283 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 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...