Visual Studio ve výuce informatických předmětů Aleš Keprt Ústav informatiky MVŠO Ales.Keprt@mvso.cz Abstrakt: Příspěvek diskutuje problematiku výuky informatiky a zejména programování ve Visual Studiu nástroji, který se používá jak v komerční praxi, tak ve výuce. Klíčová slova: Visual Studio, programování, výuka, synergie 1 Úvod do problematiky Microsoft Visual Studio (dále jen Visual Studio) je jedním z mnoha dnes existujících vývojových nástrojů pro programátory. Setkáváme se s ním běžně v komerčních firmách produkujících počítačový software a je běžným vybavením také na školách, kde je jedním z nejčastějších softwarových pomocníků ve výuce programování. Oblast využití tohoto vývojového nástroje se však neomezuje jen na programování a jeho výuku, Visual Studio je totiž možno využít i ve výuce některých dalších příbuzných činností. Pro studenty to pak přináší výhodu jednotného prostředí a jednotného pracovního nástroje, se kterým se setkávají opakována během studia a ve výuce se tak šetří drahocenný čas, který by jinak byl nutný k seznámení s novými prostředky vždy na začátku každého dalšího semestru či kurzu. S tímtéž nástrojem se pak titíž studenti již coby absolventi setkávají i potom ve svém profesním životě v praxi a opět tak šetří svůj čas a nemusejí se učit pracovat se zcela novými nástroji. Použití jednotného nástroje v tak široké škále nasazení má však i určitá úskalí a tomu se právě věnuje tento příspěvek. 2 Vývojové nástroje 2.1 Běžné a školní nástroje Vývojové 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ý. 1
Zde musíme 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ě jejích 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 2
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 dnes zřejmě 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 se nyní zastavíme u jeho možností a slabin použití při výuce programování. Uvedeme je stručný výčet základních bodů, podrobnější rozbor této problematiky je možno najít v článku [3]. Přitom dále v textu uváděný souhrn tzv. problematických bodů není způsoben ani tak špatným vlastnostmi samotného Visual Studia, jako spíše problémy logicky vyplývajícími ze snahy hledat synergii ve slučování dosti odlišných oblastí, jakými jsou průmyslová praxe na jedné straně a výuka začátečníků na straně druhé. Shrňme základní body bránící optimální synergii: Obvykle dosti 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. Lepší je Visual Basic ten 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í. Chybějící nebo nedostatečná nápověda syntaxe 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ě. A 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. 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 3
A P L I K O V A T E L N Ý S Y S T É M D A L Š Í H O V Z D Ě L Á V Á N Í V E V a V 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. 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. 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. Celkově chybějící čeština Úplně prvním problémem, na který studenti obvykle narazí, je určitě chybějící čeština. 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. Překládání vývojových nástrojů do jiných jazyků je však dvojsečná zbraň. Student programování 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. Učitelem řízené projekty 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 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ů. (Ne)ladění Ladění programů a s ním související věci jako krokování, breakpointy 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 mnoho 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. Typickým jevem u rozsáhlých počítačových programů je, že jejich autoři 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 nějaké 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
4 Další možnosti Visual Studia Kromě klasického programování je možno Visual Studio použít i k dalším činnostem, včetně dalších předmětů. Přímo ve výuce na MVŠO se nám osvědčilo Visual Studio v těchto dalších oblastech: Jako modelovací nástroj Visual Studio obsahuje editor třídních modelů, který je přímo propojen na zdrojové kódy a cokoliv, co se programuje, se objevuje v grafickém modelu, stejně jako obráceně cokoliv namodelovaného se přímo objevuje i ve zdrojovém kódu. Nevýhodou ve aktuální verzi je však zejména nekompatibilita modelování s jazykem UML. Jako editor HTML stránce Visual Studio se osvědčilo jako semi-wysiwyg editor webových stránek v jazyce HTML. Nabízí rychlý náhled stránky, pokročilé funkce vybarvování syntaxe a podporuje velmi dobře také stylovací jazyk CSS. Visual Studio je nástroj zaměřený zejména na velké softwarové projekty, a tak nemůže překvapit, že se výborně hodí i do výuky související se softwarovými projekty. Ačkoliv integrované funkce modelování, jak již bylo zmíněno výše, nejsou na nejlepší úrovni, samotná podpora projektů je ve Visual Studiu výborná a v předmětech zabývajících se softwarovými projekty je Visual Studio skvělým pomocníkem. 5 Závěr V tomto příspěvku jsme se zabývali problematikou používání Visual Studia ve výuce programování a dalších informatických předmětů. 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/ [3] KEPRT, A. K problematice výuky programování v běžných vývojových nástrojích. Ve sborníku konference Objekty, 2010. Ostravská Univerzita v Ostravě, 2010. 5