Kterým směrem se vydat od C

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


Re:Kterým směrem se vydat od C
« Odpověď #76 kdy: 11. 02. 2022, 07:03:03 »
facilitátory, to je — aspoň pro mě — novum
...a další narovnávák na vohýbák :)
Připomnělo mi to "Execution in the Kingdom of Nouns".

Re:Kterým směrem se vydat od C
« Odpověď #77 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 ;)
« Poslední změna: 11. 02. 2022, 08:20:11 od Mirek Prýmek »

Re:Kterým směrem se vydat od C
« Odpověď #78 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 :)

Re:Kterým směrem se vydat od C
« Odpověď #79 kdy: 11. 02. 2022, 08:45:22 »
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 ;)
Mě tam ty explicitně zmíněné továrny ani nechybí. Továrna mi přijde jen jako jeden druh dělače, proti kterým tam brojí obecně. A i ty příklady facilitátorů, na které jsem narazil, byli jiní dělači než továrny.

Ona tam ta podobnost s Javou bude. Mám pocit, že návrh Javy vychází z podobných úvah jako tohle:
Citace: Rob Pike
The key point here is our programmers are Googlers, they’re not researchers. They’re typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant language but we want to use them to build good software. So, the language that we give them has to be easy for them to understand and easy to adopt.

V tomhle stylu myšlení vidím asi nejpodstatnější rozdíl mezi C++ a Go.


Re:Kterým směrem se vydat od C
« Odpověď #80 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?

Re:Kterým směrem se vydat od C
« Odpověď #81 kdy: 11. 02. 2022, 08:55:22 »
A i ty příklady facilitátorů, na které jsem narazil, byli jiní dělači než továrny.
V čem?
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.

Re:Kterým směrem se vydat od C
« Odpověď #82 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í?

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Kterým směrem se vydat od C
« Odpověď #83 kdy: 11. 02. 2022, 09:15:58 »
A i ty příklady facilitátorů, na které jsem narazil, byli jiní dělači než továrny.
Tak jistě, je to něco zcela jiného, v podstatě jen vážou typovou proměnnou pro budoucí volání, nic nového se nevytváří (je to jen wrapper pro compile time, žádnou paměť navíc nezaberou).

Re:Kterým směrem se vydat od C
« Odpověď #84 kdy: 11. 02. 2022, 09:16:48 »
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í?
Tak já si netroufám tvrdit, že mám nějaké kanonické nebo správné chápání návrhových vzorů. :)

Co potkávám továrny, tak obvykle neprodukují nějaké konkrétní objekty, ale "něco" co má nějaké rozhraní. Takže ta továrna je mezivrstva, díky které nevím, co vlastně přesně dostanu.

Ty facilitátory ani nepadají z nějaké továrny - vznikají jako instance nějaké konkrétní generické třídy. A ani z nich nemusí padat nějaké výsledky - může to být třeba zapisovač řádků do databázové tabulky.

Re:Kterým směrem se vydat od C
« Odpověď #85 kdy: 11. 02. 2022, 09:40:02 »
v podstatě jen vážou typovou proměnnou pro budoucí volání, nic nového se nevytváří (je to jen wrapper pro compile time, žádnou paměť navíc nezaberou).
Z high-level pohledu ani neni duvod, aby neco zabiraly. V min omezenem jazyce by parametr ani nebyl fixovany, cili by nebylo co vytvaret...

Mas nejaky odkaz na zdroj, ze skutecne nic nezabiraji realne? (Dovedu si predstavit nejaky implementacni duvod, proc by tomu tak nemuselo byt).

Tak jistě, je to něco zcela jiného
Znovu: v cem? (Nehadam se, ale proste tam zadny zasadni rozdil nevidim)

Co potkávám továrny, tak obvykle neprodukují nějaké konkrétní objekty, ale "něco" co má nějaké rozhraní. Takže ta továrna je mezivrstva, díky které nevím, co vlastně přesně dostanu.
Jo, to jsem zapomnel zminit, to tady ale taky plati. V tom prikladu https://rakyll.org/generics-facilititators/ muze byt struktura Querier kldne neexportovana.

Ty facilitátory ani nepadají z nějaké továrny - vznikají jako instance nějaké konkrétní generické třídy. A ani z nich nemusí padat nějaké výsledky - může to být třeba zapisovač řádků do databázové tabulky.
Go nema "tridy". A to NewQuerier je sice semanticky konstruktor, ale na urovni jazyka je to libovolna typove parametrizovana funkce, ktera typ zafixuje do structu. Volajici vubec nemusi vedet, co ten struct, ktery dostane, obsahuje. Vi jenom, ze jsou na nem nadefinovane nejake metody.

Re:Kterým směrem se vydat od C
« Odpověď #86 kdy: 11. 02. 2022, 10:09:16 »
Co potkávám továrny, tak obvykle neprodukují nějaké konkrétní objekty, ale "něco" co má nějaké rozhraní. Takže ta továrna je mezivrstva, díky které nevím, co vlastně přesně dostanu.
Jo, to jsem zapomnel zminit, to tady ale taky plati. V tom prikladu https://rakyll.org/generics-facilititators/ muze byt struktura Querier kldne neexportovana.
Aha, už myslím začínám tušit, kde se naše pohledy liší. Já na to koukám jako čtenář kódu. A že tam zrovna není nic, co by to přede mnou _opravdu_ schovalo. Jo, kdyby to querier bylo jen rozhraní a padalo ven z nějakého blackboxu, tak bych ten blackbox za továrnu považoval. Jo blackboxem nemyslím že se opravdu nemůžu podívat dovnitř, ale že nevidím dovnitř při lokálním uvažování třeba v rámci souboru.
Ale tímhle způsobem se dá taky upravit skoro všechno. Takže to, že by to tak mohlo být, tak nějak neřeším. To znamená že ze všeho se dá udělat továrna, ne že všechno je továrna.
Citace

