K problematice výuky programování v běžných vývojových nástrojích

Podobné dokumenty
Visual Studio ve výuce informatických předmětů

Jaký programovací jazyk učit jako první a jak ho učit?

Úvod. Programovací paradigmata

Úvod do programovacího jazyka Python

Vývojové nástroje jazyka Java

Překladač a jeho struktura

Nástroje pro vývoj software

5 ÚVOD DO TESTOVÁNÍ SOFTWARE. 6 Testování software ve vývojovém prostředí MICROSOFT VISUAL STUDIO V hlavním menu volba Debug

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

První kroky s METEL IEC IDE

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Google Apps. kalendář 2. verze 2012

Delphi podstata, koncepce a metody MDI aplikace

SignEditor 1 - návod k použití

Vytváření DVD s DVDStyler

Registrační číslo projektu: CZ.1.07/1.5.00/ Název projektu: Moderní škola 21. století. Zařazení materiálu: Ověření materiálu ve výuce:

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

KOMU JE KNIHA URČENA?

THEOPHILOS. (návod k použití)

Úvod do programovacího jazyka Python

Výuka programování v jazyce Python

Rozklad na prvočinitele. 3. prosince 2010

Seznámení s prostředím dot.net Framework

1 Úvod 1.1 Vlastnosti programového vybavení (SW)

Příloha 6. Palety nástrojů

Moodle uživatelská příručka

Jak správně psát scénáře k případům užití?

Vstupní požadavky, doporučení a metodické pokyny

Algoritmy a algoritmizace

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Programování v jazyce C a C++

Generátor kódu. a jeho uplatnění ve výuce programování. Rudolf PECINOVSKÝ rudolf@pecinovsky.cz

Soustavy více rovnic o více neznámých I

Používání u a Internetu

Programování v jazyce VISUAL BASIC.NET

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

ALGORITMIZACE A PROGRAMOVÁNÍ

Testování aplikace Facebook Messenger pro Windows Phone 8.1

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

PRVNÍ ELASTICKÝ INFORMAČNÍ SYSTÉM : QI

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Studentské hodnocení výuky manuál pro vyučující

CASE nástroje. Jaroslav Žáček

Úvod do programovacích jazyků (Java)

KAPITOLA 3 - ZPRACOVÁNÍ TEXTU

INFORMATIKA. Grafické studio ve škole

CASE. Jaroslav Žáček

Windows 8.1 (5. třída)

Úvod do programu Solid Edge

Programujeme v softwaru Statistica

Modulární systém dalšího vzdělávání pedagogických pracovníků JmK v přírodních vědách a informatice CZ.1.07/1.3.10/ Brožura dobré praxe

[BAL-MLP] Multiplayer

Microsoft Visio 2013 vypadá jinak než ve starších verzích, proto jsme vytvořili tuto příručku, která vám pomůže se s ním rychle seznámit.

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Výuka programování na střední průmyslové škole

Results of innovation of the course Application software

INOVACE PŘEDMĚTŮ ICT. MODUL 11: PROGRAMOVÁNÍ WEBOVÝCH APLIKLACÍ Metodika

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

01. HODINA. 1.1 Spuštění programu VB Prvky integrovaného vývojového prostředí. - pomocí ikony, z menu Start.

Tvorba internetových aplikací s využitím framework jquery

Program a životní cyklus programu

PROFIL ŽÁKA STŘEDNÍ ŠKOLY

Windows 10 (5. třída)

Soulad studijního programu. Aplikovaná informatika

Několik rad pro psaní článku na Wikipedii

Komprimace/Dekomprimace

Programovací software ConfigTool. Základní obsluha a postup připojení k zařízení přes USB a GPRS. Verze 2.00

Ladění ovladačů pomocí virtuálního stroje...2 Úvod...2 Ladění ovladačů pomocí dvou fyzických počítačů...2 Ladění ovladačů pomocí jednoho fyzického

IMPLEMENTACE ECDL DO VÝUKY MODUL 7: SLUŽBY INFORMAČNÍ SÍTĚ

Zdokonalování gramotnosti v oblasti ICT. Kurz MS Excel kurz 6. Inovace a modernizace studijních oborů FSpS (IMPACT) CZ.1.07/2.2.00/28.

