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

W jaki sposób uczyć się programowania

Object Storage Arubacloud
+1 głos
2,056 wizyt
pytanie zadane 13 stycznia 2018 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)

Witam, mam szesnaście lat i chodzę do szkoły o kierunku informatycznym, jakieś dwa/trzy lata wcześniej zastanawiałem się z kuzynem jak się tworzy gry, byliśmy pewni że robi się je w programach na zasadzie przeciągnij upuść. Wtedy jeszcze nie miałem na ten temat żadnego pojęcia. Początkowo oglądaliśmy sobie filmiki na youtube jak zrobić quiz w notatniku, kalkulator itd... Oczywiście nie wiedziałem jeszcze że coś takiego nazywa się plik wsadowy. Potem przyszła kolej na Scratch, było trochę zabawy ale bardzo szybko poczułem niedosyt, mianowicie nie polegało to na tym że utworzyłem jakąś aplikacje (grę) i mogę ją komuś dać, uruchomić w każdym momencie itd... raczej taki projekt otwierało się tylko w edytorze (programie w którym to zrobiliśmy). To mi się bardzo nie podobało :/ Po raz pierwszy natrafiłem wtedy na takie pojęcie jak "język programowania". Uderzyła mnie myśl że tak naprawdę każdy program/gra/strona to ciąg znaków ( bo często tylko coś takiego widzi ktoś niezwiązany z branżą IT gdy widzi pracę programisty). Początkowo miałem wybrać Pascal ale zrezygnowałem z niego bo mi nie działał kompilator ;) Nadeszła kolej na coś w czym dalej siedzę, mianowicie C++. Przez jakiś czas uczyłem się go z jakiejś stronki, nie mam pojęcia już z jakiej ale wiem tylko to że nic nie rozumiałem a wszystko polegało tylko na przepisywaniu gotowego kodu, nie umiałem takich banalnych rzeczy jak  np stworzenie zmiennej i wczytanie jej od użytkownika(jedyne co dobrze rozumiałem to wyświetlanie napisu na ekran). Potem stało się coś co wszystko odmieniło, natknąłem się się na kurs P.Mirosława. Po raz pierwszy zacząłem to wszystko rozumieć, przerobiłem kurs kilka razy żeby sobie wszystko odświeżyć po okresach przerw i zniechęcenia które trwały po kilka miesięcy. Problem był też taki że "zajmowałem się wszystkim wokół programowania a nie samym programowaniem". Jednak zeszłych wakacji zebrałem się w sile, ukończyłem cały kurs + programowanie OOP. Zrobiłem też "błyskawiczne" postępy, po raz pierwszy umiałem napisać coś sensownego, np grę Snake samemu czy saper'a korzystając lekko z poradników... zabrałem się też za SFML, szło mi całkiem dobrze. Napisałem też wtedy zupełnie samemu moją pierwszą sensowną grę działającą w czymś innym niż wierz poleceń:

Jak gra nie jest taka zła na moje możliwości to jej kod już tak, myślę że bym dzisiaj jej nie zrozumiał. (pisałem też inne projekty ale ciężko tu mówić o jakimś sensownym trzymaniu się programowania obiektowego)  Stwierdziłem że skorzystam z jakiś poradników by się o SFML'u dowiedzieć więcej. Tu dało się zauważyć moje stanowcze braki w programowaniu obiektowym i ogólnie w C++. Wiele pozapominałem a wiele nie było w kursie. Chciałem na bieżąco w internecie poznawać możliwości C++ ale doszedłem do wniosku że to nie ma sensu). Stwierdziłem że muszę mieć jakieś sensowne fundamenty i znać C++ w dobrym poziomie jeśli chce rozumieć różnego rodzaju kursy do np QT czy SFML (zwłaszcza jeśli są po angielsku). Tak oto 2 miesiące temu ruszyłem z książką Prat'y : C++ Szkoła Programowania wyd VI. Teraz jestem na pętlach, mam wrażenie jak bym się cofną chociaż przyznam że dowiedziałem się mnóstwa nowych rzeczy i wszystko lepiej rozumiem (np działanie wskaźników, napisów i masę instrukcji od wewnętrznej strony). Staram się analizować książkę bardzo dokładne by wszystko zrozumieć, problem jest taki że ostatnio uczyłem się tylko z książki i ciężko mi było coś napisać w praktyce, wiem że prócz jej analizy  muszę ćwiczyć cały czas, ale nie wiem co :(, nauka zajmie mi ok jeszcze 1 - 1.5 roku (tak wyliczyłem). Jak na razie uczę się z niej i piszę coś ze SPOJ'a żeby zachować kondycję i umiejętności. Nie wiem jednak czy dam tak długo radę bo czuję wielką potrzeba pisania czegoś większego, wiem też że podstaw nigdy nie uniknę. Ciężkie jest też to że technologia idzie do przodu a ja "stoję w miejscu" (przynajmniej w oczach innych), znowu piszę gry typu snake czy saper w konsoli, uczę się elementarnych podstaw tyle że pod innym kątem. Mówi się też teraz masę o tym że najważniejsze jest zaplanowanie jakiegoś projektu i nauka na jego pisaniu, ja mam wrażenie jak by wszystko działo się wkoło mnie a nie dotyczyło mnie samego. Jak na razie planuje dojść w książce do programowania obiektowego i do tego czasu poznawać jakieś algorytmy, coś tam ćwiczyć itd... Potem przy OOP wiedzę z książki będę stosować od razu w praktyce np pisząc projekty w SFML coraz lepiej zbudowane. Może mógł bym się na teraz uczyć w tym samy czasie  HTML/CSS bo to nie są do końca języki programowania... Co wy o tym, sądzicie? Jaka jest wasza opinia? Jak się powinienem uczyć przez ten okres? Dziękuje serdecznie za rady i pozdrawiam laugh

1 odpowiedź

+1 głos
odpowiedź 13 stycznia 2018 przez marcin99b Szeryf (82,180 p.)

Mi pomogło próbowanie różnych języków i technologii, zamiast stania przy jednej ścieżce - ten twój c++

Sprawdzając "jak to wygląda" w c#, w php, w js, w javie i innych językach, bardzo szybko udało mi się ogarnąć wiele zagadnień, bo język A stawia na nie bardziej, niż język B. Przykładowo pisząc coś w javie albo c#, bardzo łatwo przychodzi nam obiektowość, podczas gdy osoba znająca jedynie php, do tej obiektowości... niektóre osoby mogą się o niej dowiedzieć jak już będzie za późno, mimo że przy rzeczywistych projektach jest ona podstawą.

Pamiętam że lepiej poznałem też wszystko, używając różnych bibliotek, frameworków i silników. Np ucząc się C#, dość szybko zajrzałem do Unity3D, gdzie często wykorzystuje się typy generyczne, a używanie obiektowości jest absolutną podstawą, bo działamy cały czas na tych obiektach (jak w sumie w każdym średnim i większym projekcie).

Dodatkowo polecam bloga, na którym możesz znaleźć więcej szczegółów (początkowe posty są nastawione na samo "jak zacząć? w którą stronę iść? jakie ćwiczenia robić?")
BLOG 
Dodatkowo, gdybyś chciał otrzymywać powiadomienia o nowych postach - blog posiada stronę na facebooku, gdzie umieszczam informację o każdym nowym poście (według mnie wygodniejsza opcja subskrypcji, niż przez maile)
FACEBOOK

komentarz 14 stycznia 2018 przez Jakub 0 Pasjonat (23,120 p.)
Dzięki za rady, chociaż przyznam że szkoda było by mi teraz rezygnować z C++, zwłaszcza że sporo w niego zainwestowałem, chociaż dalej masę rzeczy się o nim uczę to jest mi w miarę bezpieczny i znam biblioteki ,IDE itd. pod niego. Sam nie wiem co chcę teraz robić... Słyszałem że programiści c++ są dość cenieni bo ten język nie jest taki łatwy w opanowaniu :/ W każdym razie dzięki za linka, skorzystam :)

*Aaa... i jeszcze jedno ,raczej wiem że nauka wielu języków programowania w jednym czasie nie jest dobra, albo aplikacje desktopowe albo internetowe... Tyle że mnie nie ominie nauka kilku języków programowania jednocześnie, np w technikum będę się tam uczyć trochę SQL'a trochę JS, BHP'a i do tego to cz mnie bardziej interesuje. Zastanawiam się czy teraz równomierne ne mógł bym uczyć się np HTML, nie jest to typowo język programowania więc jakoś mylić mi się chyba nie powinno.
1
komentarz 14 stycznia 2018 przez marcin99b Szeryf (82,180 p.)
edycja 14 stycznia 2018 przez marcin99b

