A Java-oktatás veszélyei
From The Joel on Software Translation Project
[edit] A Java-oktatás veszélyei
2005. december 29.
Joel Spolsky
Lusta kölkök.
Mi történt az igazi, kemény munkával?
Szenilissé válásom kezdetének biztos jele, hogy manapság egyre többet morgolódom "ezeken a mai fiatalokon", akik nem akarnak, vagy nem is tudnak már keményen dolgozni.
Gyerekkoromban _én_ lyukkártyákon tanultam programozni. Ha hibáztunk, a javításra nem voltak olyan modern eszközeink, mint a Backspace billentyű; eldobtuk a lyukkártyát és kezdhettük az egészet elölről.
Amikor 1991-ben elkezdtem programozókat interjúztatni, általában hagytam, hogy a feladott kódolási feladatokat a nekik tetsző nyelven oldják meg. 99 százalékuk a C-t választotta.
Manapság általában a Java-ra esik a választás.
Ne értsetek félre: a Java-val mint implementációs nyelvvel semmi gond nincs.
Álljunk meg egy pillanatra, ezt a kijelentést módosítanám. _Ebben_ a cikkben nem állítom, hogy a Java-val, mint implementációs nyelvvel bármi probléma lenne. Van vele elég gond, de ezek részletezése várjon inkább egy másik cikkre. Én azt állítom, hogy a Java általánosságban nem elég nehéz programozási nyelv ahhoz, hogy segítségével különbséget tegyünk nagyszerű és közepes programozók között. Lehet, hogy munkára a Java kitűnő nyelv, de mai témánk nem ez. Akár még addig is elmegyek hogy az, hogy a Java nem elég nehéz, "feature és nem bug", de a probléma akkor is fennáll.
Szerény tapasztalatom szerint két dolog van, amit tradicionálisan minden egyetemi informatikai tantervben oktatnak és sokak soha nem értenek meg igazán: a mutatók és a rekurzió.
Régebben a képzés egy adatszerkezetekkel foglalkozó kurzussal kezdődött ahol bevezették a láncolt listákat, hashtáblákat és hasonlókat erőteljesen építve a mutatókra. Ezek a kurzusok sokszor szórótárgyakként működtek: olyan nehezek voltak hogy mindenki aki nem volt képes megfelelni egy felsőfokú informatikai képzés szellemi kihívásának itt feladta - ami végülis jó dolog; ha azt hiszed hogy a mutatók nehezek akkor várj csak amíg fixpont-elméleti bizonyításokat kell végezned.
A srácok akik középiskolában jól elvoltak azzal hogy pong-ot kódoltak BASIC-ben az Apple II-jükre elmentek főiskolára, beiratkoztak a CompSci 101-re (egy adatstruktúra kurzus) és amikor szembesültek az egész mutató-üggyel kettéállt a fülük - a következő pillanatban már azt láttad hogy politológiából diplomáznak mert a posztgrad jogászképzés mégiscsak jobb ötletnek tűnt nekik. Mindenféle lemorzsolódási adatokat láttam már az informatikai felsőoktatásra; általában 40% és 70% között vannak. Úgy tűnik hogy az egyetemek erre pocsékolásként tekintenek; szerintem ez mindössze azoknak a szükségszerű kiválogatása akik nem lennének boldogak vagy sikeresek programozóként.
A másik kurzus ami sok ifjú informatika-hallgatónak gondot okoz az ahol a funkcionális programozást tanítják, inkluzíve rekurzív programozás. Az MIT ezeken a kurzusokon nagyon magasra tette a lécet - létrehozva egy kötelező kurzust (6.001) és egy jegyzetet (Abelson és Sussman: Structure and Interpretation of Computer Programs) melyeket a legjobb informatikai felsőoktatási intézmények tucatjai - vagy inkább százai - a de facto bevezetésként a számításelméletbe használtak. (Az előadások egy régebbi változata online megtekinthető - erősen ajánlott anyag.)
Ezen kurzusok nehézsége megdöbbentő. Az első előadáson nagyjából az egész Scheme-et lezavarták és már itt bevezetésre kerül egy fixpont-függvény aminek a bemenete egy másik függvény. Amikor a Penn-en végigszenvedtem magam egy hasonló kurzuson (CSE121) láttam hogy sok hallgató - ha nem éppen a többség - bicskája egyszerűen beletört a dologba. Túl nehéz volt az anyag. Írtam egy hosszú siránkozó levelet a professzornak amiben kifejtettem hogy ez így nem tisztességes. Sirámaim - vagy valamelyik másik reklamáló panaszai - meghallgatásra találhattak a Penn-en: ezt a kurzust ma már Java-ban tartják.
Bárcsak ne hallgattak volna a panaszokra.
(... az eredeti cikk meg hosszan folytatodik ...)
