Czego się uczyć C++ czy Java?

Witam, aktualnie uczę się C++(jestem dopiero na klasach), ale myślę aby przestawić się na java lub uczyć się obu. Który język jest bardziej przyszłościowy i opłacalny? Chce się uczyć tak aby w przyszłości mieć z tego jak największe korzyści. Jak przeglądałam oferty pracy to nieco więcej było dla programisty java. I chyba raczej tak będzie, technologia mobilna się rozwija. Chyba zarobki są niemal identyczne. Co polecacie, i jak to wygląda za granicą? tak samo? Więcej ofert java? I ile trwa nauka języka Java? Gdzieś czytałam, że aby dobrze opanować C++ potrzeba ok.5 lat, java tyle samo czy dłużej?, a może krócej niż C++? Najbardziej proszę o opinie osób, które miały styczność z dwoma językami.

Jak popiszesz w c++ to do wejścia w java nie będzie dużo roboty. Podstawy warto znać, ale teraz większość i tak pisze w frameworkach, czy też językach wyższego poziomu :slight_smile:

Java. Nigdy nie kręciła mnie filozofia “Strać dwa lata na naukę trudnego, a potem przejdź do prostego i nie korzystaj ze wcześniejszych doświadczeń”.

Ja jednak polecę C++

I tak wszystko zależy od tego, w kierunku jakiego oprogramowania chcemy iść. Np. na Androida to oczywiście Java, ale Wiedźmina w niej nie robią :wink:

Python :wink:

Z C++ jest ten problem, że tam musisz myśleć o wszystkim, a nie po prostu pisać, z Javą jest ten problem, że jest kobyłą która w pewnym momencie staje się ociężała. Z Pythonem jest ten problem, że… z Pythonem nie ma (poważnych) problemów, a przynajmniej mi się w nim najlepiej pisze.

Jeśli Python ci się nie spodoba możesz zainteresować się też Ruby, podobno również przyjemny.

A pisałeś kiedyś naprawdę duży, rozproszony system, gdzie na każdej instancji wątków lata więcej niż tworzących go programistów? Przy odpowiedniej architekturze Java robi się wtedy ociężała, programiści pythonowi popełniają wtedy harakiri. Nie twierdzę przy tym, że Pythona nie warto znać. Przeciwnie - to kapitalny język do stosunkowo prostych zastosowań. Podobnie jak np. Ruby albo Groovy. Ale osobiście traktowałbym go jako (niezwykle przyjemne i w pewnych sytuacjach wydajne) narzędzie pomocnicze.

Teraz jest więcej ofert i więcej można zarobić w Javie. C++ nigdy już pod względem ilości ofert Javy nie przegoni, bo jest to język do zastosowań specjalnych. Jest też dużo trudniejszy do nauki, więc aby być w nim dobrym i dobrze zarabiać, trzeba poświęcić niewspółmiernie dużo czasu, no ale co kto lubi.

Co będzie za 5 lat, trudno powiedzieć. Wydaje mi się też, że niekoniecznie wiesz, czym jest Java, że jest to zarówno nauka języka, jak i platformy programistycznej. Jako język jest okropna, i już teraz są fajniejsze od niej języki.

Trzecia rzecz, że popełniasz błąd ucząc się programować mając jedynie motywację finansową. To się zazwyczaj nie udaje.

Są fajniejsze: Scala, Kotlin… Ale w wersji 8 lambdy dużo zmieniają. Gdyby tak jeszcze Dalvik działał na 8 wersji języka… Brak unsigned? Zauważyłem po 5 miesiącach kodzeniu. Brak operatorów? Jakbym o tym na jakimś forum nie przeczytał to bym nie wiedział. Przesiadka z C++ zajęła mi parę dni (razem z zapoznaniem się z bibliotekami).

W każdym razie: C++ nie umrze. C również - te języki pozostaną chyba już na zawsze “podstawą” ze względu na swój niski poziom (kompilacja bezpośrednio do assemblera) i obecną popularność, jednak pisanie w nich nie jest opłacalne w RAD, gdzie aplikację trzeba napisać szybko i ma działać (w miarę) szybko i stabilnie, w C++ możesz wybrać góra 2 z tych cech. Aplikacje w środowiskach typu Java są po prostu odporne na niektóre błędy (m.in wycieki pamięci) i są bardzo proste w debugowaniu.

W każdym razie znanie tylko C++ albo tylko Javy nie jest rozsądne.

A co zamiast tego?

Według mnie to aplikacje pisane w C++ są takimi f16 a w javie - czołgami przeciwlotniczymi. Niby ten czołg próbuje zestrzelić f16 ale odrzutowiec jest za szybki i w każej chwili może zniszczyć czołg. Czołg jest nowy, niedopracowany jeszcze. Za to F16 ma za sobą lata opracowywania tak zaawansowanej techniki, jest superszybki choć zbudować taki odrzutowiec może tylko wyszkolony zespół techników a nie 5 pierdzieli pracujących na ilość za miskę ryżu w chinach. Czołg żółtki zrobią w dzień a takie F16 to buduje wykwalifikowana kadra w kilka miesięcy ale jest to gwarancją wygranej :slight_smile: Widząc choćby co się dzieje z tymi minecraftami i innymi rzeczami w javie to aż się odechciewa.

