Jak najskuteczniej uczyc sie programowania ?

1

Witam.
Co sadzicie na ten temat i jak Wy sie uczycie albo uczyliscie ?
Chodzi mi przede wszystkim o 2 podejscia (pewnie jest ich wiecej, jesli tak to podajcie):

  1. Podejscie ktore ja stosuje - czyli przerabianie tematow z roznych 4 jezykow oraz algorytmow, struktur danych i do kazdego tematu kilka-kilkadziesiat programow roznej wielkosci (od ok. 50 linii w 1 pliku do programow skladajacych sie z kilku plikow i majacych po kilkaset linii).
  2. Skupienie sie najpierw na teorii i 1 jezyku (czyli poznanie calego jezyka programowania, algorytmow i struktur danych) ale za to pisanie duzo wiekszych programow niz te z 1-go podejscia i pomijanie malych programow - w tym podejsciu widze mozliwosc wiekszej ilosci bledow i frustracji oraz brak rozeznania co do innych jezykow (wykluczam jezyki bardzo podobne do siebie typu Java i C#). Ale czy to podejscie moze dac szybsze efekty ?
6

Pierwszy sposób to wg mnie recepta na stratę czasu, pisanie HelloWorldów i innych 50-linijkowych pierdółek w n-językach nie przybliża do programowania sensownych rzeczy. W ogólności na początku, jeśli nie ma się już jakiegoś pojęcia o programowaniu, rozpraszanie się wieloma technologiami nie może skończyć się dobrze.
W drugim sposobie też mi się nie podoba słowo "całego". Nie trzeba znać całego języka, algorytmów, struktur danych, żeby pisać w nim sensowne rzeczy. Gdyby słowo "cały" zamienić na "wystarczający" to można brać dowolną listę projektów dla początkujących wpisując na Google coś w stylu programming project ideas i je implementować.

No chyba, że jesteś na poziomie, że nie wiesz jak sprawdzić czy słowo jest palindromem, wtedy może i takie 50-linijkowe rzeczy są wyzwaniem.

3

Zdecydowanie podejście 2.

1

Podejście nr 1 jest bez sensu. Co z tego, że będziesz bezbłędnie pisał hello worldy, jak wyłożysz się na pierwszej większej aplikacji?

0

prawda jest taka że to zależy od Ciebie, każdy jest inny i uczy się w nieco inny sposób. Testuj i kombinuj, co Ci szkodzi experymentować? ;)

2

Żeby nie papugować co wcześniejsi koledzy już napisali, to dorzucę to:

teofrast napisał(a):
  • w tym podejsciu widze mozliwosc wiekszej ilosci bledow i frustracji oraz brak rozeznania co do innych jezykow

Błędy i frustracja to jedna z podstaw tej roboty.
Im więcej się nadenerwujesz przy swoich wpadkach, tym więcej wniosków z nich wyciągniesz i tym lepiej utkną w pamięci.
A przy okazji zobaczysz czy to naprawdę jest dla Ciebie, bo wbrew pozorom to nie jest do końca tak, że "płaco za siedzenie na dupie i klikanie w kąkuter".
Ba, ja sam wielokrotnie bawiłem się na "początku" w ten sposób, że regularnie wyrzucałem projekt do śmieci i zaczynałem od nowa, starając się to zrobić lepiej.

Jak ogarniesz sensownie podstawy, to rozeznanie w językach staje się trochę kwestią wtórną (bo w każdym dasz radę coś naskrobać, lepiej lub gorzej).
Więcej sensu ma poznanie jednego ekosystemu na tyle, żeby pisać "coś większego", co jest bliżej rzeczywistych projektów.
I z tego względu, o ile oczywiście już na tym etapie, świadomie, nie celujesz np. w programowanie niskopoziomowe, to fajnie zacząć od języków mniej ryjących banię.
Ale to tylko moje zdanie, że podejście "top - down" jest łatwiejsze.

