Jestem studentem (już) 2 roku studiów informatycznych. W tym semestrze ponoć będę miał luzy. W zeszłym semestrze zrobiłem średniej wielkości (tak mi się wydaje) projekt w C++. Dużo się w ten sposób nauczyłem. Projektu nie skończyłem, ponieważ praca, która musiała być spożytkowana na refaktoryzację kodu, z poziomu początku semestru, zajęła by zbyt długo. Chciałbym jednak robić coś z czego ludzie będą korzystać, lub po prostu powiedzą "OK. Fajne", dlatego myślałem o Javie, a później środowisko Androida. Pytanie jest moje takie: nie lepiej skupić się na C++ do perfekcji i opanować np. OpenGL, czy nauka Javy? Dodam, że na czwartym semestrze obiorę sobie "specjalizację" w której będę miał Javę. Chciałbym nie przebyć tych studiów bez żadnej pracy, ale też aby później nauczony język mi się przydał. No i na koniec, takie ogólne pytanie: może inny język(Ruby, C#)?
A w czym chcesz potem pracować?
Trudno powiedzieć. Nie jestem przekonany, czy będę miał wybór tworzenia gier a aplikacji biznesowych, czy po prostu stricte użytkowych. Chcę natomiast myśleć co będzie za 3/4 lata.
OpenGL do perfekcji możesz się uczyć, jeśli chcesz pisać silnik lub modyfikować jakiś istniejący. Jeżeli zaś chcesz pracować przy produkcji gier, to zorientuj się jaki komercyjny silnik jest obecnie wykorzystywany w produkcjach i się go ucz :)
No i też jest opcja: czy chcesz pracować dla jakiegoś pracodawcy w wybranych przez niego technologiach, czy też chcesz na własną rękę tworzyć programy/aplikacje webowe i na nich zarabiać. Przy pierwszej opcji pewnie dobrze będzie pójść w Javę/C#. Przy drugiej masz pełną dowolność w wykorzystywanych technologiach, to się nazywa wolność :] Na C++ ostatnio nie widziałem zbyt wielu ofert, ale jedną dla Senior Developera C++ widziałem na kilkanaście tysięcy zł miesięcznie - nisza, już mało ludzi chce się babrać w niskopoziomowych językach :)
"Nisko poziomowych językach"... Nie wierzę w "otwarty" rynek programistów za kilka lat, chcę po prostu być "poszukiwany", przez pracodawców. Albo ja przedstawiłem źle pytanie, albo Wy je źle pojmujecie. Oto one (w innej wersji): Czy opłaca się uczyć Javy od podstaw, czy NIE TRACIĆ czasu i doskonalić się w C++.
Może i jestem młodszy, ale już poznałem świat na tyle by móc Ci powiedzieć byś uczył się programować, a nie uczył języków. Jak będziesz potrzebował to języka nauczysz się w tydzień, ale jak nie będziesz umiał programować to i tak to Ci nic nie da.
winerfresh napisał(a):
Jak będziesz potrzebował to języka nauczysz się w tydzień, ale jak nie będziesz umiał programować to i tak to Ci nic nie da.
Świecka prawda... ale trwanie przy jednym języku nie jest dobre. Aby dobrze nauczyć się programować trzeba poznać różne języki i technolgie, żeby wiedzieć, że pewne rzeczy da się zrobić zupełnie inaczej i że istnieją różnorakie narzędzia lepsze do jednych celów a gorsze do innych.
Java przede wszystkim różni się od C++ modelem zarządzania pamięci. Warto poznać choć jeden taki języka jak Java.
No dobra, dzięki.
Warto poznawać wszystko. Ja jeszcze studiów nie zacząłem (28 mam spotkanie pierwsze), ale trochę się bawiłem w różne języki (zwykłe i ezoteryczne) przez co mam różne pomysły na wykonanie jakiegoś zadania. Oczywiście, że trzeba próbować innych, a nie się alienować z jednym językiem, ale nikt nie wymaga pisania czegoś super. Warto np. spróbować napisać sobie coś na Androida, czy jakąś aplikację webową np. używając RoR'a, nawet jeśli w przyszłości chcesz pracować jako programista mikrokontrolerów.
KnockOut napisał(a):
" Czy opłaca się uczyć Javy od podstaw, czy NIE TRACIĆ czasu i doskonalić się w C++.
Moim zdaniem znajomość w jakimś stopniu C/C++ jest konieczna. Nie chodzi mi to o to, żeby w tym pracować czy pisać nie wiadomo, jak wielkie aplikacje, ale po to, żeby zrozumieć, jak działa programowanie od środka. Nauka C/C++ jest pod tym względem bardzo dobra, bo pokazuje to na konkretnych przykładach. Wiesz, co to adres zmiennej, jak działają wskaźniki, jak zachowuje się pamięć, jak zwalniać obiekty, itd. Jednym określeniem w C++ jesteś panem życia i śmierci.
Javy czy C# warto umieć, po to, żeby właśnie w tym pracować. Języki w pełni obiektowe, które głównie uczą budowania posługiwania się tymi obiektami, używania wzorców projektowych i tworzenia różnych wysokopoziomowych aplikacji. Czyli konkretów. Jednak te języki nie powiedzą Ci, jak działają programy "od dołu". Przykład - kiedy zaczynasz od Javy i słyszysz, że wszystko jest referencją, to zastanawiasz się co to jest referencja, albo w ogóle nad tym nie myślisz tylko klepiesz. To błąd, bo pojawiają się różne problemy, w których znajomość czegoś takiego jest potrzebna. Jednak większość książek czy kursów w necie tego nie opisuje, tylko o tym wspomina.
Jeśli chodzi o tą znajomość podstaw C/C++, to mam na myśli nie tylko zwykłego helloworlda i wiedza na temat pętli for. Podstawy to wskaźniki, referencje, po programowanie obiektowe i szablony. Warto znać też STL. Wtedy można powiedzieć, że zna się C++ w jakimś stopniu.
Podsumowując - ucz się Javy i kontynuuj naukę C++. W przyszłość pewnie przyda Ci się jeszcze nauka jakiegoś języka skryptowego.
Z języków które warto umieć:
- Podstawy C
- Podstawy Assemblera
- sh/csh lub PowerShell, zależy na jakim systemie działamy
- Jeden język skryptowy niezależny: Python/Ruby/Perl
- Jeden język skryptowy do rozszerzania innych aplikacji: JavaScript/Lua
- Jakiś język komercyjny: Java/Scala/C#
- Podstawy jakiegoś języka funkcyjnego, np. Haskell
- Jeszcze inne paradygmaty (jak np. logiczne)
Ja bym dorzucił, że warto się zapoznać z... Clipperem i VB albo Cobolem.... Czasem można pracując dodatkowo przy konserwacji istniejących aplikacji... albo przenoszenia ich na nowy język...