Nad Go jsem chvilku uvažoval, čistě pragmaticky, protože by to měl být takovej ten správně bastlířskej, co tě zbytečně neomezuje.
Jo, Go je v některých případech výborná pragmatická volba. Je dobrý na věci, které jsou přímočaré, máš jasnou představu, co se tam bude dít, neplánuješ tam žádné moc vychytralé postupy, abstrakce apod. NEní to "příliš dynamicky konkurentní" (paradoxně) a chceš mít širší publikum. Středně zkušený programátor v něm může začít docela slušně psát tak za dva tři dny, kód je srozumitelný za den.
Co mě po několika letech práce v Go docela zklamalo, je, že to programování konkurentních věcí není tak snadné, pohodlné a jednoduché, jak se Go od začátku prsí. Oproti Erlangu je třeba pěknej oser orchestrace goroutin. S pomocí context.Context se to jakžtakž dá napsat, ale je to
peklo a člověk se donekonečna pere s nějakými cornerkejsy a naráží na to, že to tam dolepili později a ve velké části stdlib to vůbec není
(Velice podobnou zkušenost mám s coroutinami v Pythonu - je vidět, že dobrá implementace konkurentnosti chce dost času, první nástřely jsou vždycky strašné a zlepšuje se to jenom pomalu).
Na tooling mám nejednoznačný pohled (ostatně jako i na ten jazyk v celku, obecně). Například díky tomu, jak je to jednoduchý jazyk s pevnou strukturou, je všude k dispozici velmi dobrý refaktoring. To je pro každodenní práci super. Některé věci mi ale hlava vůbec nebere - příjdou mi děsně "typicky gočkově tvrdohlavě zaostalé" nebo jsem prostě nebyl schopný pochopit, jaká za nimi má být logika. Například package management mi přijde otřesný. Nebo naprosto nechápu, když má jazyk relativně použitelné generování dokumentace (docstringy, doctesty apod.), proč není možné si nechat zobrazit v prohlížeči dokumentaci
jenom svého projektu. Vždycky to tam narve dokumentaci celé stdlib. Tohle mi přijde jako základní featura a nezjistil jsem, jak to udělat. Takových WTF momentů je tam víc.
V Rustu jsem nic nedělal, jenom jsem se s ním seznámil a působil na mě daleko koncepčněji, čistěji, tooling byl složitější, ale s jasnou logikou. Daleko menší množství tvrdohlavě debilních řešení (velmi typické pro Go) a WTF momentů. Package management takový, jaký bych u moderního jazyka čekal. Cenou za to je menší publikum - množství lidí, kteří ten kód přečtou nebo použijí, bude o dost menší.