Hlavní navigace

Názor ke zprávičce NSA nabádá organizace, aby používaly jazyky, které bezpečně pracují s pamětí od MarSik - Dobře si ten můj příklad prohlédněte. On totiž...

  • Aktualita je stará, nové názory již nelze přidávat.
  • 14. 11. 2022 21:45

    MarSik

    Dobře si ten můj příklad prohlédněte. On totiž pro jeden typ chyby dělá return z vnější funkce. Sice nepřímo, díky Err a otazníku, ale dělá.

    Placeholder je hodnota, která se použije v případě chyby. Například, když něco neexistuje. Zkuste to v Golangu, uvidíte, že ten kód začne vypadat o dost hůře.

    Žádný zásadní problém s čitelností zrovna v tomto případě nevidím, je tam blok se syntaxí, kterou mnozí znají třeba z Ruby. On ani ten otazník není nový, viděl jsem ho už v JS a Swiftu (Optional chaining). V Golangu je zase neobvyklý středník uprostřed ifu, i když logiku i historii má (C a syntaxe for).

    Go někdy možná mírně vede v čitelnosti (ale i to je hodně subjektivní), ale jen díky tomu, že nemá některé z pokročilých vlastností těch ostatních jazyků. Vím, že to byl úmysl, ale i ta generika nakonec přidali. Trošku mi to historicky připomíná situaci ohledně Java 1.4 vs. Java 5 (= poněkud nešťastně udělané generické kolekce).

    Zig syntaxi osobně považuji za ještě méně čitelnou než Rust, ale je to spíš zvykem, protože jsem Zig přeskočil. C++ a čitelnost (obzvláště v přítomnosti meta šablon) také nejsou slova, která bych použil v jedné větě.

    Na druhou stranu je C++ možná lepší pro DSL styl programování, protože v něm funguje přetěžování operátorů (a Python tady září). V Rustu to jde přes generické funkce, ale to už jsou znaky navíc.

    Je velice snadné vybrat si jeden konkrétní příklad a pak na něm ukazovat, že kdokoliv to zapisuje jinak je nějak méněcenný. Najít protipříklad by nebylo těžké.

    Jinak si jsou některé koncepty z Golangu, Rustu a dalších už hodně podobné, všichni sledují ten samý pokrok v oblasti programovacích jazyků. Jen tomu občas říkají jinými jmény.