ADAPTIVITA INFORMAČNÍCH SYSTÉMŮ INFORMATION SYSTEM ADAPTIVITY

Zpracování chybějících dat a dat mimo rozsah

MODERN APPROACHES TO TEACHING PROGRAMMING. Rostislav FOJTÍK

Test s uživatelem Ashampoo Burning Studio

ŠVP Gymnázium Ostrava-Zábřeh Úvod do programování

Copyright Jiří Janda ISBN

Angličtina program k procvičování slovní zásoby

Popis programu: Popis přípon důležitých souborů: *.qpf projektový soubor Quartusu

POROVNÁNÍ NĚKTERÝCH SW PRO ZOBRAZENÍ GRAFU FUNKCE DVOU PROMĚNNÝCH

TUR A2 Vojtěch Kessler

Sada 1 - Základy programování

vytvořil Vladimír Hradecký Obsah

Vývoj SW pro mobilní zařízení s ios. Petr Hruška, Skymia s.r.o. Teorie a praxe IP telefonie,

Základy programování (C#) Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1134_Základy programování (C#) _PWP

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování. Předmět: Programování

M4 PDF rozšíření. Modul pro PrestaShop.

Hlavní panely, spouštění panelu, tlačítko start

5.15 INFORMATIKA A VÝPOČETNÍ TECHNIKA

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

Objektově orientované databáze. Miroslav Beneš

Aplikace. vliv na to, jakou mají strukturu i na to, jak pracné je je vyvinout. Bylo vypozorováno, že aplikace je možné rozdělit do skupin

ČÁST 1. Základy 32bitového programování ve Windows

Transkript:

K problematice výuky programování v běžných vývojových nástrojích Aleš Keprt Ústav informatiky, Moravská vysoká škola Olomouc Jeremenkova 1142/42 772 00 Olomouc Hodolany Ales.Keprt@mvso.cz Abstrakt. Příspěvek diskutuje problematiku výuky programování v běžných (zejména komerčních) vývojových nástrojích. První část textu stručně popisuje současnou situaci ve výuce nových programátorů, především na českých vysokých školách. Ukazujeme, že ve výuce programování nelze vystačit jen se speciálními školními výukovými nástroji a musí se používat i nástroje běžné, tj. určené pro vývoj softwaru v praxi. Tím je dán kontext a rámec pro druhou, hlavní část textu, která na vzorovém příkladě Visual Studia diskutuje zejména slabá místa běžných vývojových nástrojů z pohledu potřeb výuky. Pojmenováváme a diskutujeme několik konkrétních problematických či chybějících funkcí, které jsou z pohledu studenta či jeho učitele důležité. Klíčová slova: výuka programování, Visual Studio, vývojové nástroje 1 Úvod do problematiky 1.1 Situace v českém školství S rozvojem počítačů a stále větším rozšiřováním jejich využívání v různých oblastech praxe úzce souvisí i neustálá potřeba dalších a dalších programátorů. Zůstaneme-li konkrétně v České Republice, vidíme, že programování počítačů se dnes běžně vyučuje nejen v rámci informatických studijních oborů na vysokých školách, ale i v dalších studijních oborech a stejně tak i na školách středních a základních. Výuka programování má přitom mnoho různých podob. V rámci studia informatiky a dalších oborů zaměřených na počítače můžeme na všech školách vidět strukturu výuky sestávající z více samostatných výukových předmětů, které společně tvoří pilíře znalostí a tvůrčích dovedností budoucích programátorů. Konkrétní struktura předmětů se na jednotlivých vysokých školách liší, avšak můžeme mezi nimi vysledovat mnohé paralely. Naopak existující odlišnosti mezi školami nejsou ani tak důsledkem jejich jiného zacílení (na jiný segment praxe), ale spíše výsledkem tvůrčí činnosti a osobních preferencí pedagogů, kteří studijní programy a předměty sestavili a vyučují. Velký díl osobitosti studia programování na každé vysoké škole je dán také historickým vývojem, tj. pramení z toho, odkud a jak studium informatiky na daném místě vznikalo, z kterých příbuzných oborů vzešel pedagogický sbor apod. Počítače jako takové a i samotné jejich programování je přitom stále se vyvíjející proces. Vše se stále mění, modernizuje, zdokonaluje a se změnami v programování

více či méně ruku v ruce dochází i ke změnám v jeho výuce. Tyto změny jsou pak i dalším důvodem rozdílnosti jednotlivých škol některé jsou více konzervativní, jiné více pokrokové a odvážné nasazovat do výuky programování nové výukové prostředky a postupy. Na tomto místě je vhodné zmínit také počin organizace ACM (Association for Computing Machinery), nejznámějšího vědeckého spolku v našem oboru. ACM se otázkou Jak vyučovat informatiku a computer science? systematicky zabývá už od 60.let 20.století a jednou za čas vydává podrobně zpracované doporučení, jak by měl vypadat celý studijní program informatiky. Poslední vydání Computing Curricula 2005 (a s aktualizacemi v letech následujících) přitom už rozlišuje pět samostatných studijních oborů neboli tzv. poddisciplín 1 : Computer engineering počítačový hardware Computer science počítačová věda (tj. informatika) Information systems informační systémy Information technology informační technologie Software engineering softwarové inženýrství I zde na českých školách se s různými názvy informatických studií setkáváme často, náplň studia však se samotným názvem až tak nesouvisí a jde spíš o pouhou slovní kosmetiku ; všechny obory od computer science až po software engineering se u nás obvykle umisťují pod společnou nálepku informatika nebo informační technologie. (Podobná situace je však vidět i na mnoha jiných místech ve světě.) 1.2 Proč tomu tak je Popis v předchozích odstavcích má poněkud kritický nádech a může působit dojmem, že všechno je špatně (v české výuce informatiky). Do jisté míry je samozřejmě důvodem k znepokojení už samotný fakt, že na mnoha školách se dlouhodobě ignorují doporučení ACM a vytvářejí se jiné nestandardní studijní konstrukce. Prvním důvodem je samozřejmě malá odbornost učitelů ti se v rámci své vědecké práce typicky věnují na špičkové úrovni zcela jiným projektům než je problematika výuky programování a reálná úroveň výuky tak samozřejmě logicky zaostává za doporučeními expertů ACM, kteří se tímto zabývají intenzivně a dlouhodobě. Na druhou stranu současný stav ve výuce programování je dán i specifiky českého prostředí. Absolventi škol totiž budou pracovat ve zdejších firmách a cílem škol je zejména připravit je k tomu. S výjimkou hl. m. Prahy a možná dvou až tří dalších největších měst není expert v programování či informatice v Česku dobře uplatnitelný, zaměstnavatelé naopak žádají především levnou pracovní sílu ve formě obyčejných dělníků programování a pokud možno ve velkém množství. Totéž podporuje i český systém financování vysokých škol, kde je opět podporována především kvantita a ne kvalita. V případě opačného postupu, tedy při případném kladení důrazu na kvalitu absolventů, by mohl nastat problém s jejich nedostatečnou kvantitou. Ne každý student totiž má nadání a píli na to, aby ve škole zvládl i složitější metody programování. Na doporučeních ACM je přitom zajímavé, že některé na první pohled složitější věci doporučuje jakožto jednodušší jde například

o objektově orientované programování coby náplň úplně prvních hodin výuky začátečníků. Toto téma bylo už také bohatě diskutováno na dřívějších konferencích Objekty a je nad rámec tohoto příspěvku. Analýzou současné situace na vysokých školách a diskuzí o rozdílech teorie a praxe výuky se zabývá i samotný dokument ACM, díky čemuž vidíme, že situace v Česku není v principu nikterak jiná než situace jinde ve světě. 2 Vývojové nástroje 2.1 Běžné a školní nástroje Předchozí kapitola popsala situaci ve výuce programování z několika základních pohledů. V dalším textu se budeme soustředit konkrétně na samotný proces programování ve výuce a speciálně pak na problematiku vývojových nástrojů tam používaných. Tyto nástroje se dnes vyskytují obvykle ve formě IDE (integrated development environment), čili integrovaných vývojových nástrojů. Pro potřeby dalšího textu si je rozdělme na dva typy: Běžné: to jsou všechny ty, které se používají v komerční praxi. Školní: ty jsou určeny speciálně k výuce a ne k použití v praxi. Ať už k výuce programování přistoupíme jakkoliv, někde v jejím průběhu určitě použijeme i běžné vývojové nástroje. Bez ohledu na to, zda je budeme ve výuce používat už od začátku, nebo výuku začneme s pomocí nástrojů školních a ty běžné přidáme až v jejím dalším průběhu, určitě nemůže absolvent vyjít ze školy bez jejich znalosti, protože by byl v praxi problematicky uplatnitelný. Zde musíme znovu zmínit i výuku programování vysokoškoláků neinformatiků, středoškoláků a žáků základních škol. Ti totiž nemají výuku programování složenou z více samostatných předmětů, ale typicky jen jeden předmět informatika či programování a v jeho omezeném čase musí zvládnout vše. Tito studenti se samozřejmě v konečném důsledku naučí daleko méně než systematicky připravovaní informatici, nicméně jde o poměrně velké množství studentů a část z nich skutečně bude programování v budoucnu živit a proto je třeba se jejich situací také zabývat. Tito studenti ve výuce většinou používají právě ony běžné vývojové nástroje a pro nedostatek času je u nich vynechaná výuka na těch školních. 2.2 Důvody existence vývojových nástrojů Z výše uvedené definice typů nástrojů je vidět, že obě možnosti se navzájem nevylučují. Kvalitní nástroje však typicky patří právě do jedné kategorie a je to na nich poznat na první pohled. Důvodem existence běžných nástrojů je samozřejmě neustálá potřeba lidské společnosti vytvářet další nový počítačový software. Co je však důvodem existence těch školních? Těch důvodů je více a pokusíme se identifikovat alespoň několik základních:

Cena, snaha řešit potřeby výuky bezplatnými nástroji Přílišná složitost běžných nástrojů, nepřehlednost pro začátečníky Absence či nedostatek vestavěných pomocníků pro začátečníky Fakt, že vývoj softwaru je komerční proces a tedy také vývojové nástroje jsou komerčním artiklem, je typickou překážkou v jejich používání na školách. V posledních letech je tento problém však na ústupu, protože v oblasti programování se silně prosazují vývojové i další nástroje, které lze používat zdarma. Horší je situace u druhého bodu s pokračujícím vývojem existujících nástrojů také roste jejich složitost. U mnoha z nich je jejich rozsáhlost a tedy i složitost už hodně daleko za hranicí toho, co dokáže běžně pochopit začátečník, speciálně pak při samostudiu. Třetí bod pak charakterizuje fakt, že běžné komerční nástroje typicky nenabízejí žádné pomůcky (či obecně přidanou hodnotu) pro výuku, ale soustředí se jen na dosažení maximální produktivity při práci již vyučeným programátorům. Přitom právě jednoduché pomůcky, inteligentní vestavění pomocníci ( wizardi ) nebo například kontextová ve stylu co je to příkaz if ), které jsou v praxi naprosto zbytečné či nadbytečné, jsou často výhodným pomocníkem začátečníkům při prvních krůčcích v tak cizím a neintuitivním prostředí, jakým je svět počítačů a jejich programování. Čili důvodů ke vzniku specializovaných školních vývojových nástrojů je dostatek. 2.3 Možnosti synergie Zajímat nás samozřejmě musí také otázka synergie, tj. zda je možno sjednotit vývojové nástroje pro praxi a nástroje pro výuku dohromady a to takovým způsobem, aby z toho byl větší užitek než při jejich existenci a používání samostatně. Výuka na školních nástrojích probíhá z toho důvodu, že jsou vhodnější pro výuku hlavně jejich začátcích, kdy jsou potřeby a celková situace studentů někde jinde, než kde se nachází potřeby zkušeného programátora. Kdybychom funkce a obecně řečeno výhody školních nástrojů měli i v běžných nástrojích, ušetřili bychom jistý čas v dalším studiu, kdy bude ve výuce probíhat přechod ze školního na běžný nástroj. Případně u paralelně probíhajících kurzů v různých nástrojích by se studentovi situace značně zpřehlednila, kdyby mohl ve všech těchto kurzech používat jeden společný nástroj. Problematika dosažení synergie samozřejmě naráží na to, že například kurz funkcionálního programování probíhající v prostředí Common Lisp není vhodné spojovat s kurzem programování ve Visual Basicu pomocí Visual Studia. Tyto dva nástroje jsou odlišné nejen z důvodu školního či komerčního zaměření, ale ze samotné podstaty jiného stylu programování. Na to tedy pamatujme a v dalším textu se zaměřme speciálně na tu část výuky, která probíhá v prostředích s podobným stylem programování může to být třeba právě Visual Basic, který je hodně oblíbeným jazykem zejména v kurzech pro začátečníky, neinformatiky a děti.

