several napisał(a)
Ktoś mądrzejszy ode mnie na tym forum napisał żeby nie mylić znajomości języka z umiejętnością programowania.
To chyba najczęściej ja tak narzekam na początkujących. Pytania typu 'czy jak się nauczę C++ to będę superprogramistą' padają regularnie. Programowanie to proces twórczy, język to tylko narzędzie. Z moich obserwacji wynika, że większość ludzi nie pracuje z językiem, od którego zaczynali (ja zresztą też nie).
przemo1722 napisał(a)
jednak wolałbym zająć się aplikacjami i programami
Aplikacje to programy... Fajnie by było gdybyś wiedział jakie programy chcesz faktycznie tworzyć, od tego zależy późniejszy wybór języków. Potrzebujesz czegoś, co działa niezawodnie całymi miesiącami bez restartu, z możliwością aktualizacji podczas pracy? To tutaj raczej języki pod kontrolą VM tylko w grę wchodzą, ze szczególnym uwzględnieniem tak dziwnego tworu jak Common Lisp. Może jednak coś bardzo mocno wpasowującego się w system operacyjny? C albo i assembler, zależnie od stopnia ingerencji.
przemo1722 napisał(a)
języki które muszę wykuć to C, C++ i C#, póki co.
Każdy z nich ma swój standard ISO, chcesz powiedzieć, że wkujesz te wszystkie ISO? Powodzenia ze standardem C++ ;] Poważniej mówiąc - nie wkujesz, języków się nie wkuwa. Jeżeli już to powinieneś zrozumieć filozofię i mechanikę języka, nauczyć się nim posługiwać, wykorzystywać mocne strony i unikać słabe. Nie ma miejsca na bezmyślne zapamiętywanie regułek. Nikt nie mówi, że musisz opanować akurat C(++) lub C#.
Na dobrą sprawę to powinieneś opanować C (lub coś innego pracującego na średnim poziomie, ale alternatywy za bardzo nie ma), potem jakiś język skryptowy, np. Pythona (ew. Ruby, byle nie Perla). Sporo softu można nim automatyzować (chociażby Interactive Disassembler...), może pracować w zastępstwie skryptów powłoki, jest przenośny, nie wymaga kompilacji itd. Generalnie zapewnia to, co język skryptowy zapewniać powinien - szybkość i łatwość tworzenia prostych narzędzi, przy tym elastyczność i spore możliwości.
przemo1722 napisał(a)
przeglądałem ostatnio ofert pracy i było mnóstwo tych języków C.
Nie wiem czy ktoś Cię już uświadomił, ale C# z C(++) ma wspólne jedynie 'C' w nazwie, klamerki w kodzie, ew. kilka nazw typów, których podobieństwo nie zawsze sprowadza się do czegoś więcej niż sama nazwa.
przemo1722 napisał(a)
Mam do studiów 1,5 roku więc jakby udało się je opanować dosyć dobrze było by super :)
co do dalszych będę zastanawiał się później :)
Zamiast skupiać się na językach powinieneś raczej położyć nacisk na znajomość różnych paradygmatów (przynajmniej na razie) i programowania jako takiego. Chcesz zacząć od języków w sumie typowo imperatywnych, wypadałoby się do tego nie ograniczać. Polecam coś funkcyjnego, jeżeli nie boisz się podejścia 'akademickiego' to nawet czysto funkcyjnego, Haskell. Z rzeczy bardziej przyjaznych programistom to Scala, mająca na tym forum małe kółko fanatycznych wyznawców. Język łączący programowanie obiektowe z funkcyjnym, oferujący bardzo wysoką abstrakcję i cholerną wręcz swobodę. Oczywiście wspomniane Python czy Ruby, nawet miejscami C#, oferuje wsparcie dla programowania funkcyjnego, jednak kładzie zbyt mały nacisk żeby faktycznie naturalnie umożliwiał opanowanie tego paradygmatu.
A może coś potencjalnie całkowicie bezużytecznego zawodowo i 'studyjnie'? Coś, co da faktyczne pojęcie o programowaniu? Scheme i przerobienie Structure and Interpretation of Computer Programs to ciekawa alternatywa na start. Chyba lepszej książki na początek nie spotkałem.
Nastawianie się na to, co może być na studiach albo przydać się w pracy nie ma sensu na tym etapie rozwoju.