Názor k článku Programovací jazyk TCL od Petr Mach - Hmm, root mi nějak neuložil odpověď nebo co,...

  • Článek je starý, nové názory již nelze přidávat.
  • 25. 7. 2005 20:06

    Petr Mach (neregistrovaný)
    Hmm, root mi nějak neuložil odpověď nebo co, taková dlouhá byla, zkusím odpovědět znovu, lépe a radostněji.

    =======================================================================

    No, Java se optimalizuje a zrychluje jako taková nejen díky hot-spotu. Do jazyka toho bylo přidáno mnohem víc. Např. zde http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html se můžete podívat na novinky mezi verzemi 1.4 a 1.5. Studie se týká verze 1.2 a je tedy poplatná době svého vzniku, což je rok 1999, v IT je to prehistorická doba.

    Scheme mě zklamalo svou kriptičností a nepřehledností a to se bude projevovat i při práci s databázemi, seznamy atd. Krom toho tu někde zazněla myšlenka, že Lisp je univerzální jazyk, ne? Tak by mělo být jedno, co v tom dělám. Já nechci mít jeden jazyk na databáze a jeden na GUI, protože co když budu chtít udělat program který pracuje s databází a má i GUI. Já chci jazyk, který mi pokryje co největší spektrum mých potřeb.

    Ne, Guile jsem nezkoušel, vždyť to je to samé v bledě modrém jako Scheme, potažmo Lisp. A především, já už nemám potřebu zkoušet a zkoumat vůbec žádné jazyky. Vyzkoušel jsem jich hodně, než jsem našel ten pravý - Python a teď zkoumám možnosti Pythonu, a že je co ke zkoumání. Teprve kdybych narazil na problém, který by Python neuměl (dostatečně efektivně) řešit, podíval bych se po dalším jazyku, který by mi pomohl.

    Chvíli to trvalo, než jsem si našel jazyk vyšší úrovně, který mi vyhovoval. Měl jsem na něj velké nároky. Třeba někomu v rozhodování pomůže, když zde objasním, proč preferuji právě Python. Od jazyku co jsem hledal jsem chtěl:

    1) Aby se v něm snadno a efektivně programovalo (to je asi základní požadavek na všechny jazyky vyšší úrovně, měla by to být jejich nejvyšší deviza).
    2) Daly se v něm snadno psát multiplatformní programy běžící v Linuxu a Windows.
    3) Byl vhodný na psaní malých (pár řádkové skripty) i větších (řádově tisíce řádků) programů.
    4) Pokrýval mé potřeby - systémové skripty, GUI aplikace, webové aplikace, multithreadové síťové aplikace klient/server - a pokud možno mě nenechal ve štychu, když se objeví i jiné požadavky.
    5) Měl bohaté knihovny.

    Z počátku jsem se Pythonu vyhýbal, také jsem měl předsudky vůči povinnému odsazování, konec konců, byl jsem Céčkař. Krom toho měl Python i jiné nedostaky, jenž jsem kritizoval, ale protože jsem stále nemohl nic uspokojivého najít, zkoumal jsem i Python. Na Pythonu se intenzivně pracuje a neustále se vylepšuje, od verze 2.2, která odstranila řadu nedostatků, se stal pro mě plně použitelným. Po dlouhodobějším používání jsem i pochopil jak je výhodné strukturování programu odsazováním, a že to je dobrá vlastnost, která dělá Python silnějším. Ale chtělo to vlastní zkušenosti, takže si nemyslím, že bych o tom přesvědčil nějakého zdejšího odpůrce. Ale i tehdy, kdy se mi to také nelíbílo, jsem to považoval za malou daň, kterou člověk musí zaplatit za ostatní silné stránky Pythonu.

    Python má ale i další vlastnosti, které jsem po něm nepožadoval a kvůli kterým stojí za to. Používá se jako skriptovací jazyk některých aplikací jako Gimp, Blender nebo OpenOffice.org (ukázka: http://klub.openoffice.cz/node/view/793/907) čímž se zúročí investice do jeho naučení se. Má dobrou podporu Windows, lze v něm např. snadno psát COM Servery i klienty, takže např. lze v pythoním programu snadno používat Excel:
    import win32com.client
    exc=win32com.client.Dispatch("Excel.Application")
    exc.Visible = 1
    exc.Workbooks.Add()
    exc.Cells(1,1).Value = "Hello"
    
    Tohle je funkční ukázka vytvoření XLS souboru kde v buňce A1 je nápis Hello. Díky nastavení Visible = 1 se všechny příkazy zobrazují online. Je to snadné, stačí se "jen" naučit objektový model Excelu, Wordu a dalších COM serverů, jenž lze ve windows nalézt. Takže moje pozornost není zaměřená na další a další jazyky jako Guile. V jazyku mám jasno a teď zkoumám jeho různá využití. U Pythonu je vskutku co objevovat.

    Python je dobrý jazyk, možná až moc. Nedovolím si tvrdit, že to je univerzální jazyk, protože to není žádný, ale pro mé potřeby se univerzálním jazykem stal. Původně jsem hledal nějaký jazyk vyšší úrovně jako doplněk pro jazyk C, který jsem používal. Python je ale tak dobrý, že jsem C úplně přestal používat, zcela mi ho nahradil, stejně jako Bash. Zatím mi nenahradil PHP, ale to jen proto, že není tak rozšířený a obecně dostupný na serverech poskytující web hosting. Takže když někomu něco dělám, musím se přizpůsobit tomu, co tam má, bohužel. Rád bych, kdyby mi nahradil i JavaScript, to asi nehrozí i když i na tom se pracuje. Bylo by fajn moci aspoň programovat na Mozilla platformě v Pythonu, binding existuje, ale zatím není standardní součástí Mozilly.

    Někoho by mohlo zaujmout i to, že Python je implementovaný pro prostředí Java (Jython) a .NET (IronPython - ve vývoji). Python je moderní silný jazyk s širokými možnostmi a přitom snadno naučitelný a pochopitelný. Myslím že stojí přinejmenším za pozornost a imho nikdo nebude litovat toho, když se naučí v něm programovat, není to těžké. Imho toho nabízí řádově víc, než třeba právě TCL.

    Jediné omezení, které jsem s Pythonem zatím pocítil je výkon, přeci jen to je interpretovaný a ne překládaný jazyk. Ale lze si pomoci knihovnou psyco, která bez práce (za cenu trochu větších paměťových nároků) programy v Pythonu docela urychluje. Psal jsem např. program, který zpracovává miliony naměřených údajů do statistických a průběhových grafů. Naměřená data se nachází v cca 6 MB velkých dbf souborech. S pomocí psyco jsem dosáhl rychlost zpracování denního měření (jednoho dbf souboru) za cca 20 sekund, týdenní (sedm dbf souborů) za cca 60 sekund. Přitom program v C++, který konvertuje binárně uložená data do toho dbf jeden dbf soubor generuje cca 12 sekund.

    A vždy je možno výpočetně náročné funkce napsat v C a v Pythonu je pak používat jako knihovnu. Tako fungují třeba GUI knihovny a podobně. Pořád je to jednodušší a rychlejší, než psát celý program v C.