První jazyk – Python

Od roku 1986 trávím jistou část svého života vedle počítačů, prvním byl 8 bitový Sinclair ZX-Spectrum, který jsem po pár letech povýšil na Sinclair ZX-Spectrum+128K a po roce 1989 jsem si přes Commodore Amiga proklestil cestu k PC, s nimiž se potýkám dodnes. V éře 8 bitových počítačů mohl člověk hrát hry, nebo dělat první experimenty s programováním, ale internet byla hudba velmi vzdálené budoucnosti.

Přiklonil jsem se k programování a první experimenty s jazykem BASIC, jehož interpret byl v ROM Sinclaira, nebyly moc slavné, později jsem trochu studoval Pascal a ten nejzajímavější jazyk, jaký jsem potkal; díky seriálu Rudolfa Pecinovského v Amatérském Rádiu; Forth. Mé experimenty s jazyky C/C++ a Java přišly až během studia na vysoké škole. Dnes se programováním živím a drtivou většinu kódů píšu v jazycích VisualBasic.NET, PHP a Java. Ano VB.NET je trochu zpronevěra tomu, že jsem propagátor GNU/Linuxu a svobodných platforem obecně, ale je to obživa a já už jsem dávno prost toho vést svaté války za „svobodnější“ zítřky. Přestože jsem začal s programováním docela dávno a na poměrně nízké úrovni, moderní trendy v podobě objektově orientovaného programování mi nečiní problémy, jen neprodukuji 500 řádků zdrojových kódů za den, ale maximálně 25 (nezapočítávám komentáře) a snažím se především o co největší efektivitu cílového kódu, občas některé části neustále přepisuji a optimalizuji stále dokolečka.

Reklama

Protože GNU/Linux a *BSD aktivně používám, potřebuji nějaký rozumný programovací jazyk na psaní menších prográmků (scriptů), jimiž si automatizuji některé činnosti, třeba přípravu dat pro importy na elektronické obchody, které mám na starosti. Un*xové prostředí je víceméně imunní vůči volbě programovacího jazyka; postačí mít jen nainstalovaný ten správný interpretr (což je většinou otázka jediného příkazu pro správce balíčků); scripty lze napsat v Bashi, Perlu, Tcl/Tk, PHP a mnoha dalších jazycích, nezřídka se vyskytuje kombinace jednoho jazyka s Tcl/Tk. Já jsem si pro scriptování oblíbil dynamický jazyk Python.

Python je vskutku velmi povedený jazyk, kde se zanořeními zapisuje logická struktura programu (to co se v Pascalu zapisuje mezi sekvence begin…end a téměř ve všech ostatních programovacích jazycích mezi složené závorky (ve Slovenčině se jim říká až poeticky „kučeravé zátvorky“) {}). To je možná pro někoho zádrhel způsobující nepřehlednost zápisu. Při odsazování je extrémně důležité dodržet pravidlo, že je potřeba používat ve zdrojovém kódu neustále jen jeden způsob odsazování (rozhodnout se pro tabulátor, nebo 4 mezery) a ten absolutně dodržovat.

Syntaxe Pythonu je naprosto primitivní a není problém začít psát rozsáhlejší projekty, jen s referenční příručkou k jednotlivým funkcím a knihovnám, ve velmi krátkém čase od prvního setkání s Pythonem. Dokumentace k Pythonu, tj. základní tutoriály najdete na českém webu Py.cz a k dalšímu bohatství knihoven i fint dovede člověka internet, stačí jen správně formulovat dotazy pro Google. Velmi užitečnou pomůckou pro uživatele prohlížečů Mozilla je Python Sidebar for Mozilla (pokud jej nainstalujete, hledejte jej v záložkách, nikoliv na obvyklém místě pro postranní lišty).

Python je dynamický a interpretovaný jazyk. Dynamický znamená, že není nutné předem deklarovat jaké proměnné budete používat a jakého budou typu, neznamená to že je beztypový! Blud o beztypovém jazyce se říká i o jazyce PHP, Perlu, Rexxu a dalších scriptovacích jazycích. Interpretovaný je také jen do jisté míry, při prvním spuštění pythonovského „scriptu“ si interpret přeloží zdrojové kódy do bytecode a do příští změny zdrojového kódu je spouštěn pouze tento bytecode. Interpretace má tu výhodu, že není nutné projekt předem sestavit v IDE; počkat na výsledek sestavení; a pak jej teprve zkusit spustit. Vývojový cyklus má celkově rychlejší rytmus. Existuje možnost jakési „kompilace“, kterou se vytvoří samostatný program, ale to se využívá snad jen v prostředí MS Windows. Výsledný exe by měl obsahovat zkomprimovaný interpretr Pythonu a zdrojové kódy projektu, případně využité knihovny.

