[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