[python] Brainstorm request: Vyuka programovani na gymplu
superman
feed na centrum.cz
Pátek Červen 6 14:22:59 CEST 2008
> Já už třeba na builderu.cz <http://builderu.cz> napsal, že Java
> jakožto jazyk, který všechno
> emuluje něčím jiným není dobrý učební jazyk.
>
>
> Polozme si otazku, jestli je to dobre nebo spatne. Chceme se naucit
> vytvaret robustni aplikace a algoritmy nebo se hrabat v pocitaci na
> nizke urovni a primo komunikovat s HW? V tom prvnim pripade Java nema
> zadny problem, naopak to "emulovani" (zapouzdreni) ma svoji filosofii.
>
Tady vůbec nejde o low level, ani o tyto věci. Tady jde o to, že
začínající programátor učící se na Javě si plete prostor jmen
(namespace) se třídou, stejně tak modul nazývá slovem třída. Výčtový typ
si plete se slovem třída. Globální proměnné jsou pro něho statickým
členem třídy. Dále mu není jasný pojem typu proměnné, protože mu opět
splyne se slovem třída. A můžu takto uvést desítky dalších zamlžovacích
taktik, kdy i z talentovaného člověka Java udělá někoho, kdo bude tento
zmatek hodně dlouho rozplétat. Zkrátka v Javě se vše emuluje stylem
"uděláme třídu".
Java se prostě tak omezená, že jiná taktika, než emulovat vše třídou
není. Koneckonců původně to měl být jednoduchý jazyk pro pračky - a čím
osekanější, tím lépe se bude implementovat.
> Myslim, ze kdyby Java mela tak omezene prostredky, ze by napriklad
> bankovni domy tuto platformu nepouzivaly. Naopak, existuje siroke
> spektrum nejruznejsich aplikacnich serveru, portalu, CMS, DMS,
> nastroju integracni vrstvy apod. Tyhle moznosti jsou vykoupeny plossi
> krivkou uceni.
Nepleťte si prosím omezenost prostředků s omezeností jazyka. Ale zkuste
si dítě učit ve slabikáři abecedu tak, že mu dovolíte kreslit písmenka,
ale jenom vodorovné a svislé čárky, nic šikmého. To je asi styl Javy.
Nakonec i šikmou čáru nakreslíte pomocí interpolace dostatečně hustou
řadou krátkých vodorovných a šikmých čárek, ale proč to dítěti takto
komplikovat?
Myslím, že začínající programátor by se měl učit na programovacím
jazyce, který přímo dělá to co potřebuje. Kde slovo X je prostě X, a
není to emulation by class. Určitě je lepší, když v Pythonu udělá modul
- a Python mu dá jasně najevo, že modul může mít kolik chce tříd,
proměných, atd.. - a bude mu hned jasné, že modul a třída jsou naprosto
odlišné pojmy, například.
Navíc nesdílím nadšení mnoha lidí na OOP pro začátečníky a děkuji Bohu,
že jsem se začal učit neobjektově. Myslím, že začátečník by hned neměl
být nucen do OOP, ale měl by se nejdřív naučit základy bez něho.
>Vzhledem k tomu, ze se bavime o uceni, tak souhlasim, ze Javu ne. Ale
co treba Groovy, zejo? :-)
A proč?
> Mě naopak Python přijde jako velmi vynikající pro začátek. Čistý
> jazyk,
> výsledky vidíte hned, neprasí se tam jako v PHP, neobchází se všechno
>
>
> Neprasi, ale prasit muze. Viz globalni promenne, cross-class sdilene
> promenne apod. Vetsina dostatecne flexibilnich jazyku ze sve podstaty
> umoznuje bastleni. Je to spis o kulture programatoru, jestli se k tomu
> snizi nebo ne.
Globální proměnné nejsou prasení v rozumném počtu. Stejně tak jako
leccos dalšího.
A určitě je lepší prasení, než zastírání něčeho něčím. Prasit totiž jde
v každém jazyce, naprosto každém. Znáte tu větu: "Fortranista píše v
každém programovacím jazyce jako ve Fortranu".
Miloslav Ponkrác
Další informace o konferenci Python