Proszę o radę - jak się uczyć programować?

0

Witam.
Trochę wstępu. Od dawna zajmowałem się tworzeniem stron internetowych ale całkowicie amatorsko - to taka pasja (głównie design dobra wiedza html 5 css3 i cms - contao). Od niedawna postanowiłem nauczyć się programowania, ( nie języka - programowania)żeby wejść na "wyższy poziom" :) i samemu tworzyć kod. Po prostu ciągnie mnie do tego - chce wiedzieć jak.

Wiele czytałem i przyglądałem się składni - jaka mi pasuje. Padło na JaveScript i C#.
Javascript na początek a jak trochę załapię to dorzucę c# żeby uczyć się jednocześnie obu języków. ( gdzieś wyczytałem że uczenie się dwóch pozwala lepiej zrozumieć idee programowania).

Javescript zacząłem od filmów z tuts+ (można na necie zdobyć całą serję dla początkujących), aby poznać składnię. Natomiast naukę programowania zacząłem od książki http://www.bt4.pl/kursy/javascript/wszystko-jasne/r3-funkcje/.

I tu jest pytanie.

Szło mi całkiem nie źle aż trafiłem na programowanie funkcyjne, niby łapię idee ale nie rozwiązałem żadnego ćwiczenia poprawnie, po przeczytaniu rozdziału.
Będzie lepiej zgłębić temat całkowicie mam na myśli programowanie funkcyjne korzystając z innych źródeł i dopiero ruszyć dalej. Czy lepiej przejść do kolejnego rozdziału potem inna książka i jak zacznę lepiej pojmować programowanie ponownie wrócić do programowania funkcyjnego i wtedy zgłębić problem.?

Dzięki z góry mam nadzieje że się jasno wyraziłem.
A dodam że c# postanowiłem zacząć od "Fundamentals of Computer Programing with c#" http://www.introprogramming.info/english-intro-csharp-book/

2

Ja polecam pascala na poczatek.

4
lookacode1 napisał(a)

Ja polecam pascala na poczatek.

Ja też polecam Pascala na początek, dlatego że posiada przyjemniejszą (dłuższą) składnię, opartą o średnią ilość słów kluczowych; Ponadto pisanie w nim programów jest prostsze niż w C - w końcu Pascal został stworzony do nauki programowania;

Lord Darkstorm napisał(a)

Według mnie szkoda czasu na Pascala. Został on wyparty przez C / C++ i nie widzę powodu, aby się w niego zagłębiać. Potem tylko stare nawyki przeszkadzają w nauce nowego języka.

No i co z tego? Istnieją języki, które są o wiele mniej popularne niż Pascal, Object Pascal czy Delphi, a mimo to ludzie uczą się ich; A złe nawyki to wychodzą z nauki C/C++; Wiesz jakie? Fanboystwo i chodzenie po farach z biadoleniem, że Pascal to zło wcielone; Reasumując - nie widzę powodów, aby umniejszać funkcjonalności Pascala (obojętne czy Object Pascala, czy Delphi), w którym napisać można każdy program, jaki napisano w C/C++; Tylko najpierw trzeba znać ten język; Szkoda czasu po raz kolejny tłumaczyć, że popularność danego języka nie określa jego przydatności, ale cóż - niektórzy tego nie wiedzą...

Poza tym pytanie jest zupełnie inne - @wad zapytał "jak uczyć się programować", a nie "jakiego języka się uczyć", więc odpowiadajcie proszę na zadane pytania;


@wad - nauka programowania to nie "szkoła hakerów", czyli zajęcie na dwie noce; Najpierw wybierz sobie język programowania, w którym będziesz chciał tworzyć oprogramowanie; Języków jest dużo i każdy z nich ma określone przeznaczenie; Poczytaj sobie o tych popularniejszych i wybierz taki, który będzie spełniać Twoje wymagania (czyli będzie w nim można pisać takie programy czy skrypty, jakie chcesz) i na pierwsze rzut oka pisać będzie się dla Ciebie przyjemnie; Zapoznaj się z opisem języków, zapoznaj się także z sensownymi opiniami o nich i podejmij decyzję;

Następnie znajdź w sieci dobre materiały do nauki danego języka i naucz się jego składni; Następnie zapoznaj się z biblioteką standardową i poznaj jej zawartość - stałe, procedury (jeśli o Pascala chodzi), funkcje itd., czyli to, co oferuje Ci biblioteka do użytku w tworzeniu kodu; Sporo funkcji jest już zaimplementowanych w bibliotece, więc ręcznie nie będziesz musiał ich pisać, np. funkcja do usuwania znaków kontrolnych z ciągów znaków;

