Rudolf Pecinovský: Přechod na klasické programovací jazyky - další požadované vlastnosti

pondělí 19. listopadu 2001 ·

V minulém pokračování jsme si pověděli o tom, čeho bychom si měli všímat na vývojových prostředích jazyků, pomocí nichž se chystáme postoupit ve výuce programování. V tomto díle budeme v rozboru požadovaných vlastností pokračovat.

V minulém pokračování jsme si pověděli o tom, čeho bychom si měli všímat na vývojových prostředích jazyků, pomocí nichž se chystáme postoupit ve výuce programování. V tomto díle se podíváme na to, jaké vlastnosti bychom měli požadovat od zvoleného programovacího jazyka.


Jednoduchost syntaxe

Programovací jazyk, jehož prostřednictvím budou žáci pronikat do tajů programování, by měl mít co nejjednodušší syntaxi bez jakýchkoliv zákrut a výjimek. Při výuce se potřebujeme soustředit na principiální řešení daných tříd problémů, ne na zvláštnosti syntaxe použitého jazyka, a už vůbec ne na možná úskalí, která na programátory čekají ve chvíli, kdy něco zapomenou napsat nebo to napíší špatně.

Z tohoto důvodu nebývají optimální volbou jazyky, které ve snaze o maximální dokonalost zavádějí řadu speciálních konstrukcí, které většinou dokonale neznají ani profesionálové programující v daném jazyku. Jak jistě odhadnete, mezi takové jazyky patří C++. Jak ale řada z vás asi neví, musíme mezi ně zařadit i Visual Basic.


Typová kontrola

Jazyk používaný pro vstup do světa programování by měl programátora maximálně hlídat a pokud možno převádět všechny jeho logické chyby na chyby syntaktické. O typové kontrole a její užitečnosti v jazycích určených pro programátorské nováčky se toho již napsalo mnoho. Nebudu tedy nosit dříví do lesa a pouze konstatuji, že z hlediska výuky je velice užitečné, když použitý programovací jazyk provádí přísnou typovou kontrolu.

Z tohoto hlediska se nám „nehodí do krámu“ nejrůznější skriptovací jazyky, které si často zakládají na svém velmi volném přístupu k typové kontrole – z těch nejznámějších bych jmenoval VBScript a JavaScript.


Definice vlastních datových typů

Složitost řešitelných úloh těsně souvisí s mírou použitelné abstrakce. Budu-li se muset omezit na strojové instrukce použitého procesoru, bude mi i relativně jednoduchý program trvat velice dlouho a velikost programů, které pro mne již budou prakticky neřešitelné, nebude příliš vysoká.

Možnost definice vlastních datových typů umožní zapouzdřit podružné implementační detaily do definice datového typu a v dalším programu pracovat s proměnnými a konstantami daného typu a nezabývat se již detaily jeho implementace. Tím se sníží tzv. granularita projektu, tj. počet jednotlivých entit (granulí), z nichž se skládá řešení problému. Program se tak zjednoduší a stane se snáze pochopitelným. Zároveň se tím zvýší složitost problémů, které budeme stále ještě schopni řešit.

Toto hledisko opět znevýhodňuje některé skriptovací jazyky, které většinou podobné možnosti nenabízí.Nicméně je třeba přiznat, že skriptovací jazyky, které se rozšiřují v poslední době, již lecjakou lahůdku nabízejí.


Objektová orientovanost

Objektová orientovanost, tj. schopnost definovat třídy a jejich instance, je dalším krokem na cestě ke zvýšení hladiny abstrakce, a s tím spojené složitosti řešitelných úloh (se základy objektové orientovanosti a její důležitostí v jednotlivých fázích návrhu programu vás seznámí kniha „Základy objektově orientovaného návrhu v UML“ vydaná nakladatelstvím Grada).

Poznámka: objektové versus strukturované programování
Zde bych si dovolil ještě zareagovat na poznámku jistého učitele, který upozorňoval na to, že nyní všichni hovoří a objektovém programování a přitom zapomínají na strukturované programování, jehož zásady byly neméně užitečné. Obávám se totiž, že jeho omyl je mezi programátory starší školy značně rozšířen.

Objektově orientované programování není alternativou ke strukturovanému programování. Pokud se někdo nenaučil programovat strukturovaně, neměl by se o objektově orientované programování vůbec pokoušet (teoreticky to jde, ale nedoporučuji to). Programátora, který se rozhodne programovat objektově, aniž by přijal za své zásady strukturovaného programování, bych přirovnal k řidiči, který se přihlásí do školy smyku a ještě se nenaučil jezdit za krásného počasí na prázdné vozovce.