3 Visual Studio ve výuce Microsoft Visual Studio je nejběžněji používaný vývojový nástroj při programování ve Windows, je tedy vhodným kandidátem na příklad běžného vývojového nástroje a my nyní prozkoumáme jeho možnosti a slabiny použití při výuce. Visual Studio je dostupné v mnoha verzích a edicích placených i zdarma. Vyučuje se v něm především programování v C++, C# a Visual Basicu a kromě prvního ze tří jmenovaných se většinou používá ve výuce i jako nástroj jediný. (Pro C++ existuje i řada jiných nástrojů, z nichž některé mohou být ve výuce výhodné už pro svou jednoduchost. Pro C# a Visual Basic je výběr nástrojů značně omezen, proto se většinou používá jen Visual Studio.) Z výše uvedeného plyne, že by bylo jistě příjemné mít ve Visual Studiu funkce podporující výuku a práci naprostých začátečníků. Podívejme se na některé konkrétní příklady situací, které Visual Studio neřeší buď vůbec, nebo je z pohledu začátečníka řeší nedostatečně. 3.1 Komplikovaná syntaxe jazyka Když v C++ či C# nenapíšete středník na konci příkazu, překladač obvykle ohlásí chybu Expected semicolon., případně pokračuje s překladem na dalším řádku a zahlásí jinou nesrozumitelnou chybu někde v další části zdrojáku. Co na tomto příkladě vidíme: Za prvé je to komplikovaná syntaxe programovacího jazyka. Ačkoliv příkazy nemusejí být na jednom řádku, typicky se tak píší. Komplikovanost pro začátečníka spočívá v přílišné volnosti syntaxe. Visual Basic například vyžaduje, aby každý příkaz byl na samostatném řádku (až na pár výjimek), takže chyby tohoto typu tam nenastávají. Navíc samozřejmě odpadá potřeba středníku za každým příkazem. Ještě větší problém může mít začátečník v pascalu či Delphi, kde se středník nepíše za příkazy, ale jen mezi příkazy, takže v některých speciálních případech za příkazem středník není. 3.2 Chybějící nebo nedostatečná nápověda syntaxe K předchozímu bodu se úzce pojí i další problém: Pokud za příkazem chybí onen středník, překladač vypíše chybu překladu a IDE nijak nepomůže studentovi s jejím pochopením či opravou. Zůstaneme-li u chybějícího středníku, IDE by mělo studentovi srozumitelně a celou větou sdělit, co se děje a jak dál postupovat. Navíc by tato zpráva měla být pokud možno v češtině. (Tato teze vychází z předpokladu, že existuje nějaká poměrně nevelká skupina chyb, které se zcela typicky objevují u začátečníků a přitom jsou dobře identifikovatelné přímo počítačem.) K chybové zprávě překladače Expected semicolon. by tedy mělo IDE přidat vysvětlení ve stylu: Program je v tomto místě nesrozumitelný. Pokud zde měl být konec příkazu, musíte napsat středník. Na konci každého příkazu se píše středník. Podobně počítačem rozpoznatelných chyb je jistě více. Typické je taky narazit na problém překlepu jména třídy či špatné velikosti písmen. Je-li v systému třída či

