V minulých dvou dílech jsem probíral vlastnosti, které by měl mít klasický programovací jazyk použitelný pro výuku. Závěrem seriálu se soustředím na porovnávání možností nejrozšířenějších jazyků: C, C++, C#, Delphi, Java, Pascal a Visual Basic. Který z nich lze doporučit?
Jak víte, tento seriál vznikl jako rozšíření mé odpovědi na diskusi o optimálním jazyku pro výuku, která běžela na Živě. Kdo tuto diskusi sledoval, ví, kolik diskutujících navrhovalo učit asembler či některý ze specializovaných (nejčastěji skriptovacích) jazyků typu PHP, Python, Ruby apod. Tyto jazyky jsou většinou specializované, nejsou dostatečně rozšířené a nebývají k nim k dispozici dostatečně komfortní vývojová prostředí. Proto se v současné době k výuce programování nehodí.
V následujícím výčtu se tedy soustředím na porovnávání možností nejrozšířenějších klasických programovacích jazyků (abecedně): C, C++, C#, Delphi, Java, Pascal a Visual Basic.
C
Jazyk C byl dlouhou dobu hlavním jazykem „opravdových programátorů“ a je stále ještě široce používaný. Pro výuku bych jej však nedoporučoval. Jeho jedinou výhodou je jeho jednoduchost, a tím i dostupnost na všech typech počítačů včetně prehistorických vykopávek. Jeho nevýhodou je naopak chybějící typová kontrola a především pak absence konstrukcí pro objektově orientované programování. Jak jsem již řekl v minulém díle: programátor, který není schopen programovat objektově, je při hledání svého uplatnění silně handicapován.
C++
Jazyk C++ vznikl jako objektově orientované rozšíření jazyka C. Jeho schopnosti a možnosti jsou bezbřehé a nehledě na nástup moderních jazyků typu Java nebo C#, jeho nasazení je v mnoha oblastech nezastupitelné. Avšak právě snaha jeho autorů o maximální univerzálnost a dokonalost jazyka jej učinila natolik komplikovaným, že pro výuku základů programování nebývá považován za optimální. Jeho největším nebezpečím jsou především nejrůznější konstrukce založené na práci s ukazateli, které jsou sice nesmírně krásné a mocné, avšak začátečníkům dělávají obtíže a jsou zdrojem mnoha těžko odhalitelných chyb. C++ bych proto jako jazyk pro výuku příliš nedoporučoval. Tomu, kdo by se o nich chtěl dozvědět více, bych doporučoval knížku Miroslava Viriuse Pasti a propasti jazyka C++.
C#
(Název jazyka se anglicky čte C-sharp, já jej však nazývám česky C-mříž.) Tento jazyk je reakcí firmy Microsoft na prohraný soudní spor o implementaci jazyka Java. Stejně jako Java (a stejně jako řada dalších nových programovacích jazyků) vychází C# ze syntaxe jazyka C++. Na rozdíl od jazyka Java, jehož autoři zakázali v jazyku vše, co pro jeho funkčnost nezbytně nepotřebovali, autoři jazyka C# zvolili opačný přístup a naopak ponechali vše s výjimkou konstrukcí, které považovali za nebezpečné a škodlivé (např. násobnou dědičnost či ukazatele). Pro některé konstrukce (např. právě pro ukazatele) však ponechali zadní vrátka ve formě bloku, který programátor dopředu označí za ne-bezpečený. (Ta pomlčka v českém překladu je důležitá. Kód totiž není nebezpečný, ale pouze není bezpečný – anglicky unsafe.) V tomto bloku pak může programátor ukazatele používat, ale systém nad ním přestává držet ochranou ruku.
Tento jazyk je jedním z horkých kandidátů na ten pravý jazyk pro výuku programování. Poučil se z pětiletých zkušeností s používáním jazyka Java a nabízí většinu jejich vymožeností a přidává některé další. Navíc nepřipravuje programátory o dobrodiní řady elegantních a užitečných konstrukcí, jako je např. možnost definice operátorů. Definitivní verze jazyka by se měla objevit na přelomu roku, ale již rok a půl kolují mezi programátorským lidem jeho beta-verze.
Základní otázkou, která v tomto případě ovlivní naše rozhodnutí, budou hardwarové nároky a cena vývojových prostředí. Doufejme, že budou k dispozici i kvalitní a přitom skromná prostředí, která bude lze získat zdarma. Vzhledem k tomu, že Microsoft bude chtít tento jazyk prosadit, nevylučuji, že se nějakého takového prostředí opravdu nadějeme.
Delphi
Delphi je skvělý jazyk se skvělým vývojovým prostředím. Borland dokonce začal nabízet základní verzi jeho vývojového prostředí zdarma. Jazyk má řadu vlastností, které jej pro výuku doporučují. Jeho drobnou nevýhodou je to, že není z rodiny C++, takže při přechodu na C++, Javu či C#, které jsou ve světě mnohem používanější, si musíte více zvykat.
Další jeho nevýhodou je poměrně malá obec programátorů, kteří jej používají, takže ve srovnání s jazykem Java nebo Visual Basic nabízí pouze nepatrné množství volně dostupných komponent, které byste si mohli stáhnout a používat ve svých programech. Tento stav by však nemusel platit v okamžiku, kdy by se Delphi zařadilo do rodiny překladačů, v nichž lze vyvíjet aplikace pro .NET. Pak by pro něj bylo k dispozici stejné množství komponent jako pro kterýkoliv z ostatních „dotnetových“ jazyků.
Java
Další horký kandidát. Podle mého názoru proběhne hlavní souboj mezi jazyky C# a Java. Jazyk Java se jeho tvůrcům opravdu povedl, takže se uvádí, že v něm v současné době programuje již přes 3 miliony programátorů. Počítačovými časopisy nedávno proletěla zpráva, že v letošním roce počet profesionálních programátorů vyvíjejících programy v jazyce Java letos dokonce překročil počet programátorů vyvíjejících své programy v C++.
Jednou ze silných zbraní jazyka Java je snaha o předání co největšího počtu programátorských starostí na bedra překladače a interpretu přeloženého kódu. Programátoři jsou za to tvůrcům jazyka vděční a jsou pro to ochotní obětovat i jisté snížení rychlosti svého kódu, kterou koncepce jazyka Java nutně přináší.
Silnou zbraní jazyka Java je, že je naprosto nezávislý na platformě. Tentýž program můžete provozovat pod Windows, pod Linuxem i na počítačích Macintosh. Microsoft sice do poslední verze svého operačního systému, tj. do Windows XP podporu tohoto jazyka nezahrnul, ale umožnil výrobcům počítačů, aby ji do předinstalovaných operačních systémů přidali. To, který z těchto jazyků zvítězí u programátorských firem, záleží do jisté míry na schopnostech marketingových oddělení firem, v jejichž zájmu je prosazení toho kterého z obou jazyků.
Opusťme však marketing a vraťme se k jazyku. Jeho další silnou zbraní je, že na internetu seženete několik vynikajících vývojových prostředí, jejichž základní verze jsou k dispozici zdarma. (Ale pozor, jejich hardwarové nároky patří spíše k těm vyšším.) Zároveň je internet přímo zahlcen přemírou nejrůznějších prográmků a utilit, které můžete do svých programů zdarma zakomponovat. Nakladatelství se začínají předhánět v tom, co vše o tomto jazyku vydají.
Pro volbu tohoto jazyka hovoří i to, že některé vysoké školy jej začaly zavádět jako jazyk, v němž učí studenty základům programování. Začínajícím programátorům v tomto jazyce proto většinou nečiní velké problémy sehnat v dohledném okolí někoho, kdo jim s jejich případnými problémy poradí.
Pascal
Jazyk Pascal uvádím v našem výčtu pouze proto, že jej řada škol stále ještě používá jako vyučovací jazyk v úvodních kurzech programování. Protože tyto školy většinou používají Turbo Pascal, který je od verze 5.5 doplněný o objektově orientovanou nadstavbu, mohou v něm vyučovat i základy objektově orientovaného programování. Pokud však nejste omezeni schopnostmi použitého hardwaru, doporučoval bych přejít na některý z modernějších jazyků.
Visual Basic
Jazyk Visual Basic má mezi programovacími jazyky zvláštní postavení. Všichni „opravdoví“ programátoři jej sice pomlouvají, avšak zeptáte-li se, v kterém programovacím jazyku je napsáno nejvíce aplikací, dozvíte se, že právě v jazyku Visual Basic. Pravda, jsou to většinou kancelářské a vnitrofiremní programy (většina klíčových desktopových aplikací je stále psána v jazyku C++, který v oblasti síťových aplikací postupně předává žezlo jazyku Java), ale přiznejme si, je jich nejvíce. Z toho nutně vyplývá, že je to jazyk, u nějž je největší pravděpodobnost, že jej naši žáci budou v budoucnu používat. (Jak by řekl klasik: „Můžeme s tím nesouhlasit, můžeme proti tomu protestovat, ale to je všechno, co s tím můžeme dělat.“)
Visual Basic má několik nevýhod. Především prozatím není objektově orientovaný – můžete v něm definovat nové třídy, ale tyto třídy již nemohou mít potomky. To se má však s novou verzí jazyka nazvanou Visual Basic .NET změnit. Tato nová verze bude mít skoro (ale opravdu jen skoro) tytéž schopnosti, jako ostatní z rodiny „dotnetových“ jazyků (např. C#).
Jeho další nevýhodou je podivnost jeho syntaxe. Microsoft jej sice vydává za jednoduchý jazyk, ale to je tvrzení marketingového oddělení. Odmítám považovat ze jednoduchý jazyk ten, u nějž se např. syntaxe volání procedury a funkce liší podle způsobu jejího volání. Jazyk má stejnou nevýhodu jako jazyk C++: tak dlouho jej vylepšovali, aby uměl to či ono, že začal připomínat onen 100krát dobrý dort, který si Pejsek a Kočička pekli k narozeninám.
Jeho velkou výhodou je na druhou stranu to, že jej najdete skoro všude. Jeho odvozenina VBA je použita jako makrojazyk v balíku MS Office a do svých produktů ji začali přidávat i takoví výrobci jako Autodesk či Corel. VBA má šanci se stát univerzálním makrojazykem veškerenstva.
Co poradit na závěr?
Rozhodnout se musíte sami podle svých znalostí, podle hardwaru, který máte k dispozici a podle toho, k čemu chcete své žáky vychovávat. Nemáte-li hardwarová omezení, doporučoval bych následující volbu:
- Chcete-li z žáků vychovat budoucí programátory, kteří budou schopni sledovat další vývoj programových technologií, zvolte jazyk Java nebo C#. Mezi nimi se rozhodněte podle toho, jak odhadujete další průběh souboje Microsoft versus zbytek světa zastoupený firmou Sun.
- Chcete-li z žáků vychovat uživatele, kteří budou schopni vytvářet jednoduché aplikace, a především pak makra pro své kancelářské programy, zvolte Visual Basic.
Rudolf Pecinovský
0 komentářů:
Okomentovat