Pisz setki programów, komuś potrzebnych lub niepotrzebnych nikomu, ale takich, w których przećwiczysz zdobytą wiedzę; Nauczysz się tworzenia struktur/rekordów, - piszesz program do ich używania; Poznasz jakąś funkcję - piszesz program do przetestowania jej na milion sposobów; Utrwalasz zdobytą teorię pisząc programy ją wykorzystujące; W ten sposób poszerzasz swoją wiedzę i uczysz się jej stosowania w kodzie;

W ten sposób nauczysz się podstaw danego języka; Następnie sprawa wygląda podobnie, jeśli nie tak samo; Uczysz się coraz to nowych rzeczy, tworząc testowe programy; W ten sposób od głupiego "hello world" przechodzisz do coraz dłuższych, trudniejszych i bardziej wymagających programów, realizujących coraz to nowe algorytmy; Wymyślisz sobie jakiś program - implementuj go; Wymyślisz nową jego funkcję - dodajesz ją do programu; Oczysz się pisać programy i je rozwijać (udoskonalać);

Dodatkowo - ucz się angielskiego, bo dokumentacje czy specyfikację są kluczowymi elementami; Najciekawsze materiały do nauki programowania są po angielsku, więc tego języka przyda się nauczyć, choćby w takim stopniu, aby móc swobodnie czytać materiały; Czytaj też różne artykuły, czy choćby posty bardziej doświadczonych użytkowników na forum - nauczysz się pisać czytelny i efektywny kod; Próbuj optymalizować swoje algorytmy - dzięki temu w nawyk wejdzie Ci pisanie kodów działających szybko;

W ramach rozrywki możesz zarejestrować się w takich serwisach jak SPOJ, Project Euler czy main.edu, na których przećwiczysz myślenie i tworzenie szybkich i efektywnych programów, bo takie dają zaliczenie zadań;

To tyle - po kilku latach nauki i pisania programów powinieneś dużo umieć, dużo rzeczy znać i umieć pisać ciekawe i efektywne kody;


@wad - Ty już trochę programowałeś, więc część sugestii z tego posta możesz pominąć; Część wskazówek napisałem dla tych, którzy jeszcze nic nie programowali a trafili na ten wątek.

1
wad napisał(a):

Od niedawna postanowiłem nauczyć się programowania, ( nie języka - programowania)żeby wejść na "wyższy poziom" :) i samemu tworzyć kod. Po prostu ciągnie mnie do tego - chce wiedzieć jak.

Jeśli chcesz się nauczyć programowania to wyłącz komputer i przeczytaj jakąś książkę na ten temat.

Computer science is no more about computers than astronomy is about telescopes.
-- Edsger Dijkstra

JavaScript jest całkiem OK do nauki (taki język na luzie), Python jeszcze lepszy.
Pascal (+ Lazarus) też daje radę - zwłaszcza w GUI.

Do JavaScript, gdybym się uczył, to zapoznałbym się z:

Przyda się jeszcze:

JavaScript to temat-rzeka. Możesz się w tym języku rozwijać bardzo długo.

Czego Ci może w nim brakować - program nie jest kompilowany więc:

0

Osobiście uważam i powtarzam to po raz kolejny: najlepszą motywacją do programowania powinny być własne potrzeby, które za pomocą programowania można rozwiązać. Bardzo często w "biografiach" dobrych programistów występuje fraza, że pierwsze kody napisali, żeby oszczędzić sobie roboty z czymś, spodobało im się to rozwiązywali inne swoje problemy (zadania domowe z matmy, silnik własnej strony etc.) i z biegiem czasu ogarnęli temat na tyle, że mogli sprzedawać swoje umiejetności do rozwiązywania problemów innych osób.

Języków jest dużo, wybór pierwszego często jest dziełem przypadku - porada kogoś, mniej lub bardziej kompetentnego, książka, wymóg nauczyciela etc. To trochę niedobrze, bo decyzja jest na tyle ważna, że fajnie jakbyśmy podejmowali ją podobnie jak inne decyzje czyli jak najbardziej optymalnie. A podejmowanie decyzji optymalnych jest mega trudne, bo nawet jeśli spróbujemy 10 języków i wybierzemy najfajniejszy to ciągle nie wiemy właściwie nic, bo może się zdarzyć, że język, który na początku jest trudny/dziwny/nieologiczny, po jakimś czasie pokazuje masę zalet. Albo, że posłuchamy kogoś mądrego, który wybrał język dla siebie doskonale, ale jego przypadek (czasy, spektrum możliwości i zastosowań, cechy osobnicze etc.) był zupełnie inny.

=======