0

Wszystko zależy od technologii. W c++ np proces rozwoju w celu znalezienia pracy jest inny niż w językach webowych.

Ogólnie jednak to drugie podejście na początek. Weź sobie prosty język np python na start

0

Interesuje mnie proces rozwoju w celu dolaczenia do projektu (1 lub wiecej) open-source opartego na Linuxie a nie na pracowanie w IT (chyba ze podczas programowania dla open-source okaze sie ze jestem naprawde potrzebny ale na to sie nie zanosi).
Trudniej testowac taki wiekszy program a ja lubie przetestowac program najlepiej jak potrafie.
Lubie uczyc sie sekwencyjnie i kazdy algorytm, funkcjonalnosc jezyka przetestowac (a w roznych jezykach istnieja oprocz identycznych takze zupelnie odrebne, a widzialem projekty open-source pisane w wielu jezykach)

0

Zdecydowanie jak przedmówcy mówią - dobry sposób to sposób 2. :) Ja jestem osobą, która w liceum uczyła się w taki sposób programowania jak Ty i wiesz co? I znałem podstawy java, js, html, css, php, mysql, c++, a nic w tym realnie nie potrafiłem zrobić, więc pytanie, po co? :) Na studiach, a właściwie pod ich koniec zacząłem po prostu realizować pewien swój projekt, który realizuję do tej pory i nauczyłem się znacznie, znacznie więcej + jestem w stanie realnie już myśleć o szukaniu jakiegoś stażu jako programista z powodzeniem, który da mi etat. Owszem, rozwiązywanie programów, aka algorytmy, to bardzo ważny temat w programowaniu, właściwie najważniejszy, ale warto robić to przy okazji budowy jakiegoś swojego projektu, który poza rozwiązywaniem problemu jako takiego da Ci też więcej praktycznych rzeczy z dziedziny programowania, nauczysz się jakichś nowych przydatnych bibliotek, a do tego takie podejście daje dużo frajdy - uczenie się wszystkiego, bez większego celu, to główny powód, czemu na pewien czas (3-4 lata) niemalże kompletnie zostawiłem programowanie, w tym wszystkim zapomniałem o najważniejszej rzeczy - o zabawie. ;)

2

Tak właściwie zastanawia mnie celowość zakładania tego wątku - z jednej strony pytasz się która metoda lepsza, a z drugiej, jak każdy Ci mówi, że bez sensu jest robienie jednej rzeczy w 4 językach na raz, to upierasz się, że i tak wolisz swój sposób. W takim razie, po co ten wątek, skoro i tak nie dasz się przekonać osobom, które przez to przechodziły? :D
Druga rzecz, nie bój się dużych projektów, bo są duże. Te duże projekty składają się z małych części, które możesz powoli realizować, ja sam swojego projektu nie realizuję z prędkością światła, robią go dość wolno, często coś totalnie zmieniam i robię od początku, ale w ten sposób sporo się uczę i przynajmniej robię się coraz bardziej użyteczny, aniżeli wiem jak napisać program liczący silnię w 4 językach, bo na co to komu? Jak będziesz w stanie zrobić to w jednym, to w każdym kolejnym przyjdzie to stosunkowo łatwo. :) Generalnie Twoje metoda jest okej, dla zabawy, jeśli Ci ona odpowiada i masz z tego radość - rób tak, ale pod kątem przyszłego dołączenia do projektu, raczej lepsze będzie budowanie obycia z czymś bardziej konkretnym samemu - ba, nie sądzę, aby do pracy, czy nawet do zwykłego projektu, ktokolwiek Cię wziął, mając w portfolio parę takich samych programów stworzonych w innych językach, które nie będą w żaden sposób konkretem, a jedynie będą poligonem doświadczalnym - przy aplikowaniu do projektów raczej bardziej przydatne będzie pokazanie czegoś konkretnego w jednym języku, aniżeli "pierdół" w 4. ;)

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