Jak zacząć naukę programownia?

Witam.

Od dłuższego czasu zbieram się za uczenie programowania.

Dzisiaj postanowiłem ostatecznie dopytać.

Od czego najlepiej zacząć? (HTML to podstawa, którą mam opanowaną w marnym stopniu)

Jakie książki kupić?

Jacy programiści będą potrzebni za 10 lat? (Patrzę daleko w przyszłość)

Jakich języków się uczyć?

Jakie książki zakupić?

Odpowiedź na każde z tych pytań: to zależy. Zależy, czym chciałbyś się zająć (aplikacje desktopowe, webowe, mobilne, rozproszone…), od tego zależy czy chcesz technologii (języka) takiej czy owakiej, od technologii zależą książki i kursy.

Nikt nie wie co będzie za 10 lat. W ciągu 10 lat technologie mogą narodzić się i umrzeć. Ale programiści prawdopodobnie będą potrzebni, ważne jednak aby umieli się przystosować do zmian.

Praktycznie: HTML to nie jest język programowania. Ale jak już znasz - to możesz pomyśleć o aplikacjach działających w przeglądarce. Jeżeli po stronie klienta - potrzebujesz JavaScript. Jeśli po stronie serwera - potrzebujesz PHP, C#, Javy, Pythona lub Rubiego, to chyba najpopularniejsze obecnie. JavaScript staje się teraz popularny, dzięki wielu nowym bibliotekom i… sloganom w rodzaju “HTML5”, które są zwyczajnie popularne. Jest troszkę inny od np. PHP (pod względem mechanizmów języka, nie chodzi mi o zastosowanie). Nie wiem czy polecałbym na pierwszy język do nauki.

Cały czas mam wrażenie, że dobrze jest zacząć i spróbować zrozumieć samą istotę programowania oraz zobaczyć, czy ciebie to w ogóle fascynuje. Możesz zacząć od C, prostego języka strukturalnego w którym można zrozumieć podstawowe mechanizmy takie jak zmienne czy funkcje. W zasadzie to można nawet się tego nauczyć w Pascalu, ale zaraz zostanę zakrzyczany, że proponuję przedpotopowe rozwiązania. Poszukaj na tym forum czy innych, pytanie “od jakiego języka zacząć” jest bardzo częste :slight_smile:

Najpierw zastanów się co chcesz pisać?

Systemy? Gry? Stonki? Aplikacje biurowe/web? Na telefony?

potem na jaki system ostatecznie wybierz język;p :smiley:

A jakieś książki do C polecicie?

Żebym nie musiał ich kupować tony, tylko kilka, a konkretnie.

Czym bym chciał się zająć, myślałem coś o tworzeniu stron internetowych.

Jak jesteś ambitny to w internecie znajdziesz wszystko czego potrzeba, tylko nie zadawaj co 5 minut pytań po forach.

Zacznij od google’a i zapytana “Kurs C”, już pierwszy wynik jest ciekawy. Podoba mi się tam zjechanie za używanie getch():smiley: Za IDE polecam Code::Blocks, ale jak chcesz pisać w czystym C, a nie C++, to zapisuj jako .c, nie .cpp

Poco tobie C jeśli chcesz tworzyć strony internetowe?

@przemom

cgi

CGI to nie strony internetowe.

C może być (w mojej opinii!) dobrym krokiem wejścia do nauki programowania jako takiego. Prawdopodobnie lepszym niż PHP, z uwagi na ścisłe typowanie.

Ale zarówno C (przez CGI) czy PHP nie służą do tworzenia stron internetowych, a raczej aplikacji internetowych. Do tworzenia stron jako takich potrzebny jest tandem HTML i CSS.

Programowanie wymaga dwóch umiejętności:

  • czytania (także po angielsku)

  • szukania (j/w)

Sugeruję zacząć od czytania i szukania na forum. Poniżej przykładowych 20 tematów niemalże identycznych do tego:

jaki-jezyk-dla-poczatkujacego-t378313.html

programista-problem-wyborem-jezyka-t407225.html

zawod-programista-jaki-jezyk-t394876.html

problem-jezykiem-programowania-pomoc-wyborze-t352807.html

jak-zaczac-programowac-t446064.html

jaki-jezyk-programowania-wybrac-t382565.html

jaki-jezyk-porgramowania-wybrac-t362071.html