Osobiście polecam zapoznać się z ciekawym językiem go (golang) od Googla, gdzie wiele rzeczy jest rozwiązanych w sposób nowoczesny i sam nasuwający dobre wzorce - np. nie ma dziedziczenia, za to megałatwa kompozycja, biblioteki do obsługi kwestii sieciowych w sposób nie będący oddzielony od logiki reszty języka, wskaźniki z języków typu C, ale też garbage collector jak w javie. A wszystko z megafajną składnią, ciekawie zorganizowaną współbieżnością i gdybym miał komuś teraz coś doradzać biorąc poprawkę na to, że chce się uczyć programować to poleciłbym ten język, ponieważ został zaprojektowany, żeby rozwiązywać współczesne problemy, a nie te sprzed kilkunastu/dziesięciu lat. Oczywiście są wady jak relatywnie małe community, ciągła świeżość, a więc mało rzeczy pokroju bibliotek czy frameworków. Sam bawię się nim od niedawna i po enterprise'owej javie wreszcie czuję taki fun, jak wtedy, gdy za dzieciaka uczyłem się c i pascala - tego ostatniego jest trochę przeciwieństwem, bo podchodzi bardzo minimalistycznie do składni - nie ma średników, a nieraz i nawiasów, struktura implementuje interfejs "jeśli go implementuje", a nie dlatego, że "tak napisaliśmy.

0

Dzięki za odpowiedz Panowie. Na pewno skorzystam z tych wskazówek. Angielski już umiem na tyle że czytam książki i oglądam filmy do nauki w języku angielskim
W moim pytaniu zadałem pomocnicze pytanie.
Co robić gdy napotkamy zagadnienie ( w moim funkcjinalne programowanie) które wydaje się zrozumiałe ale tak nie do końca.? np. czytamy książkę i natrafiamy w połowie lektury na funkcje i nie całkiem są one dla nas zrozumiałe. To drążymy temat z innych źródeł aż go załapiemy. Czy czytamy dalej lekturę do końca i wracamy do problemu.
Co waszym zdaniem jest najlepiej zrobić???

mam nadzieje że nie zamotałem.

0

Moim zdaniem lepiej od razu załapać to czego nie rozumiesz w danym rozdziale
ponieważ przyda się to w następnych rozdziałach. Czyli jeżeli masz np. rozdział
poświęcony wskaźnikom to drąż ten temat aż zrozumiesz.

0
lookacode1 napisał(a):

Moim zdaniem lepiej od razu załapać to czego nie rozumiesz w danym rozdziale
ponieważ przyda się to w następnych rozdziałach. Czyli jeżeli masz np. rozdział
poświęcony wskaźnikom to drąż ten temat aż zrozumiesz.

No i tak zrobię.
Dzieki wielkie Panowie do zobaczenia za rok jak coś napszę :) ciekawego.

1

Wg mnie najlepiej jest skakać na głęboką wodę. Wymyślaj sobie coraz trudniejsze projekty i je pisz(zacznij od czegoś na poziomie kalkulatorów, potem możesz sie pokusić o jakąś grę tekstową). Co do technologii to szukaj w google jak najłatwiej jest zrealizować dany problem. W ten sposób możesz poznać kilka środowisk. A jeśli taka praca cię zniechęci do programowania to znaczy że sie do tego nie nadajesz bo to musi być twoją pasją.

0

Wtrącę się i powiem, że videokursy są bardzo fajne i przyjemne.

Ja ostatecznie olalem c#, ale polecano mi to co poniżej.
http://channel9.msdn.com/Series/C-Sharp-Fundamentals-Development-for-Absolute-Beginners
http://www.centrumxp.pl/dotNet/20,kategoria,Kurs-C-cz-I.aspx
http://virtualstudy.pro

PS. Python na podstawy podstaw jest bardzo dobry.

0
eee napisał(a):

Wg mnie najlepiej jest skakać na głęboką wodę. Wymyślaj sobie coraz trudniejsze projekty i je pisz(zacznij od czegoś na poziomie kalkulatorów, potem możesz sie pokusić o jakąś grę tekstową). Co do technologii to szukaj w google jak najłatwiej jest zrealizować dany problem. W ten sposób możesz poznać kilka środowisk. A jeśli taka praca cię zniechęci do programowania to znaczy że sie do tego nie nadajesz bo to musi być twoją pasją.

Na pewno mnie nie znudzi nie ma takich szans :) .

0

Jeżeli chcesz nauczyć się programowania przy pomocy C#, a nie tylko składni, to koniecznie przeczytaj "Head First C#" - książka świetna, język jest narzędziem do nauki, a nie celem, w dodatku wszystko jest luźno napisane i mega ciekawe. Poznaj najpierw język, a potem będziesz mógł zająć się tym co lubisz, czyli tworzeniem stron www, z wykorzystaniem poznanych języków. Będziesz miał kompletny arsenał - HTML, CSS, JavaScript i ASP.NET :)

0

@wad Nie poddawaj się. Prześpij się i wróć do tego jutro.

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