Vyšel `český překlad` vynikajícího `How To Think Like a Computer Scientist - Learning with Python` od Jeffrey Elknera a spol. Kniha je koncipována jako skutečná učebnice pro učitele i studenty s přehledně zpracovanou teorií i skutečnými příklady k řešení. Přeložil ji Jarda Kubias.
Jeffrey Elkner svými slovy:
Jak a proč jsem začal používat Python
V roce 1999 byly poprvé skládány zkoušky z programování v rámci programu Advanced Placement (AP) v jazyce C++. Stejně jako na mnohých středních školách v zemi, tak i na naši škole v Arlingtonu mělo rozhodnutí o změně programovacího jazyka přímý vliv na skladbu tohoto vyučovacího předmětu. Až do této doby byl při výuce používán Pascal jak v našich prvních ročnících, tak v kurzech AP. Pro školní rok 1997-98 jsme rozhodli, že přejdem na C++ abychom v dalším roce mohli být ve shodě s programem AP.
Po dvou letech jsem nabyl přesvědčení, že C++ není vhodný pro úvodní kurzy do programování. I když je to jazyk velmi mocný, je také těžký pro učení i výuku. Neustále jsem se potýkal s obtížnou skladbou jazyka a vícerými způsoby řešení problémů, v důsledku čehož jsem zbytečně ztrácel zájem mnoha studentů. Jsa přesvědčen, že musí existovat lepší alternativa, hledal jsem náhradu za C++.
Hledal jsem jazyk, který poběží jak na našich GNU/Linux počítačích ve škole, tak i na platformách Windows a Macintosh, které většina našich studentů používá doma. Chtěl jsem aby program byl "free", aby jej mohli používat i méně majetní studenti. Chtěl jsem jazyk používaný profesionálními programátory, mající širokou vývojářskou obec aktivních spolupracovníků. Jazyk, který by podporoval jak procedurální, tak objektově orientované programování. Nejdůležitějším požadavkem bylo, aby se snadno učil i vyučoval. Nejlepším kandidátem pro tuto roli byl Python.
Požádal jsem jednoho našeho talentovaného studenta, Matta Ahrense, aby Python vyzkoušel. Během dvou měsíců se nejenom jazyk naučil, ale napsal aplikaci nazvanou pyTicket, která umožňovala našemu sboru hlásit technologické problémy přes internet. Věděl jsem, že by Matt nebyl schopen dokončit tak rozsáhlou aplikaci ve stejně krátké době, kdyby ji psal v jazyce C++. Tento úspěch, spolu s Mattovým pozitivním hodnocením jazyka mi naznačoval, že Python je řešení které jsem hledal.
Nalezení učebnice
Po rozhodnutí, že v příštím roce použiji Python v obouch třídách, kde učím úvod do programování, byla nejnaléhavějším problémem neexistence vhodné učebnice.
Pomohly mi volně šiřitelné texty. Předtím v témž roce mě Richard Stallman seznámil s Allenem Downeym. Oba jsme mu projevili zájem o vytvoření volných učebních textů. Allen měl již napsanou učebnici pro první ročník předmětu programování How to Think Like a Computer Scientist (#). Když jsem tu knihu četl, věděl jsem okamžitě, že ji chci použít ve svých třídách. Byl to nejsrozumitelnější text o programování, jaký jsem kdy viděl. Spíše než jednotlivé rysy jazyka zdůrazňoval proces myšlení spojený s programováním. Již samotná četba ze mne okamžitě dělala lepšího učitele.
How to Think Like a Computer Scientist nebyla jenom vynikající kniha, byla také publikována pod licencí GNU, což znamenalo, že může být volně použita a měněna podle potřeb svého uživatele. Když jsem se rozhodl, že použiji Python, napadlo mne, že mohu převést Allenovu originální verzi pro Javu na verzi pro Python. Zatímco bych sám o sobě nebyl schopen napsat samostatnou učebnici, s pomocí Allenovy knihy to možné bylo. Byla to také ukázka toho, že model společného vývoje softwaru je použitelný i pro výukové texty.
Prace na knize během posledních dvou let byla přínosná nejen pro mne ale i pro mé studenty, kteří se na této práci podíleli nemalou měrou. Protože jsem mohl provádět okamžité změny kdykoli někdo nalezl gramatickou chybu či obtížnou pasáž, povzbuzoval jsem je k hledání chyb tím, že dostávali zelené puntíky pokaždé, když přišli s návrhem, který způsobil změnu v textu. To mělo dvojí přínos v tom, že byli povzbuzováni aby text četli pozorněji a zároveň v tom, že text byl důkladně revidován svými nejdůležitějšími kritiky - to jest studenty samými.
Věděl jsem, že pro převod druhé části knihy, zabývající se objektově orientovaným programováním, je zapotřebí někoho s většími zkušenostmi v programování. Kniha zůstávala v nedokončeném stavu více než půl roku až opět Open Source komunita poskytla potřebnou pomoc pro její dokončení.
Obdržel jsem email od Chrise Meyerse projevující zájem o knihu. Chris je profesionální programátor, který vloni začal učit programování v Pythonu na Lane Community College ve městě Eugene v Oregonu. Potřeba učebního textu přivedla Chrise ke knize a okamžitě začal pomáhat. Ke konci školního roku měl napsaný doplňující projekt, který publikoval na našich webových stránkách http://openbookproject.net pod názvem Python for Fun a metodicky vedl několik mých pokročilých studentů v tematech na která jsem sám nestačil.
Úvod do programování v Pythonu
Proces převodu a používání knihy How to Think Like a Computer Scientist během posledních dvou let potvrdil vhodnost Pythonu pro výuku začínajících studentů. Python skvěle zjednodušuje příklady v programu a usnadňuje výuku důležitých programátorských konceptů.
Ukažme si to na prvním příkladu z textu knihy. Je to tradiční program "hello, world", který ve verzi C++ (#) vypadá takto::
#include <iostream.h>
void main()
{
cout << "Hello, world." << endl;
}
ve verzi Pythonu z toho je::
print "Hello, World!"
I když je to příklad triviální, Python z něho vychází jako favorit. V našem Yorktownském předmětu Programování-I se nepředpokládají žádné předchozí znalosti, takže mnozí studenti vidí uvedený příklad poprvé v životě. Někteří jsou nepochybně poněkud nervózní, protože slyšeli, že naučit se programovat je těžké. Verze C++ (#) mne vždy nutila volit mezi dvěmi neuspokojujícími možnostmi: buďto se pustit do vysvětlování příkazů #include, void main(), {, a } a riskovat, že zmatu a zastraším některé studenty na samém počátku, nebo jim říci "O tyto věci se zatím nestarejte" a riskovat to samé. Pedagogickým záměrem v této části kurzu je seznámit studenty s pojmem programového příkazu a nechat je napsat svůj první program. Program v jazyce Python nabízí přesně to, co je potřebné a nic víc.
Porovnání vysvětlujících textů u jednotlivých verzí knihy (#) dále ilustruje, co to znamená pro začínajícího studenta. Ve verzi C++ je třináct odstavců vysvětlování k "Hello, world!"; ve verzi pro Python jsou jenom dva. Navíc, přebývajících jedenáct odstavců se nezabývá "velkými tématy" programování, nýbrž podrobnostmi syntaxe C++. Totéž se opakuje v celé knize. V Pythonovské verzi mizí celé odstavce jenom proto, že pro vysvětlení jasnější syntaxe Pythonu jsou nepotřebné.
Použití jazyka vyšší úrovně jako je Python dovoluje učiteli odložit výklad o detailech nižší úrovně, souvisejících s prací počítače, do doby, kdy mají studenti potřebné znalosti k lepšímu pochopení detailů. To umožňuje didakticky podávat "první věci jako první". Nejlépe se to ukáže na tom, jak Python zachází s proměnnými. V jazyce C++ je proměnná jméno místa, které obsahuje nějakou věc. Proměnné včetně svého typu musejí být deklarovány předem částečně proto, aby se předurčila velikost místa, na které odkazují. Pojem proměnné je tak svázán s hardware počítače. Fundamentální a mocný koncept proměnné je již tak dost obtížný pro začínající studenty (jak programování tak algebry). Bajty a adresy věci nepomohou. V Pythonu je proměnná jméno, které odkazuje na nějakou věc. To je pro začínajícího studenta mnohem intuitivnější pojem a je bližší významu "proměnné", se kterou se seznámil v předmětu matematiky. Letos jsem měl s učením proměnných mnohem méně potíží než v minulosti a ztrávil jsem méně času s pomáhaním pomalejším studentům.
Jiným příkladem toho, jak Python napomáhá při výuce a učení programování je jeho syntaxe pro funkce. Moji studenti měli vždycky velké potíže s porozuměním pojmu funkce. Hlavní problém se točí kolem rozdílu mezi definicí funkce a jejím voláním a kolem příbuzného rozdílu mezi parametrem a argumentem. Python přichází se spasitelskou skladbou, která je přímo skvělá. Definice funkcí začínají klíčovým slovem def, takže prostě studentům říkám: "Definuješ-li funkci, začni slovem def a přidej její jméno; když ji voláš, jednoduše napiš její jméno". Parametry souvisí s definicí funkce, argumenty s jejím voláním. Nejsou žádné specifické typy funkcí či parametrů, které by se při výkladu stavěly do cesty, takže jsem nyní schopen naučit funkce v polovině dřívějšího času s lepším pochopením.
Použití Pythonu zlepšilo účinnost výuky programování u všech studentů. Zaznamenávám vyšší míru úspěšnosti a menší míru frustrací než jsem zažíval během oněch dvou let, kdy jsem učil C++. Postupuji rychleji s lepšími výsledky. Více studentů si v předmětu programování osvojí schopnost tvořit smysluplné programy s pozitivním postojem vůči této činnosti.
Před titulem How To Think Like a Computer Scientist: Lerning with Python vyšly tituly How To Think Like a Computer Scientist: Java Version a How To Think Like a Computer Scientist: C++ Version.
Český překlad: http://howto.py.cz/index.htm
How To Think Like a Computer Scientist - Learning with Python: http://howto.py.cz/english/
Pavel Kosina
0 komentářů:
Okomentovat