jmenný prostor System, překladač zahlásí chybu, chceme-li ve zdrojáku použít Sistem či system. IDE by se pak mělo postarat o pomoc studentovi tím, že mu nabídne opravu ve stylu: Slovo Sistem je neznámé. Pravděpodobně jde o překlep a chtěl jste napsat System. U delších názvů tříd, které se v.netu vyskytují běžně, by se velmi hodila výše zmíněná nápověda k chybné velikosti písmen, ale i dalších překlepů, jako např. Process místo Proces apod. Zatímco zkušený programátor si okamžitě překlepu všimne a v mžiku jej opraví, začátečník si marně láme hlavu, co je špatně, a obvykle hledá chybu úplně jinde. 3.3 Nedostatečná podpora projektorů a interaktivních tabulí Ve výuce nejde jen o samostatnou práci studentů. Součástí práce učitele je často i předvádění práce s IDE na projektoru nebo pomocí interaktivní tabule a zde narážíme na problém, že Visual Studio jakožto i další vývojové nástroje nijak nepodporují tuto činnost. Učitel nemá možnost jednoduše otevřít dva pohledy do IDE jeden standardní na monitoru a druhý s daleko větším fontem na projektoru. Nemůže nechat na projektoru svítit stejný náhled a dál pracovat na jiné části projektu. Na počítači s dvěma monitory a dostatečně výkonným hardwarem (především dostatkem operační paměti) je možno problém obejít například otevřením souborů ve dvou instancích Visual Studia, nastavením většího písma v jednom z nich a jeho přesunutím na druhý monitor. Výsledek je pak lepší studenti už mohou vidět jiný náhled, než na jakém učitel pracuje, avšak naopak nemohou vidět online práci učitele a změněné nastavení Visual Studia nejde jednoduše uložit (nelze mít dvě různá nastavení zároveň aktivní u jednoho uživatele). Na tomto poli je ještě jistě co dohánět. 3.4 Chybějící nápověda sémantiky jazyka Podobně jako u výše zmíněných syntaktických chyb by IDE mohlo studentovi pomáhat i s pochopením sémantiky. Na rozdíl od syntaktických chyb, ty sémantické nezpůsobí chybu překladače, takže na první pohled nejsou vůbec vidět. IDE by mohlo začínajícím studentům chápání programů usnadnit pomocí našeptávače sémantiky, který by například po najetí kurzorem myši nad nějaký příkaz srozumitelně oznámil, co daný příkaz dělá. Například u int i = 1; by se objevilo vysvětlení 1. Založí proměnnou i typu int. 2. Vloží do proměnné i číslo 1. A slovo int by mohlo být podtržené a po kliknutí na něj by se vypsala srozumitelná stručná nápověda o tomto datovém typu. Tj. ne na dvě obrazovky dlouhý vyčerpávající popis datového typu System.Int32, který se otevře až po 10-15 sekundách čekání v samostatném okně MSDN, ale stručné a jasné vysvětlení pro začátečníka ve stylu: int: datový typ pro celé číslo se znaménkem. Rozsah je přibližně +/- 2 miliardy. A teprve zde by byla možnost kliknout si pro další informace do MSDN. Speciálně u Visual Studia je dlouhodobě problematický i samotný styl nápovědy MSDN, zejména její nabobtnalost, naprostá nesrozumitelnost pro začátečníky a strašlivá pomalost při otevírání jednotlivých stránek nápovědy. Minimálně

