Co dalej z moim programowaniem?

0

Witam! Zacząłem od Pascala, tylko podstawy poznałem, dalej poznałem i programowałem (programuję) ~1,5 roku (?). Swój poziom oceniam na średnio-zaawansowany. Umiem programować obiektowo i wiem, że jeszcze w czyichś kodach lub na stronach, niektórych rzeczy nie wiem. Następnie zacząłem uczyć się C# pod .NET 4.0. Programuję w nim już z 3 miesiące, ale nie sprawia on problemu, bo znam C++ i cały czas pogłębiam wiedzę o C#. Umiem pisać jako takie aplikacje w WinForms i XNA. Pytanie teraz takie: co dalej, uczyć się bardziej zaawansowanych rzeczy C++/C#, może jakiś nowy język, np. Python? Może zacząć pisać większe projekty, by mieć potem co zaprezentować itd. Mam 16 lat, przede mną liceum 3 letnie i studia inż + mgr, dalej chyba sobie odpuszczę, no ale zobaczymy dużo czasu mam. Ogólnie chciałbym iść w stronę GameDev i pisania aplikacji Desktopowych, ewentualnie Web i Mobile. Nie jestem jakoś wybitnie dobry z programowania, ale staram się umieć jak najwięcej. A więc proszę o rady dot. dalszej nauki programowania ww. języków (lub nowych) i tworzenia portfolio. Dodam, że wybrałem klasę mat-fiz-inf, nie oczekuję też, że nauczą mnie tam nie wiadomo czego. Studia - oczywiście informatyka, konkretny kierunek jeszcze dokładnie nie wiem. Z góry dziękuję.

PS: Nie wiem czy wątek powinien być w tym dziale (Społeczność) czy "Inne". W razie co, proszę o przeniesienie.

0

Ten wątek powinien być w koszu. Coraz więcej młodych programistów ma dylematy w swoim życiu, ale prawda jest taka, że nikt nie wskaże Ci tej właściwej drogi, bo zarówno każda może być dobra jak i zła. Kwestia zależna wyłącznie od twego gustu. Dlatego weź nie męcz tym ludzi i zacznij robić to co Ciebie interesuje, pociąga, rajcuje.

0
xeo545x39 napisał(a)

Swój poziom oceniam na średnio-zaawansowany.

Na jakiej podstawie? Jakim projektem możesz się pochwalić?

Studia - oczywiście informatyka, konkretny kierunek jeszcze dokładnie nie wiem. Z góry dziękuję.

Informatyka to kierunek studiów. Chodziło Ci chyba o konkretną specjalność.

PS: Nie wiem czy wątek powinien być w tym dziale (Społeczność) czy "Inne". W razie co, proszę o przeniesienie.

Raczej w Off-topic. Inne to dział na inne języki programowania.

0

Zanim się zabierzesz za kolejny język programowania to może napisz jakiś jeden czy dwa większe projekty - zajmie Ci to z rok czasu, ale wtedy będziesz mógł powiedzieć i sobie uświadomić co umiesz, a czego nie. Nauczenie się języka to jest chwila, nabranie umiejętności - lata.

0

@somekind Twierdzę tak tylko na podstawie moich umiejętności, projektów większych nie mam, tylko setki jakichś podstawowych programików, czasem potrzebnych, niektore pisane dla jaj. Teraz nie dawno zacząłem pisać projekt w XNA, ma to być gra, co z tego będzie zobaczy za kilka miesięcy wstępnie, a za kilka lat moooże coś wyjdzie z tego rozwiniętego.

@byku_guzio Prawda, że lepiej umieć 3 języki na zaawansowanym poziomie (przynajmniej 1, a 2 na średnim) niż znać samą składnie i podstawy składnię 15... Ja raczej idę w kierunku kilku wyuczonych - jeden, dwa wiodące (chyba to będzie C++ i C#) i kilka z podstawami.

0

Mało osób się wypowiedziało a sądziłem, że polecą różne standardowe rady typu: nie licz na szkołę i uczelnię. One nic Cię nie nauczą etc.
Jednak jak rozumiem kończysz gimnazjum a od 1.5 roku programujesz, więc chyba nie trzeba Ci tego mówić i masz po prostu ochotę sam się tego nauczyć.

Ja jednak chciałbym powiedzieć, a raczej dać taką radę by unikać sformułowań na jakim to etapie jesteś i jak dobrze znasz jakiś język. Tego się nie da określić. Przykładowo teraz myślisz, że jesteś na średnio-zaawansowanym poziomie, lecz za rok zrozumiesz, jak wiele nie wiedziałeś i głupio będzie sobie przypominać jak to się myślało, że się wiele wie :)
Zresztą zauważyłem, że bardziej doświadczeni programiści (i nie tylko programiści) bardzo często nie wymieniają co potrafią, lecz to co jeszcze chcą się nauczyć i to czego nie wiedzą (a wiedza o tym, że to coś istnieje). Masło maślane? Niekoniecznie, ponieważ im dalej w las tym więcej rzeczy odkryjesz o których dziś np pojęcia nie masz, że istnieją etc. I to jest całkiem normalne.
Dlatego też określanie "na jakim poziomie jestem" jest bez sensu i nie jest miarodajne w żadnym stopniu.