Co do poziomu nauczania w technikum... Nie licz że nauczysz się tam czegoś sensownego, sam jestem w technikum i mogę powiedzieć, że ucząc się samodzielnie, z własnej woli, po ok 3 dniach miałem taki poziom, jak typowa osoba z ocenami w okolicach 4, po pierwszym semestrze. 
Rok szkolny to taki odpowiednik tygodnia samodzielnej nauki, zakładając że to lubisz. 
Drugi rok to powtórki. 
Aktualnie do E14 masz 3 przedmioty - czyli przeliczając na samodzielną naukę - jakieś 3 tygodnie albo miesiąc. 
Według stereotypu E14 to najtrudniejsza kwalifikacja, bo tam jest to całe programowanie -> w najbardziej podstawowej postaci. 
Weź jeszcze pod uwage to, że egzaminy są mocno przestarzałe, więc nawet nie licz na pracę pokazując dyplom z E14, jeśli uczyłeś sie do niego tylko tyle, ile wymagała od ciebie szkoła.

Chcąc cokolwiek osiągnąć, trzeba uczyć się samodzielnie

Co do zostawienia c++, nie musisz z niego rezygnować, po prostu posprawdzaj jak to wszystko wygląda w innych językach. C++ też jest mocno obiektowy, jednak szybciej dojdziesz do pewnych elementów programowania, ucząc się z poradników do innych języków, ponieważ te inne języki, nieco mocniej stawiają na inne elementy. 

Przykładowo typy generyczne, bardzo łatwo ogarnąłem o co w nich chodzi, grzebiąc w C#, w ogóle dowiedziałem się że coś takiego istnieje, grzebiąc w C#. Później wystarczy tylko sprawdzić jaka jest składnia w dowolnym innym języku.

A co do samej składni i pisania kodu, większość języków (o czym wspominałem kilka razy na blogu) jest do siebie bardzo podobna, bo rynek bardzo lubi języki obiektowe -> ponieważ są one proste do nauki, oraz bardzo podobne do siebie. W takiej Javie można pisać bez żadnego zaglądania do internetu, jeśli robiliśmy coś wcześniej, w wspomnianym C#. 

Sporo ułatwiają też IDE, do takiego C# mamy darmowe i bardzo dobre Visual Studio, ale co do innych języków -> fajne IDE robią JetBrains, co prawda są one płatne, ale po wysłaniu skanu/zdjęcia legitymacji szkolnej, jako uczeń/student masz ich produkty za darmo, na czas trwania twojej nauki (chyba co rok trzeba odświeżać).
Do C++ masz tam np fajne IDE -> CLion 
Większość ich IDE jest wzorowana na intelliJ do Javy, więc znajac jedno z nich, znasz budowę reszty (brak konieczności uczenia się działania nowego IDE), dodatkowo w tym stylu jest zrobione m.in Android Studio

Dodatkowo, co do języków które podałeś, jeśli się nimi zainteresujesz, serio mogą ci sie przydać. Taki SQL, mimo że bazy NoSql są "modne", dalej jest używany na masową skalę do komunikacji z bazą danych, która w średnich i dużych projektach jest absolutną podstawą. Oczywiście mamy te wszystkie systemy ORM, ale znajomość przynajmniej podstaw SQL jest przydatna.
HTML + CSS + JS warto znać, żeby np napisać własną stronę, co prawda nie będzie ona super, ale znajomość podstaw pozwoli ci na przedstawienie czegoś w prostszy sposób znajomym, możecie zrobić jakiś projekt razem (fajnym pomysłem może być aplikacja do zawodów sportowych, gdzie jest mechanizm losowania przeciwników i wybierania zwycięzców). Dodatkowo strony internetowe są teraz modne i jest na nie duże zapotrzebowanie, warto ogarniać podstawy, nawet jeśli twoje umiejętności będą się ograniczać na przerabianiu gotowych szablonów -> będziesz miał dodatkowe możliwości.

A co do samego C++, racja - jest on dość trudny i jest na niego zapotrzebowanie, głównie do gier 3D, jednak chodzi tutaj o te bardzo zaawansowane elementy połączone ze sztuczkami matematycznymi do optymalizacji. 
Nie chodzi o to, żebyś umiał go na takim poziomie jak programista dowolnego innego języka, który przez załóżmy miesiąc sprawdzał jak wygląda składnia c++.