jaki-jezyk-programowania-wybrac-t368965.html

jaki-jezyk-pisania-programow-t403792.html

jaki-jezyk-programowania-wybrac-t412258.html

jaki-jezyk-wybrac-t406458.html

szukam-banalnego-jezyka-programowania-t307557.html

jaki-jezyk-polecacie-poczatek-t332957.html

czego-zaczac-t336774.html

jak-zaczac-t328185.html

jaki-jezyk-programowania-aplikacji-okienkowych-windows-t394889.html

ktory-jezyk-jest-prosty-python-czy-java-t423729.html

jaki-jezyk-programowania-gier-t443817.html

najwydajniejszy-jezyk-programowania-t442063.html

wybrac-jezyk-ebookami-czy-symfonia-t431401.html

Po przeczytaniu tego co podsunął Ci Ryan, proponuję Ci także przeczytać “poradnik początkującego programisty” - tutaj masz link:

http://gynvael.coldwind.pl/?id=238

Ten poradnik, na pewno uświadomi Cię w paru sprawach, a także pokaże drogi jakim warto się kierować przy nauce języków programowania :slight_smile:

Pozdrawiam,

gbm

@Ryan

W jednym z podanych przez Ciebie linków można przeczytać, że HTML jest archaiczny i nikt poważny się nim nie zajmuje. Domyśl się dlaczego. Podpowiem - w świecie IT odsyłanie kogoś do wątków sprzed dwóch lat jest, delikatnie mówiąc, niepoważne.

Zdawało mi się, że przekaz jest jasny, ale i tak wyjaśnię: tematów tego typu jest na pęczki, zakładanie kolejnego niewiele da. To, że na liście znalazł się jeden temat stary (nawet niech będzie ich połowa) nie zmienia tego, że autor nie zadał sobie trudu poszukania analogicznych wątków na forum.

Jakiś czas temu na anglojęzycznym forum dla programistów chciałem dopisać nowy post. Po kliknięciu odpowiedniej opcji wyskoczyło mi w tłumaczeniu mniej więcej coś takiego:

Być może była to standardowa opcja forum, ale wydała mi się idealnie pasować do sytuacji - w świecie IT zmiany są zbyt dynamiczne żeby korzystać z kilkumiesięcznych wątków czy też kontynuować je. Wszystkim miłośnikom odsyłania do Gugla czy opcji szukaj chciałbym przypomnieć, że żeby coś można było wyszukać to najpierw ktoś to musi napisać. Przykład z HTMLem jest dobry. Gugel wciąż na pierwszym miejscu podaje kursy, które prawie nie uwzględniają HTML5. No ale co ma podawać skoro, w przypadku pojawienia się pytania o taki kurs, ludzie na forach, zamiast podawać adresy nowszych kursów (ilość stron odsyłających ma znaczący wpływ na pozycję w wyszukiwarce), odsyłają do Gugla albo podają linki wyszukane na poczekaniu do tych już zindeksowanych kursów, co jeszcze wzmacnia ich pozycję i przewagę nad tymi aktualniejszymi? Błędne koło. Na forum o kompozytorach muzyki klasycznej, albo historii Polski, może się takie odsyłanie sprawdzi, ale w przypadku informatyki niekoniecznie.

Co więc zmieniło sie w świecie programowania na przestrzeni ostatnich 2 lat?

Do dzisiaj ludzie piszą w C zamiast C++, używają Allegro zamiast SFML.

Dla początkującego zmieniło się niewiele, jedynie “nowe wersje” wyszły, zmiany których początkujący nawet nie zauważy ani nie odczuje.

Twoim zdaniem zakładanie co 2 miesiące tematu “od czego zacząć” jest dobre?

Przykład z HTML5 dobry? Trąbi się o nim od lat, a sam język jest kompatybilny z xHTML. Tłumaczenie “nie uczę się teraz HTMLa i CSS, poczekam na tutki do wersji HTMLa 5 i CSS3” jest po prostu głupie. Przesiadka z wersji 4, czy tam x 2.0 do 5 to tylko nauka NOWYCH ficzerów, stare są takie jakie były.

Poza tym: umiejąc chociażby jeden język (zwłaszcza C++) i potrafiąc programować to przeskok na inny język nie jest trudny.