Poza tym napisałeś, że programujesz od 1.5 roku. Uwierz, że przez ten czas mało prawdopodobne byś chociaż miał średnią wiedzę. Przez ten czas powinieneś jedynie już zrozumieć na czym polega programowanie i, że język programowania to tylko narzędzie. Z tego też powodu ilość języków jakie znasz nie jest bardzo istotna, bo jak sam zauważyłeś po nauczeniu się C++, nauka C# wchodzi bardzo prosto. Najtrudniejszy zawsze jest pierwszy język potem leci z górki. Niemniej walenie wszystkich języków jak leci i ich nauka nie jest chyba najrozsądniejszym rozwiązaniem, ponieważ w rzeczywistości będziesz miał bogatą wiedzę na temat języków (a w rzeczywistości pozapominasz o tych nauczonych się w pierwszej kolejności) i będziesz bez projektów, które jakoś by tam mogły poprzeć Twe umiejętności.
Według mnie warto się nauczyć: C/C++, C#, Java. Osobiście nie żałuję znajomości Pascala i Delphi, a także Visual Basica, ponieważ są to dość różne języki o odmiennej składni niż te C-podobne a to daje też pewne poszerzenie horyzontów i łatwość zrozumienia innych języków, które mają pewne "dziwactwa" (w sumie każdy język jakieś ma)

Napisałeś też, że interesujesz się gamedevem, czyli na Twoim miejscu poznałbym też DirectX etc. Tak naprawdę to rób projekty. Wal ich jak najwięcej bo to one dają ogromne umiejętności. Jeden zrobiony projekt jest więcej wart niż 10 przerobionych artów. (Podczas pisania projektu przecież i tak niejednokrotnie trzeba sięgnąć po książkę i coś sobie przypomnieć etc.)

Przed przystąpieniem do projektu warto też przeczytać to: http://www.programuj.com/artykuly/rozne/projekty.php
Bardzo dobrze napisany art. Jeśli nie masz czasu na książkę o inżynierii oprogramowania to ten art będzie takim wstępem z mocnym wejściem :)

Projekty też możesz zacząć pisać w językach których kompletnie jeszcze nie znasz. Wiadomo, nie jakieś ogromne projekty w takim przypadku, ale takie rzucenie się na głęboką wodę daje pewien obraz tego jak sobie radzimy w sytuacjach typowo analitycznych - Masz problem i go rozwiązujesz. nie ważny jest język lecz metoda / algorytm.

0

Dzięki polaczek za w miarę jasne opisanie sprawy. Postaram się dokończyć projekt super gry i zacznę pisać następny. Co do średnio-zaawansowanego poziomu, może jednak trochę mniejszy, ale jak wynika z książek są rozdziały "programowanie zaawansowane w C++" i są tam w miarę proste rzeczy, to tez dlatego śmiem tak twierdzić. Visual Basic dla mnie to w ogóle co innego niż C++/C#/Java, całkiem inna składnia. A co do pisania projektów w nieznanych językach (tzn. składnię to trzeba umieć, żeby pisać ;P) to chyba nieporęczne, lepiej jak już się bliżej pozna język i wtedy wg mnie.

0