Ty facilitátory ani nepadají z nějaké továrny - vznikají jako instance nějaké konkrétní generické třídy. A ani z nich nemusí padat nějaké výsledky - může to být třeba zapisovač řádků do databázové tabulky.
Go nema "tridy". A to NewQuerier je sice semanticky konstruktor, ale na urovni jazyka je to libovolna typove parametrizovana funkce, ktera typ zafixuje do structu. Volajici vubec nemusi vedet, co ten struct, ktery dostane, obsahuje. Vi jenom, ze jsou na nem nadefinovane nejake metody.
Já vidím struct, který se přes tečkovou notaci předává jako první parametr nějaké sadě funkcí. To prostě vypadá a kváká jako C++/C#/Java třída. A mám pocit, že je i cílem aby to tak co nejvíc kvákalo, ať to není matoucí. :)

Re:Kterým směrem se vydat od C
« Odpověď #87 kdy: 11. 02. 2022, 10:21:50 »
Aha, už myslím začínám tušit, kde se naše pohledy liší. Já na to koukám jako čtenář kódu. A že tam zrovna není nic, co by to přede mnou _opravdu_ schovalo. Jo, kdyby to querier bylo jen rozhraní a padalo ven z nějakého blackboxu, tak bych ten blackbox za továrnu považoval.
Querier nemuze byt rozhrani, protoze rozhrani nemuzou byt typove parametrizovana, pokud se nepletu.

Já vidím struct, který se přes tečkovou notaci předává jako první parametr nějaké sadě funkcí. To prostě vypadá a kváká jako C++/C#/Java třída. A mám pocit, že je i cílem aby to tak co nejvíc kvákalo, ať to není matoucí. :)
Vypada to tak jenom syntakticky, jinak se to ve spouste veci lisi.

Napr. mechanismus tzv. "embedded structs" sice pripomina dedicnost, ale pri predavani "predka" se predava jenom skutecne ten embedded struct, takze se pomoci toho opravdova dedicnost udelat neda. Jednou jsem na to napsal explicitni priklad, ale ted ho nemuzu najit :)

No a konkretne tady nema smysl mluvit o "instanci konkrétní generické třídy". To, co je vraceno, je proste struct. Na jeho definici nic "generickeho" neni :)  A v Go to ani jinak nejde. This is the way ;)

Re:Kterým směrem se vydat od C
« Odpověď #88 kdy: 11. 02. 2022, 10:27:25 »
ruzne jazyky se tu uz probiraly, ale dotaz ted zni nasledovne.
osoba zna dobre C, Javu a vi i o C++98.
osoba se dale muze vydat cestou zmeny
a soustredit se vice na GOlang nebo C++11, 14, 17.
ja bych doporucil spise GOlang, co vy byste doporucili? s ohledem na rychlost zapracovani se, na jednoduchost, na dostupne pracovni pozice.

Když zná dobře Javu, tak Javu, ne? Zvlášť když neví co chce, do korporátu zapadne bezvadně...

To plati tak mozna v Praze a mozna trochu v Brne kde ma clovek na vyber, kdekoliv jinde jsou zejmena jen ty korporaty.

Re:Kterým směrem se vydat od C
« Odpověď #89 kdy: 11. 02. 2022, 11:05:39 »
Aha, už myslím začínám tušit, kde se naše pohledy liší. Já na to koukám jako čtenář kódu. A že tam zrovna není nic, co by to přede mnou _opravdu_ schovalo. Jo, kdyby to querier bylo jen rozhraní a padalo ven z nějakého blackboxu, tak bych ten blackbox za továrnu považoval.
Querier nemuze byt rozhrani, protoze rozhrani nemuzou byt typove parametrizovana, pokud se nepletu.
Ale může to být "něco" do čeho nevidím a na co můžu zavolat All nebo Filter. Což bych považoval za rozhraní, aspoň v obecném smyslu, ne jako klíčové slovo nějakého jazyka.
Citace
Já vidím struct, který se přes tečkovou notaci předává jako první parametr nějaké sadě funkcí. To prostě vypadá a kváká jako C++/C#/Java třída. A mám pocit, že je i cílem aby to tak co nejvíc kvákalo, ať to není matoucí. :)
Vypada to tak jenom syntakticky, jinak se to ve spouste veci lisi.

Napr. mechanismus tzv. "embedded structs" sice pripomina dedicnost, ale pri predavani "predka" se predava jenom skutecne ten embedded struct, takze se pomoci toho opravdova dedicnost udelat neda. Jednou jsem na to napsal explicitni priklad, ale ted ho nemuzu najit :)
To i v tom C++ nebo Javě. Ty jsou si taky jen podobné. A skoro mám chuť slovíčkařit a zeptat se, co přesně je ta "opravdová dědičnost". Ale jen skoro ;)