Polecałbym zapoznać się z kilkoma językami, nie naraz, ale np przez miesiąc popróbuj coś w c#, później sprawdź jak wygląda to w javie, później zajrzyj do pythona, w międzyczasie sprawdź php.
Nie dość, że poznasz podstawowe różnice między językami, to jeszcze dowiesz się który język ci serio odpowiada, stawianie wszystkiego na c++, znając jedynie c++ jest troche nieodpowiedzialne, bo nie wiesz jak wygląda sytuacja w innych językach, może się okazać, że takie php stanie się twoim ulubionym językiem, bo będziesz w stanie robić ciekawsze rzeczy.
Może być równie dobrze tak, że python bardzo ci się spodoba, i będziesz grzebał przy big data lub AI. 
To samo może się wydarzyć z Javą na androida, i zostaniesz zawodowym programistą androida, albo swift + ios, albo technologie cross platform, typu Xamarin albo React Native.

Ogólnie jest bardzo dużo możliwości i powinieneś przynajmniej sprawdzić jak wyglądają te najciekawsze, aby mieć dobre rozeznanie.

komentarz 14 stycznia 2018 przez Jakub 0 Pasjonat (23,120 p.)
Dzięki za rady, to fakt że wiele osób które znam programowały coś tam w różnych technologiach, a rozwijają się w tej jednej ich ulubionej. Mam plan żeby na razie uczyć się tego c++ ale przy okazji delikatnie grzebać gdzie indziej żeby się zastanowić co potem, c++ będzie dla mnie takim punktem odniesienia. To znaczy w nim będę projektował i testował algorytmy, będę w nim pisał jakieś gierki dla rozrywki itd... Tak samo QT jest ponąć bardzo potężnym i często stosowanym framework'iem. Myślę żeby jednocześnie  w wolnych chwilach uczyć się html i css. raczej mi się z cpp mylić się nie będą a słyszałem że już za ich pomocą można stworzyć dość fajne graficznie witryny. Gdyby w przyszłości zainteresował mnie web to miał bym jakieś podstawy i od razu mógł bym się uczyć np JS.

* nieraz jak porównuje C# z C++ to myślę że są do siebie mega podobne (zwłaszcza ich zasady programowania obiektowego). Po przepracowaniu większości książki, c++ mógł bym stosować już na większą skale w praktyce i zacząć coś tam z innym językiem. W książce do OOP powinienem dotrzeć za pół roku, przez ten czas zdobęde też sporo wiedzy z html i css
1
komentarz 14 stycznia 2018 przez marcin99b Szeryf (82,180 p.)
W sumie większość języków wygląda bardzo podobnie, przez co przejście z dowolnego języka obiektowego na dowolny inny obiektowy, zajmuje zazwyczaj mało czasu, bo uczysz się tylko składni i różnic w nazewnictwie

np większość języków przy deklaracji zmiennej string, używa słowa kluczowego "string", a java używa "String" (z dużej litery)

sporo języków do dziedziczenia używa słowa kluczowego "extends", a w c# mamy dwukropek

sporo języków do wejścia w obiekt używa kropki, a php strzałki ->

Nauka nowych języków polega właśnie na nauce tych różnic, bo wszystkie elementy (np typy generyczne, OOP, lambda, wielowątkowość, asynchroniczność, refleksje) już znasz i tylko sprawdzasz, jak z nich korzystać w innym języku.

Problem może się pojawić, jak inny język czegoś nie posiada, lub posiada coś, czego w poprzednim nie było. Albo (to o czym wspominałem), jeden język kładzie spory nacisk na coś, co w drugim jest niezauważalne. Przykładowo wielowątkowość, którą w C# często wykorzystuje (głównie desktop), bo w wielu aplikacjach jest... można powiedzieć że obowiązkowa do użycia, podczas gdy w takim PHP, podczas nauki natknąłem się na temat wielowątkowości, na bardzo późnym etapie, w dodatku był on potraktowany w formie ciekawostki, pokazującej że "tak, da się to osiągnąć".

Podobne pytania

+1 głos
2 odpowiedzi 296 wizyt
pytanie zadane 23 lipca 2020 w C i C++ przez Taachii Początkujący (330 p.)
+1 głos
2 odpowiedzi 3,504 wizyt

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...