inteligentní cache posledně navštívených stránek by situaci dosti pomohla. (Dokladem o tom, že zde něco není v pořádku je i fakt, že je často rychlejší použít online nápovědu, která využije standardní cache www prohlížeče, než nápovědu MSDN nainstalovanou na vlastním počítači.) 3.5 Celkově chybějící čeština Úplně prvním problémem, na který studenti obvykle narazí, je určitě chybějící čeština. Visual Studio je dostupné jen v několika světových jazycích, jiné nástroje jsou často pouze v angličtině. Ačkoliv by bylo pěkné, aby studenti programování uměli základy angličtiny, v praxi tomu tak často není, speciálně pak u dětí. Cizojazyčnost v principu vždy bude velkým nepřítelem průměrného studenta. Přeložit do češtiny je však potřeba především delší texty a nápovědu k jazyku a vestavěným třídám a funkcím; základní položky v menu jako File nebo Exit obvykle chápe i jazykově méně zdatný student a jejich přeložením do češtiny žádný opravdu velký přínos nezískáme. Konkrétně Visual Studio má v poslední verzi 2010 k dispozici i český překlad. Má však dva zásadní nedostatky, které jeho užitečnost značně snižují: Lze jej použít jen ve vyšší placené edici a nejde o kompletní překlad všech textů i s nápovědou MSDN. O něco lepší situace s překladem může být konkurenčních u open source nástrojů, kde se na vývoji jazykových mutací může podílet celá řada dobrovolníků. Zejména u nápovědy je překládání komplikováno především jejím velkým rozsahem. Překládání vývojových nástrojů do jiných jazyků obecně má však jeden zásadní problém: Je to dvojsečná zbraň. Student programování zvyklý a zhýčkaný svým rodným jazykem ve vývojovém prostředí bude mít o to větší problémy v reálném prostředí programátorské praxe, stejně tak mu nepomohou různá vývojářská fóra na internetu apod. Všechny nápisy by v podstatě musely být zobrazeny vždy současně ve dvou jazycích, aby bylo možno efektivně pracovat v týmu a používat rady a poznámky zveřejnění na internetu. Úplně počeštění celého vývojového prostředí je tedy jak nereálně obtížné, tak kontraproduktivní. 3.6 Učitelem řízené projekty V předchozích sekcích jsme se většinou zaměřovali především na potřeby začátečníků, což je i logické vzhledem k tomu, že právě začátečníci mají s programováním největší problémy a právě oni nejvíc potřebují speciální vlastnosti vývojových nástrojů. Po zvládnutí základů se z úspěšných začátečníků stávají mírně pokročilí a ti začnou již mít trochu jiné potřeby. Jednou z chybějících funkcí vývojových nástrojů obecně je typicky zcela nulová podpora učitelem řízených projektů. Pojem řízení učitelem není nikterak exaktní a může mít u studentských projektů mnoho podob. V prvé řadě chybí podpora pro projekty, kde student má jen dopsat část kódu do existující kostry programu. Chybí možnost zamknout nebo i skrýt části projektu apod. Po odevzdání hotového projektu pak chybí jakákoliv podpora pro automatizované ověření správnosti řešení. Na zde zmíněné věci je jistě možno