Na forach blokuje się odświeżanie starych tematów żeby nie robić burdelu. Archeologowi się będzie nudziło i odkopie 4-letnie wątki o których wszyscy zapomnieli i jest po prostu bałagan: stare wątki na szczycie tematów, a nowsze z aktualnymi problemami się z nimi wymieszają. Dlatego się blokuje, a nie że “ten temat już nieaktualny”.

XHTML “przegrał” z HTMLem (wiem, wiem - to nie są języki programowania). Wraz z pojawieniem się HTMLa5 wzrasta znaczenie JavaScript, maleje natomiast znaczenie Flasha i Javy (jako narzędzia wykorzystywanego na stronach WWW). Nastąpiła ogromna ekspansja Androida, co stwarza nowe pole i możliwości dla programistów. Języki odchodzące (Pascal, Perl) odeszły jeszcze bardziej. Jakby rzadziej mówi się o VisualBasicu. Pojawiła się stabilna wersja Microsoft Small Basic. Ten ostatni przykład tylko częściowo jest żartobliwy. Dla początkujących to bardzo przyzwoity język - łatwy, a zarazem nowoczesny (posiada cechy obiektowości, zewnętrzne biblioteki). No tak, ale przecież komputery wciąż rozumieją tylko zera i jedynki, a niektórzy ludzie do dzisiaj piszą w QBasicu (żeby nie być gołosłownym, proszę - klik). Nic się zatem nie zmieniło.

Właśnie. Nic istotnego dla osoby początkującej, zadającej takie pytanie.

@somekind

Dobre. Tyle, że to ostatnie zdanie miało charakter ironiczny czyli znaczyło dokładnie coś odwrotnego. :slight_smile: Dla początkującego zmieniło się dużo. Microsoft Small Basic może być przyjemnym wprowadzeniem do programowania. Łatwy JavaScript stał się, dzięki HTML5, bardziej interesujący, przydatny i przyszłościowy. Tworzenie aplikacji na telefony z Androidem jest dość proste, więc również może być dobrym rozwiązaniem dla początkującego. Dwa lata temu sytuacja była całkiem inna.

Chcesz mi tłumaczyć co jest ironiczne, a co nie? Podejrzewam, że parę osób może tutaj ze śmiechu pęknąć.

Wiem, że próbowałeś być ironiczny, ale zwyczajnie Ci nie wyszło, bo cały Twój post jest dowodem tego, z czego próbujesz szydzić. Dlatego za Tobą powtórzyłem to nieumyślne, ale prawdziwe podsumowanie Twojego postu.

Dla początkującego NIC się nie zmieniło. Zrozum to wreszcie. Jeśli ktoś faktycznie chce się nauczyć programować, to i tak musi zacząć od nauki zmiennych, wyrażeń logicznych, pętli, itd. I dla takiej osoby nie ma znaczenia wprowadzenie nowego HTMLa, istnienie Androida ani żadne IDE Microsoftu.

@somekind

Ma znaczenie, bo, przykładowo, istnieją różne paradygmaty programowania. Obecnie lepiej polecić komuś zupełnie zielonemu Microsoft Small Basic czy JavaScript niż Pascal.

Zmienne, wyrażenia logiczne, pętle są w każdym języku programowania, więc chyba lepiej wybrać taki, który jest lepszy pod innymi względami, niż taki, który jest pod tymi względami gorszy. Naukę zmiennych, pętli itp. wymusi każdy język. To może poleć koledze BASIC V2 z Commodore 64. Tam też są pętle, zmienne, wyrażenia logiczne… Tylko po co ma się tego uczyć na czymś przestarzałym i niepraktycznym, skoro może się nauczyć tego samego na czymś nowoczesnym i szeroko stosowanym? Nie zapominaj, że przeznaczeniem programowania nie jest pisanie programów konsolowych, które obliczają liczby pierwsze albo sortują bąbelkowo, tylko trochę inne rzeczy. I jak do tych innych rzeczy przyjdzie, to może się okazać, że kolega będzie bardzo żałował, że zmienne, pętle czy wyrażenia logiczne szlifował w Pascalu, QBasicu, Perlu czy innym Flashu.

Jak na razie nie jesteś w stanie podać żadnego konkretnego, merytorycznego kontrargumentu w stosunku do moich wypowiedzi. Jedyne co masz do powiedzenia to “NIC się nie zmieniło”. Bardzo przekonywujące.