Książki, nieważne czy zaawansowane czy podstawowe to nadal tylko książki i teoria przelana na papier w postaci paru przykładów. Prawdziwe zaawansowanie polega na tym, że nieważne jaki język wybierzesz to jesteś w stanie wykonać powierzone zadanie. Oczywiście trochę przesadzam bo pisząc to można sobie pomyśleć: "No to napisz to i to w assemblerze, albo innym dość trudnym języku". Mam tu bardziej na myśli fakt, że jeśli znasz składnię C++ i umiesz programować ( a nie tylko znasz język programowania ) to nie masz żadnych trudności w napisaniu tego i tamtego w C#, Javie czy czystym C.
Składnię można poznać też podczas pisania projektu. Przecież jeśli uczyłeś się C++ a potem skoczyłeś na C# to wiedziałeś już, że istnieje coś takiego jak pętla, klasa, polimorfizm, hermetyzacja danych etc. W tym momencie nie potrzebna jest od razu znajomość składni. Masz zadanie i je wykonujesz algorytmicznie a składnia to tylko formalny zapis tego algorytmu. Składni nauczysz się praktycznie po tygodniu jeśli już potrafisz programować. Dłużej może zająć nieco tylko nauka składni języka dość odmiennego, albo z haczykami. W tym przypadku czas nauki zależy od ilości tych haczyków.
No i ostatecznie skoczenie na projekt pisany w języku, którego praktycznie się nie zna nie musi być nieporęczne. Można odczuć pewien dyskomfort, ale jeśli lubisz wyzwania to z pewnością jest to jedna z tych rzeczy, które są pozytywne w procesie nauki danego języka jak i całego programowania. Dlaczego?

  • Ponieważ jeśli nie znasz języka dobrze, a chcesz napisać projekt w nim, to za wszelką cenę próbujesz nie popełnić błędu. Twój kod staje się bardzo staranny i ostrożnie pisany. Każda linijka kodu jest delikatnie wstawiana i analizowana czy faktycznie tak można / tak powinno być.

Przyrównam tą sytuację do pływania:
-Załóżmy, że umiesz pływać: (czyli umiesz programować)
-Jeśli umiesz pływać w Warcie to umiesz też pływać w Wiśle. (jeśli umiesz programować to język nie ma znaczenia)
-Rzucenie na głęboką wodę, więc polega na tym, że poznajemy jeziorko i każdy element, który się w nim znajduje. mimo, że umiemy pływać i dobrze sobie radzimy to dodatkowo uczymy się co w tej wodzie się znajduje etc. (uczymy się nowego języka mimo, że piszemy w nim cały czas jakiś projekt)

Ale jeśli nie jesteś w stanie tego zrobić i nie poradziłbyś sobie z pewnym problemami stawianymi przed Tobą codziennie - problemami codziennymi nie zaawansowanymi bądź trudnymi. Bo wiadomo, że jeden język jest bardziej przyjazny w pewnych zadaniach niż inny - (i z którymi sobie radzisz w swoim ulubionym języku) to najpewniej nie umiesz jeszcze programować, a jedynie znasz język programowania lub kilka. Sama zasada jednak programowania nie ma nic wspólnego ze znajomością języków programowania.

Znów to porównam powiedzmy do kierowcy. Mamy kierowcę jeżdżącego tylko samochodami Audi. Kierowca ten nie potrafi jednak prowadzić żadnego innego samochodu. Czy można nazwać go kierowcą? Nie. Jest on bardzo niepewny tak naprawdę.
Prawdziwy kierowca natomiast potrafi jeździć samochodami jakimikolwiek, a sama nauka polega tylko na "doszlifowaniu" pewnych zachowań i wyczucia.

0

W każdym razie dzięki wszystkim za rozjaśnienie, postaram się właśnie zrobić tak, żeby być w miarę uniwersalnym i umieć pisać rozwiązania niezależnie od języka + moje projekty.

0
  1. Przez 1,5 roku to raptem "liznąłeś" programowania. Zapewne potrafisz napisać w pełni funkcjonalny kod: kalkulator, jakiś prosty edytor tekstu, jakąś grę czy inny program na podstawie ksiązki, dostępnych w necie materiałów czy nawet przy użyciu własnej głowy. Ale to dopiero zalążek, bo średnio-zaawansowany programista: czy to .NET czy c++ powinien znać podstawowe technologie związane z wybranym językiem: WPF, WCF, Linq, QT, Boost itp. Dopiero wtedy jesteś w stanie pisać dość elastycznie i sprawnie programy nieco bardziej praktyczne i większe.
  2. Zamiast uczyć się języków programowania - przyłóż się do matematycznej strony informatyki. Algorytmika, logika, kryptografia - wbrew pozorom są bardzo przydatne programiście (szczególnie desktop'owcowi). Zanim skończysz studia zapewne na rynku zmieni się układ sił - wejdą nowe technologie, obecne zmienią swój kształt. Nauka języków programowania przy znajomości chociaż jednego jest banalna, a kwestie logiki aplikacji już do tak prostych nie należą.
  3. Jeżeli już chcesz brnąć w GameDev to zamiast XNA poleciłbym Ci Unity3d - bardzo ciekawy Framework oferujący możliwość programowania zarówno aplikacji .exe jak i urządzenia mobilne, albo jako WebPlayer. Ogólnie coraz więcej widać projektów w tej technologii, i wydaje mi się że za kilka lat może być Boom na takie przeglądarkowe gry 3d, z możliwością one-click wykonania buildu na urządzenia mobilne.

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