V jazyce Python lze psát malé scripty pro automatizaci práce, webové projekty, ale i rozsáhlé aplikace s normálním GUI, které podle použitého toolkitu bude více nebo méně zapadat do běžných zvyklostí toho kterého systému. Já v něm píši jen menší aplikace a používám ten nejzákladnější toolkit Tkinter, je jednoduchý, na všech systémech vypadá dostatečně nativně, ale především je součástí běžné instalace Pythonu. Existují velmi zajímavá rozšíření Pythonu pro databáze, numerické výpočty s extrémní přesností a nemalou zajímavostí je, že Python používá třeba Red Hat pro svůj instalační software, nebo ILM (Industrial Light and Magic) pro tvorbu filmových animací.

Nezavrhuji výuku Pascalu coby prvního programovacího jazyka, on má své výhody, mezi než bych zařadil jednoduchou a přehlednou syntaxi, byť hrozně ukecanou, a povinnost provést deklarace proměnných dělat v samostatném bloku před jejich použitím. Svými možnostmi moderní kompiátory objektového Pascalu nikterak nezaostávají za nástroji pro C/C++ a výsledný kód je naprosto stejně výkonný. Bohužel řada nedouků bude Pascal kritizovat, jako zaostalý jazyk, a přitom při jeho studiu využili stěží 1 % možností dnešních překladačů. Programátora, který se ve svém vývoji trochu více věnoval Pascalu poznáte docela snadno, má své zdrojové kódy tak nějak pěkně učesané.

Python bych na středních a vysokých školách vyučoval u těch, kteří studují IT. Jen málo z těchto studentů se bude věnovat dále softwarovému vývoji a těm bych formou volitelného předmětu nabídnul některý z jazyků Pascal, C/C++, nebo Java. Je jisté, že na středních školách je poměr mezi budoucími programátory a neprogramátory podstatně větší, než u studentů vysokých škol, ale přesto bych u všech doporučoval začít s Pythonem. Bohužel znám jednu školu, a nebude jediná, kde je jako první a snad jediný programovací jazyk vyučován VisualBasic for Applications a toto rozhodnutí je bráněno slovy že jim (studentům) to stačí a Microsoft tu bude pořád, tak proč je učit něco jiného.

Na webu Vládi Macka vyšel překlad článku Johna M. Zellego, Ph.D., „První jazyk: Python“, kde jsou přesně uvedeny důvody, proč by měl být Python vyučován jako první jazyk, bezmezně souhlasím. Bohužel tento článek četlo asi jen velmi málo učitelů, zejména těch středoškolských, kteří úvod do programování vyučují. Studenti jsou zatěžováni složitými konstrukcemi, případně prací v náročném prostředí, ale pro pochopení algoritmizace, použití cyklů i podmínek a řešit problematické okrajové podmínky.

Mimochodem, nedávno na českém internetu probíhala vlna článků, jejichž autoři propagovali jazyk Ruby, poslední rok jsem výraznější zmínky o Ruby neviděl. Python snad nikdy takovou bouři nevyvolal, žije si tichým životem a vznikají v něm velmi zajímavé projekty.

Komentáře

3 komentáře: „První jazyk – Python“

  1. Pavel Stěhule avatar

    Přihřeji si polívčičku, na ČVUT FSV Python používáme a rádi – pro výuku super záležitost. Je to jediný z jazyků, který dokáže studenty praštit přes ruce – kdo učí, ví, jakých kreací (ohledně formátování) jsou studenti schopní.

  2. Wrunx avatar
    Wrunx

    Tak taky jedno polínko do ohníčku u té "přihřívané" polívčičky – natřikrát jsem hledal nějaký rozumný jazyk, portovatelný mezi Win-Mac-Lin, až jsem našel Python. A čím víc toho v něm zkouším, tím víc se mi líbí. Opravdu, oproti dnešním zoufale přezávorkovaným jazykům působí psaní v Pythonu jak balzám na duši, a přitom poskytuje velkou podporu knihoven pro kdejaké aplikace.

    1. MaReK Olšavský avatar

      @Wrunx: Opět souhlasím, Python je opravdu dobře navržený jazyk a bohatství knihoven pod ním je úžasné. Teď jen bolí že dost těch užitečných ještě není převedených na Python3, ale na umírající Python2, doufejme že je to jen dočasný jev.