Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Mirek Prýmek

Stran: 1 [2] 3 4 ... 618
16
Vývoj / Re:Kterým směrem se vydat od C
« kdy: 11. 02. 2022, 08:58:05 »
Třeba první na co jsem narazil byl "querier" - dotazovač do databáze. Pokud je tohle továrna, tak už je továrna všechno co má nejaký výstup.
Já se patternama nezabývám (vědomě, záměrně), takže říkám "factory" všemu, co produkuje nějakého "dělače" na základě nějakých parametrů. Což na ten facilitátor přesně sedí.

U kanonického chápání factory jsou ještě nějaká další omezení?

17
Vývoj / Re:Kterým směrem se vydat od C
« kdy: 11. 02. 2022, 08:47:56 »
A i ty příklady facilitátorů, na které jsem narazil, byli jiní dělači než továrny.
V čem?

18
Vývoj / Re:Kterým směrem se vydat od C
« kdy: 11. 02. 2022, 08:32:31 »
Go vlastně teprve teď dostalo typové parametry a množiny (“součtové typy”) a podobné srandičky (facilitátory, to je — aspoň pro mě — novum), takže se dá čekat exploze článků na blozích typu “amazing category theory in Go”, jako svého času v případě Scaly 3, C++17 nebo po přidání GAT do Rustu. Už se netěším :)
Bez typově parametrizovaných metod ty články moc dlouhý nebudou :)

19
Vývoj / Re:Kterým směrem se vydat od C
« kdy: 11. 02. 2022, 08:17:42 »
Připomnělo mi to "Execution in the Kingdom of Nouns".
To jsem neznal. Vtipnej článek. Zbytečně dlouhej a sem tam bych s něčím polemizoval, ale rozhodně vtipně napsanej.

Trochu mi tam chybí speciální rant proti *Factory:

Kód: [Vybrat]
GarbageDisposalStrategyFactory.create(StandardGarbageDisposalStrategyOptions()).run()

Ty facilitátory mi factories silně připomínají... Až bych skoro řekl, že to jsou ony, jenom jim to bylo trapný tak pojmenovat, aby se jim každej nesmál, že znovuobjevili Javu ;)

20
Vývoj / Re:Kterým směrem se vydat od C
« kdy: 10. 02. 2022, 21:46:17 »
facilitátory, to je — aspoň pro mě — novum
...a další narovnávák na vohýbák :)

21
Vývoj / Re:Kterým směrem se vydat od C
« kdy: 10. 02. 2022, 21:36:17 »
Na netu existují dost zevrubné seznamy výhrad. Stačí do vyhledávače zadat něco ve smyslu "why go sucks".
Nicméně jestli Go neznáš, tak ti ty seznamy neřeknou to zásadní - praktické dopady těch někdy bizarních a tvrdohlavých designových rozhodnutí. To je totiž to, co uživatel pak vnímá nejbolestněji.

Jeden z praktických důsledků je třeba nekonečné psaní boilerplatu. Knihovní funkce, které člověk jinde považuje za naprostou samozřejmost (typu třeba filter, map, each, every, ...), prostě nejsou. A generika taky nejsou (teda doteď nebyly). Takže si je ani nemůžeš napsat a pořád dokola nahrazuješ tyhle funkce několika řádky s for loopem (viz např. https://gobyexample.com/collection-functions). Když to už děláš po desáté, tak tě to fakt přestane bavit...

Jiný konkrétní příklad je praktická neexistence (protože nepoužitelnost) imutability. Přesnej opak Rustu...

22
Vývoj / Re:Kterým směrem se vydat od C
« kdy: 10. 02. 2022, 21:15:32 »
Můžeš uvést příklad? Pro představu.
Na netu existují dost zevrubné seznamy výhrad. Stačí do vyhledávače zadat něco ve smyslu "why go sucks".

Asi dost kompletní seznam různých článků, včetně uspořádání podle jednotlivých výhrad: https://github.com/ksimka/go-is-not-good (EDIT: některé články jsou starší, takže už nemusí všechno platit, ale drtivá většina výhrad pořád ještě platí)

23
Vývoj / Re:Kterým směrem se vydat od C
« kdy: 10. 02. 2022, 12:57:34 »
Tak treba zapojit aspon trosku mozog
Nebo se nedívat na statistiky vyhledávání, ale raději na stistiky kódu. Třeba https://madnight.github.io/githut/#/pull_requests/2021/4

24
Vývoj / Re:Kterým směrem se vydat od C
« kdy: 10. 02. 2022, 11:47:13 »
Staci sa pritom pozriet napr na https://www.tiobe.com/tiobe-index/
Njn, jsme pitomci, měli jsme doporučit Visual Basic  ::)

