08.01.2014 | 21:04
A kad vam dosadi Brainfuck, istražite Malbolge.
BTW, ovu smo diskusiju već jednom vodili, zar ne? U međuvremenu sam se malo bolje pripremio.
Zahvaljujući svojoj honorarnoj aktivnosti među studentima, imao sam prilike bolje shvatiti fundamentalno pogrešan pristup kojeg većina programera ima u pokušajima da druge pouči programiranju.
Pri tom ne govorimo o tome da nekog tko je već jednom, nekad, bilo kad, stekao sposobnost apstraktnog i strukturiranog razmišljanja i već ovladao algoritmiranjem, tj. "pisanjem" programa u generičkom pseudojeziku, treba naučiti specifičnosti i sintaksu nekog određenog programskog jezika. Ne, govorimo o tome da nekog tko nikad nije bio doveden u situaciju da detaljno i precizno opiše postupak pripreme 2 jaja na kajganu nekom tko nikad nije vidio jaje, ulje, tavu ni plinski plamenik, a kamoli da na apstraktnoj razini zamisli i strukturira način realizacije generičkog problema - naučiš najprije kako razmišljati kao programer, pa ga tek onda gurneš u guste šume C-a, Jave, Pythona i ne znam čega.
Elem, i ovdje smo, na Jabučnjaku, u nekoliko navrata (
navrat1,
navrat2) imali prilike vidjeti unezvijerene brucoše koje je neki suludi profesor gurnuo da u isto vrijeme uče strukturirano razmišljanje, načela algoritmiranja, linearnu algebru i programski jezik C (kao, je l', idealan da početnik u programiranju zauvijek zamrzi programiranje i radije odabere životni poziv praznitelja kontejnera za smeće u ružni zeleni kamion, nego onaj programera) i pomagati im da se iskoprcaju iz zadaće računanja inverzne matrice u jeziku koji niti ne zna što je matrica, a da njima pri tom nitko nije objasnio što je "pointer" (kao da bi to i shvatili, čak i da je netko, u toj fazi učenja - pokušao).
Dakle, ako nekom želiš zgaditi bilo koju ljudsku djelatnost, pokušaj ga njoj poučiti tako da od njega očekuješ da istovremeno savlada i usvoji temeljna načela te djelatnosti, metodologiju i alate. Sve odjednom. Samo naprijed.
Ti bi dijete u 3. razredu učio programiranju tako da ga gurneš u Unity...
AAAAAAAAA!
Razlog zašto se računalno programiranje djeci mlađeg školskog uzrasta približava upravo kroz Logo je psihološki, prije svega:
1. da bi netko nešto naučio, potrebna je ponajprije *USTRAJNOST*. Vjerujem da se mnoštvo djece oduševi kad skuži da kompjuter uspješno zbraja, oduzima, množi i dijeli u djeliću sekunde. No, vrlo ih je malo kojima je to dovoljno zanimljivo da ih zadrži dovoljno dugo da nešto i nauče o programiranju.
2. djeca po definiciji imaju manju ustrajnost nego odrasli (a u prosjeku ni odrasli je nemaju baš puno) i teško zadržavaju pažnju dugo vremena na jednoj temi. Osobito ako nema njima neposredno zanimljivih rezultata
3. likovni i zvukovni aspekti su, kao neposredno senzorički, uvijek većini djece zanimljiviji od matematičkih, numeričkih i drugih apstraktnih aspekata i, kao takvi, puno ih uspješnije drže zainteresiranima i ustrajnima u učenju nečeg
4. upravo zato je Logo (koji je u praksi jednako beskoristan kao i Brainfuck i Malbolge) odličan za učenje programiranja u vrlo mladoj dobi
To što si ustvrdio da bi Logo nekog u trenutku kad treba preći na neki "normalni" programski jezik - prije odbio od programiranja - jednako je kao da kažeš da će udžbenici matematike za 1-4. razred, takvi kakvi jesu, odbiti djecu od matematike kad dođu u 5. ili 6. razred.
Da, odbit će ih - one koji nisu za matematiku (matematika uz puno vježbanja zahtijeva i određeni talent, kao i glazba, i slikanje, i...) će odbiti i oni će zauvijek ostati na razini matematike od prva 4 razreda osnovne. I, više-manje, u njihovom životu im nikad više od toga niti neće trebati.
Isto tako će i u programiranju odbiti onu djecu koja nisu za programiranje. No harm done. Isto bi ih tako odbio da im u 7. razredu pokažeš Basic ili Pascal, ili Python, ili whatever, a da im prije nisi ništa pokazao. Međutim, onoj djeci koja jesu za programiranje - Logo u ranoj dobi će ubrzati krivulju učenja. Python (a da ne govorim o nekoj još složenijoj razvojnoj okolini kao što je Unity) u dobi od 9 godina ne može to postići. Jednostavno, dijete nema dovoljno izgrađenih stepenica spoznaje da znanje konkretnog programiranja osloni na nešto što već zna. I onda to što nauči ostaju samo napamet naučeni fragmenti koje može ili napamet replicirati, ili zaboraviti. Naravno, osim ako se ne radi o wunderkindu.
Isto kao kad gimnazijalce (od kojih mnogi danas završe gimnaziju čak i vrlo uspješno, a da nikad, *NIKAD* nisu ni na 5 minuta ništa čuli o programiranju) na prvoj godini faksa pokušavaš istodobno naučiti linearnoj algebri, algoritmiranju i razbarušenoj sintaksi C-a ili nekog izvedenog jezika.