Kolejna debata na temat który język programowania jest lepszy. Po raz kolejny dużo wypowiedzi które ze względu na osobiste upodobania będą promować taki lub inny język. Standardowo hasła że java jest wolna pisane przez ludzi tworzących aplikacje z gui gdzie nikt nie widzi różnicy 50 nanosekund. Prawda jest taka że wybór języka powinien być dokonywany tylko i wyłącznie na podstawie potrzeb biznesowych. Dodatkowo nikt zdaje się nie zauważać że programowanie to nie tylko sam język, a w głównej mierze umiejętność tworzenia gotowego produktu który spełnia wymagania strony biznesowej i zamyka się we wcześniej ustalonym budżecie. Języka programowania można się nauczyć w 2 tygodnie, otaczających go technologii w 1-6 miesięcy, a nauka jak stworzyć i rozwijać wysokiej jakości produkt pozbawiony regresji i długu technologicznego zajmuje co najmniej rok. Na chwile obecną nie mniej niż 50% czasu na projekcie poświęcam na kontrolowanie jakości kodu (zarówno swojego jak i kolegów), odpowiednie wersjonowanie, planowanie zmian architektonicznych, projektowanie nowych funkcjonalności, redukowanie długu technicznego i tworzenie odpowiednich testów automatycznych. Mimo tego wszystkiego rozwój projektu idzie 2 razy szybciej niż miało to miejsce przed wprowadzeniem tego typu usprawnień.

@brunetka2503

Nie patrz jeszcze na oferty pracy. Nauka programowania to przede wszystkim umiejętność logicznego i algorytmicznego myślenia, nie ważne w jakim języku będziesz to robić. Prędzej czy później języków będziesz znać kilka. Najpierw musisz opanować podstawowe pojęcia typu pętle, warunki, funkcje - zarówno w javie jak i w c++ będą one wyglądać niemalże identycznie. Na twoim miejscu jedynym kryterium którym bym się kierował jest znajomość języka angielskiego. Jeżeli znasz dobrze angielski zaczął bym od javy, znajdziesz po angielsku mnóstwo darmowych materiałów do nauki. Jeżeli nie znasz to łatwiej Ci będzie zaczynać od C++, z racji tego iż jest to język nauczany na każdej polskiej uczelni znajdziesz dużo wątków i materiałów po polsku.

Zawsze możesz też zacząć się uczyć obydwu języków jednocześnie, są bardzo podobne więc nie będzie konieczny duży nakład pracy, a po napisaniu kilkunastu programów będziesz mogła sama zdecydować który język bardziej Ci leży.

(tak naprawdę to jak nie znasz angielskiego to właśnie o tego języka polecałbym zaczynać :slight_smile: )

Zgadzam się z wami. Ponadto polecałbym uczyć się kilku języków programowania (nie na raz ale dziś c++, jutro umiem, pojutrze java itp.) bo nikt znając tylko jeden język nie odniósł sukcesu.

Java czy C++?

Jedno i drugie. Im więcej języków programowania znasz, tym łatwiej jest znaleźć pracę na rynku pracy. Dodatkowo, zyskujesz przy tym doświadczenie.

Wg mnie warto znać jedno i drugie. A potem skupić się na tym co będzie bardziej ci pasowało.

W rozmowie z panią od HR-u polskiego oddziału sporej formy informatycznej padło stwierdzenie, że jest wręcz przeciwnie. CV, gdzie młody człowiek chwali się dobrą znajomością kilku języków, z reguły ląduje w koszu. Firmy szukają nie ludzi znających podstawy pięciu różnych języków, ale kogoś, kto w danym narzeczu, z wykorzystaniem wskazanych narzędzi i bez ciągłego wgapiania się w tutoriale/StackOverflow sprawnie zaimplementuje wskazaną funkcjonalność. Wszechstronnie uzdolnieni mogą być hobbyści; programista C++ ma być ekspertem od C++, klepacz Javy ma być ekspertem od Javy.

Zgadzam się, ekspertem od wszystkiego być nie można. Ale jeżeli autorka tematu, brunetka2503, dopiero zaczyna naukę programowania od C++ to mogłaby przez jakiś czas uczyć się i jego jak i Javy. Doświadczenia nigdy za wiele :smiley: Potem po prostu wybierze to, co pasuje jej bardziej.

Ale z drugiej faktycznie bardziej skupiłbym się na Javie w jej wypadku. Daje moim zdaniem więcej możliwości, no i w moim odczuciu, wydaje się być wygodniejsza od C++ :slight_smile:

Tylko i wyłącznie Java. Zresztą tutaj ludzie wielokrotnie pisali, że teraz tylko urządzenia mobilne będą na Topie a więc Java :slight_smile: C++ powoli już idzie w zapomnienie :wink:

Może to uzasadnisz jakoś? Link do forum pełnego świeżych studenciaków jest mało wiarygodnym źródłem.

Znaczy internet się skończy, i aplikacje webowe nie będą już potrzebne, wszystkie wielkie firmy, które potrzebują ogromnych systemów informatycznych, też upadną i pracy w tym już nie będzie?

A mi się wydaje, że to programiści HTML5 i CSS3 także nie będą narzekać na brak ofert pracy. Ofert nie zabraknie też np. dla PHP-owców bo ludzie ciągle będą chcieć tworzyć strony www :slight_smile:

No bo robienie stron to tylko php…