Hlavní navigace

Názor k článku Programovací jazyk Ada pro úplné začátečníky od Inkvizitor - Díky za odpověď. Nemůžu říct, že by to...

  • Článek je starý, nové názory již nelze přidávat.
  • 2. 5. 2015 9:18

    Inkvizitor (neregistrovaný) ---.net.upcbroadband.cz

    Díky za odpověď. Nemůžu říct, že by to nedávalo smysl, ale podle mě je to prostě jiné pojetí ontologie. Když je v Pythonu (nebo jiném OO jazyku, třeba Smalltalku) nějaký objekt instancí třídy Pes, prostě je to pes a chová se jako pes. Tam, kde se typy deklarují (inferují) staticky, tam je samozřejmě úplně jedno, že jde o psa, jednou se rozhodl chovat jako Zvíře a už z toho nemůže vyskočit (no, v Javě a dalších jazycích může, ale to je spíš smutné).

    Proti teorii typů vystupovat nechci, užitečná je, ale v praxi mi přijde zbytečné argumentovat tím, že daná hodnota má štítek, protože pes prostě JE pes. Je instancí třídy Pes a v Pythonu na to existuje funkce type(), která vrací typ objektu. Jelikož tvrdíš, že v Pythonu existuje (ze statického pohledu) pouze jeden typ, nevidím smysl to dále zkoumat touto optikou a musíme použít jinou. Zásadně nesouhlasím s používáním pojmu "typový štítek", protože to není pojem ontologický, nýbrž implementační. Pokud to mělo být pouze k dovysvětlení, OK, tam mi to nevadí. Pak se vracíme k dilematu typ výrazu a typ hodnoty. V čase běhu programu má každý objekt v Pythonu jednoznačný typ (je instancí třídy), tj. hodnota má typ. Jestli je daný štítkem nebo čím jiným je přece jedno, programátora to nezajímá a z hlediska ontologie to nic neřeší.

    Pro programátora to má význam v tom, že se může spolehnout na informaci dostupnou v době běhu programu (prostřednictvím type() například). Dokonce ale, s určitou mírou jistoty, lze typy dovozovat i statickou analýzou, pokud do hry nevstupuje eval vstupu od uživatele apod. Pak, přestože Python nebyl navržen s přihlédnutím k teorii typů, lze dosáhnout podobného výsledku jako u jazyků typu ML. Problém vidím spíš v tom, že Python nemá algebraické datové typy a věci okolo. Tam mi ty typy začínají teprve dávat pořádný smysl, protože už neslouží pouze ke kontrole správnosti, ale umožňují jasnější vyjadřování myšlenky programem.