Přiznejme si, že objektově orientované programování ještě mezi našimi učiteli zcela nezdomácnělo. Abychom si nejprve ujasnili pojmy, připomenu, že z hlediska jejich objektových schopností můžeme programovací jazyky rozdělit do tří skupin:

  • Jazyky, které práci s objekty vůbec neznají. Sem patří např. jazyk C a starší verze jazyka Pascal.
  • Jazyky pracující s objekty, tj. jazyky, které dokáží vytvářet instance předdefinovaných tříd a pracovat s nimi. Nejsou však schopné definovat nové třídy. Knihovní moduly obsahující definice používaných tříd proto musí být vytvořeny v jiném programovacím jazyce. Mezi takové jazyky patří např. jazyk Java Script a starší verze jazyka VBScript.
  • Jazyky schopné definovat třídy, avšak neumožňující definovat potomky těchto tříd. Takovýmto jazykem je např. Visual Basic do verze 6. Možnost definovat vlastní třídy umožňuje dokonce i jeho skriptová verze VB Script.
  • Jazyky objektově orientované, které podporují všechny rysy objektově orientovaného programování včetně dědičnosti a polymorfismu. Objektově orientované jazyky se navíc dělí do dvou skupin:Jazyky, které jsou čistě objektové a nelze v nich proto napsat neobjektový program. Sem patří např. jazyky Smalltalk, Java nebo připravovaný jazyk C#. Druhou skupinou jsou jazyky, které takové nejsou a lze v nich napsat i program, který nebude využívat vůbec žádnou z vymožeností OOP. Mezi ně bychom zařadili např. jazyk C++ a připravovanou verzi jazyka Visual Basic.
Současný programátorský svět je již veskrze objektově orientovaný. Programátor, který nezvládá objektově orientované programování je výrazně handicapován. Chceme-li děti opravdu naučit programovat, musíme je učit programovat objektově. K tomu ale potřebujeme jazyk, který je toho schopen. Jazyky, které plně nepodporují objektově orientované programování (OOP), jsou vhodné pouze pro první kroky do světa programování a pro pokročilejší výuku bych je volil opravdu pouze v nejvyšší nouzi.


Možnost vytvářet komponenty

Současné programování pomalu přechází z objektově orientované etapy do další etapy, kterou bychom mohli nazvat komponentově orientovanou. Až budou naši žáci vstupovat do praktického programátorského života, bude komponentově orientované programování takovou samozřejmostí, jakou je dnes programování objektově orientované.

Současní programátoři již nevytvářejí programy, ale komponenty, z nichž se výsledný program skládá. Tyto komponenty je možné využít nejen v daném programu, ale i v jakémkoli jiném programu pracujícím v dané komponentové platformě.
Orientace na komponenty je jedním ze základních stavebních kamenů jazyků a vývojových prostředí určených pro platformu .NET. Práce s komponentami proto bude běžná i u všech jazyků podporujících tuto platformu.


Univerzálnost jazyka

Zvolený jazyk by měl být dostatečně univerzální. Mělo by v něm být možno napsat jakýkoliv druh aplikace. Proto dopředu odmítám všechny speciální jazyky typu PHP, které řada účastníků diskuse na Živě k výuce programování doporučovala.


Rozšířenost jazyka

Nemá smysl používat jazyky, které skoro nikdo nezná a u nichž ani v nejbližší budoucnosti nehrozí, že by doznaly většího rozšíření. S rozšířeností jazyka prudce roste možnost vyměňování si programátorských zkušeností s kolegy z celého světa, která je dnes stále běžnější i u žáků středních a občas i základních škol.


Množství dostupných knihoven a komponent

Při výběru jazyka pro výuku programování bychom neměli zapomínat na to, že nejlepším programem je ten, který nemusím psát, protože je již hotový, a stačí si jej stáhnout a použít. V případě komponentového programování pak stačí poskládat celý program z dostupných komponent a dopsat již pouze ty části, které se mi nepodařilo nikde získat.

V tomto směru nabízí velké možnosti připravovaná platforma .NET, protože bude umožňovat používat komponenty napsaném v libovolném programovacím jazyku podporujícím tuto platformu. Druhou otázkou však je, kolik z těchto komponent bude k dispozici zdarma.


Možnost konzultovat nejasnosti

Programování je obor, v němž se neustále objevují nové a nové technologie a možnosti. Učitelé programování se musí smířit s tím, že je jejich žáci zanedlouho profesionálně přerostou a začnou řešit úlohy, na které oni již nestačí. Neměli bychom jim proto dávat všechny informace naservírované na talíři, ale měli bychom je již při výuce učit, jak získávat odpovědi na svoje otázky v různých diskusních forech či na specializovaných webových stránkách.


Tolik tedy zásady. V příštím, závěrečném dílu zkusím stručně shrnout nejrozšířenější programovací jazyky z hlediska jejich vhodnosti pro výuku.


Rudolf Pecinovský

0 komentářů:

Články dle data



Učitelské listy

Nabídka práce

Česká škola - portál pro ZŠ a SŠ

Česká škola poskytuje svým čtenářům diskusní prostor k vyjádření názorů na školskou problematiku. Tyto příspěvky se nemusí shodovat se stanoviskem redakce České školy a jsou uveřejňovány jako podnět k dalším diskusím.

Obsah článků nemusí vyjadřovat stanovisko redakce nebo vydavatele Albatros Media, a.s.


Všechna práva vyhrazena.

Tento server dodržuje právní předpisy
o ochraně osobních údajů.

ISSN 1213-6018




Licence Creative Commons

Obsah podléhá licenci Creative Commons Uveďte autora-Neužívejte dílo komerčně-Nezasahujte do díla 3.0 Česká republika, pokud není uvedeno jinak nebo nejde-li o tiskové zprávy.



WebArchiv - archiv českého webu



Tyto webové stránky používají k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Informace o tom, jak tyto webové stránky používáte, jsou sdíleny se společností Google. Používáním těchto webových stránek souhlasíte s použitím souborů cookie.