vytvořit vlastní studijní framework, nebo alespoň do jisté míry, je však s podivem, že samotní autoři Visual Studia nemají vůbec potřebu získávat větší market share prostřednictvím bohatší podpory studentů. 3.7 (Ne)ladění Ladění programů a s ním související věci jako krokování, breakpointů apod. patří k velmi důležitým součástem programátorské práce. Konkrétně Visual Studio má v tomto ohledu velmi dobrou pověst obsahuje poměrně velké množství rozličných funkcí pro ladění programů nativních i řízených ve všech jím podporovaných programovacích jazycích. Zkušenost ukazuje, že tyto nástroje používají spíše pokročilejší programátoři, zatímco studenti jen málo a speciálně začátečníci v této oblasti dost tápou. Důvodem tohoto školního neladění může být zřejmě i nedostatečné věnování se problematice ladění ve výuce; téma Jak efektivně ladit programy se v rámci kurzu programování mnohdy neobjeví vůbec, zvláště pak v kurzech pro začátečníky. Druhým problémem je však i přílišná složitost ladicího systému a strohost jeho uživatelského rozhraní. Pro příklad si představme situaci, kdy řízený program v Basicu či C# obsahuje chybu, nastane neošetřená výjimka a program lidově řečeno spadne. Visual Studio se namísto pádu programu dostane do ladicího režimu a programátor má celou řadu funkcí k analýze a opravě chyby. Začátečník by v tomto okamžiku však potřeboval jakousi pomocnou ruku v podobě lepší nápovědy (samozřejmě v češtině) a uživatelské rozhraní by mohlo v ladicím režimu nabídnout alespoň základní funkce v podobě například 5 cm velkých barevných tlačítek, kterými by program studenta sám navedl, jak dál postupovat. Podobně při krokování (tj. ladění bez výskytu chyby) by nějaká srozumitelnější forma velkých barevných tlačítek s českou nápovědou pomohla řadě studentů překonat strach a pustit se do ladění. Odhlédneme-li od specifických potřeb začátečníků, studenti obecně zřejmě budou mít v souvislosti s laděním i další potřeby, které jsou stejné jako u programátorů v praxi. Výhodná je například funkce edit and continue, tj. možnost opravy běžícího programu a pokračování na změněném kódu bez restartu celého procesu. Visual Studio ji však nepodporuje na 64bitových počítačích. Dodnes taky chybí například možnost sledování nativních programů v C/C++ ve virtuálním stroji, který by automaticky kontroloval dodržování velikosti polí nebo sledoval, který příkaz zapisuje kam do paměti, díky čemuž by bylo vidět, co se v programu děje s pointery, odkud se paměti vzala ta či ona hodnota apod. Stejně tak není zatím možno krokovat programy dozadu a tím se pokusit vysledovat, odkud se chyba v programu vzala. Zmíněné zatím v praxi (ve Visual Studiu) nemožné metody ladění by se hodily například do situací, kdy se nám chyba nějak zjevně projeví až daleko později, než kdy vznikla. Zvlášť v nativních programech pracujících s pointery je pak někdy již dost těžké místo vzniku chyby dohledat.

