Hlavní navigace

Názor k článku Go: minimalistický a překvapivě výkonný programovací jazyk od Michal Mühlpachr - > Neumi ani takove zaklady jako je Set...

Článek je starý, nové názory již nelze přidávat.

  • 22. 11. 2018 12:00

    Michal Mühlpachr

    > Neumi ani takove zaklady jako je Set nebo OrderedMap

    Základy jsou pro mě typy, které umožňují srozumitelnou (případně elegantní) implementaci komplexnějších datových struktur. K tomu Go evidentně stačí array/slice a unordered map .. Důkazem budiž právě standardní knihovny (packages) Go a projekty v Go, kde s komplexními datovými strukturami pracují.

    Základy mohou být ještě méně rozmáchnuté než u Go, např. seznam u Lispu či tabulka u Lua a oběma to stačí na JAKÉKOLIV komplexní datové struktury.

    Podle mě jakákoliv sorted kolekce v základech jazyka vede spíše k nesprávnému užití (používám ji na něco, kde není třeba a zbytečně plýtvám zdroji) či neutěšenému designu (typ reprezentace sorted kolekce může být u stejného datového typu pro nějaký use case vhodný a pro řadu jiných zcela nevhodný).

    Zařazování komplexních datových typů do základů jazyka vede k nepřehlednosti, naboptnalosti a zejména neortogonalitě jednotlivých vlastností jazyka (užití vlastností nejde zcela nezávisle kombinovat). Přijde mi, že nezařazování kontejnerů, vektorů, matic, tenzorů, ... do základů jazyka (pokud to není přímo domain specific jazyk jako třeba R) je přednost (nikoli vada) designu jazyka.

    > Libovolna manipulace se aspon trochu strukturovanymi daty je neskutecny pain-in-the-ass

    Pro programátora formovaného "objektovými" programovacími jazyky určitě, stejně jako pro něho bude tortura vzdát se přiřazování do proměnných a programovat funkcionálně - použití Lisp maker (princip kód a data jsou jedno a totéž) pro něj bude za úrovní nepochopitelné magie.

    Jakmile si rozpustíme bariéry, co jsme si dobrovolně postavili a zkusíme pracovat v paradigma slupkových API s vrstvenými Go interfaces ala streamy, můžeme řadu bolestí převést na eleganci. Jestli to chceme je jiný typ problému ;-)