25
Vývoj / Re:Kterým směrem se vydat od C
« kdy: 10. 02. 2022, 08:50:28 »
psát si pro každý typ intu třeba min/max...
To se dá udělat pomocí generovaného kódu, ale je to hnus.

26
Vývoj / Re:Kterým směrem se vydat od C
« kdy: 10. 02. 2022, 07:58:36 »
Go je holt jazyk, který si Google navrhl přesně pro své potřeby a podmínky. A ty jsou ve spoustě případů dost specifické.
To možná platí pro některá strategická rozhodnutí ohledně celkového směřování, ale u spousty věcí bych to spíš tipoval na Pikeův svéráz (stačí se kouknout na Plan9 a člověk už trochu tuší...). Například to, že v jazyce pořád drží ujetý systém šablonového generování zdrojáků místo aby zavedli pořádný makra, rozhodně není nějakou "specifičností Googlu"... A takových příkladů je spousta.

Jako první výkop docela slušný, ale pak jazyk dost zamrzl, čekal jsem, že půjde dopředu daleko rychleji. To je veliký zklamání. Go díky své jednoduchosti sice předběhlo Rust (v adopci), ale řekl bych, že ten ho dost slušně dohnal a teď má výhodu propracovanější koncepce.

27
Vývoj / Re:Kterým směrem se vydat od C
« kdy: 10. 02. 2022, 05:49:44 »
P.S. V žádné případě, ani náhodou, bych Go necharakterizoval jako jazyk, který "tě zbytečně neomezuje". IMHO je to přesně naopak: autoři jsou velmi tvrdohlaví ("opinionated", chce-li kdo) a jazyk obsahuje právě spoustu úplně dementních (z pohledu uživatele) omezení. Go je takové velmi úzce nalajnované hřiště. Když to člověk ví a akceptuje, v tom uzounkém hřišti se hraje relativně dobře. Ale člověk má neustále někde pocit, že mu byla přistřižena křídla (popř. uříznuty ruce ;) ). Autoři tvrdí, že velmi pečlivě zvolili, kde budou řezat a že je to geniální volba pro dobro uživatele. V mnoha případech si tím nejsem ani trochu jist stejně jako oni ;)

28
Vývoj / Re:Kterým směrem se vydat od C
« kdy: 10. 02. 2022, 05:40:46 »
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ší.

29
Vývoj / Re:Kterým směrem se vydat od C
« kdy: 09. 02. 2022, 19:01:46 »
A taky ten kód bude bezpečnější, v Go se člověk musí hodně snažit, aby něco fest podělal.
Stačí přidat hodnotu do enumu a někde zapomenout switch case.

Null pointer exception se taky udělá velmi snadno - stačí do structu přidat nový field a zapomenout ho na jednom z míst, kde se používá "x := &Struct{...}" inicializovat.

...a ještě asi dvacet velmi jednoduchých způsobů. Go není vůbec bezpečný jazyk.

30
Studium a uplatnění / Re:Strategie na recesi
« kdy: 09. 02. 2022, 06:14:44 »
Dovolím si ještě opravit: Já nikde (doufám) nenaznačoval neomylnost. [...] Trpím určitou jistotou
No, tak až budeš trpět nejistotou, můžeme se bavit o tom, že nenaznačuješ neomylnost ;)


Stran: 1 [2] 3 4 ... 618