3.8 Jazyky C a C++ Jazyky C a C++ jsou dnes v praxi nejpoužívanějšími jazyky pro tzv. nativní programování. Jejich základní společná vlastnost, kterou se odlišují od většiny dalších dnes ve školství populárních programovacích jazyků, je absence automatické správy paměti. Narazí-li student začátečník na výuku takového jazyka, jednou z velkých překážek mu bude práce s pointery a paměťové chyby. Visual Studio v tomto směru vždy nabízelo mnoho pomůcek k detekci a identifikaci paměťových chyb, avšak jejich pochopení a používání nepatří k nejjednodušším a z tohoto důvodu bohužel nejsou moc užitečné pro začátečníky. Opět zde chybí lepší komunikace Visual Studia směrem ke svému uživateli programátorovi či studentovi. Zde mimochodem vidíme typický jev u rozsáhlých počítačových programů. Autoři velkých softwarových produktů opomíjejí potřebu sebepropagace těchto programů směrem k jejich uživateli vývojové prostředí jakoby ani nechtělo, aby jej uživatelé plně využili. Vše se soustředí jen na technickou povahu věci a samotná přítomnost ladicí či jiné pokročilé funkce vývojového prostředí je konečným stavem. Dalo by se říci, že programům chybí duše poskytují stále širší a širší pole funkcí a přitom je jim zcela jedno, jestli to někoho z jejich uživatelů vůbec zajímá. Tato problematika jde však daleko za rámec tohoto textu. 4 Závěr V tomto příspěvku jsme se zabývali problematikou používání běžných komerčních vývojových nástrojů ve výuce programování. V první části jsme si stručně popsali současnou situaci ve výuce programování, především v českých vysokých školách. Tím jsme nastínili kontext a rámec pro další část textu, kde jsme na vzorovém příkladě Visual Studia diskutovali jeho využitelnost pro výuku. Visual Studio je známý a hodně používaný vývojový nástroj, a to jak v praxi tak ve výuce. Pokusili jsme se zde konkrétně pojmenovat několik jeho slabých míst z pohledu potřeb výuky, přesněji řečeno očima studenta a očima jeho učitele. Reference 1. ACM: Computing Curricula 2005: The Overview Report. http://www.acm.org/education/curricula-recommendations/ 2. Microsoft: Microsoft Visual Studio. http://www.microsoft.com/cze/msdn/vstudio/2010/ http://msdn.microsoft.com/en-us/vstudio/

Annotation On Teaching of Programming with Common Development Tools Paper discusses the topic of teaching programming with common commercial development tools. First part of text briefly describes current situation in teaching of programming, especially on Czech colleges. We show that it isn t fully possible to teach programming with only special school-oriented tools and must soon or later also use common commercial tools. This gives us context and framework for the second and main part of paper, which takes Visual Studio as an example development tool and discusses primarily its weak points from teaching point of view. We name particular problematic or missing functions, which are important from student s or teacher s point of view.