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 - zboj

Stran: 1 ... 19 20 [21] 22 23 ... 101
301
Vývoj / Re:Funktory v C++
« kdy: 11. 05. 2017, 19:03:16 »
...
Ještě jednou pro ty pomalejší - otázka není o volatelných objektech, ale o (matematických) funktorech.

Zboji - dej jeden vo indianech...

... to bylo mysleno vazne (jenom abys to nebral zle) ... zajima me to asi vic nez funktory a neni kde jinde se na to zeptat :)
Založ téma, třeba "morfosyntax jazyků kmenů horního Peru a přilehlých oblastí a její automatická analýza metodou skrytých Markovových modelů" nebo něco podobně běžného v rámci IT, to pak bude zajímavá diskuse ;)

302
Vývoj / Re:Funktory v C++
« kdy: 11. 05. 2017, 16:42:17 »
Jakožto hobbík a lopata odkojená packalem a základy x86 ASM nabídnu ještě svůj příběh, jak a kde jsem potkal functor:

Před lety, už dávno po škole, jsem potkal programátorský problém natolik zábavný a složitý, že donutil ten kus hovězího co nosím v lebce, zamýšlet se nad OOP a snažit se ho ztéci (s odpuštěním) cestou C++. Průvodcem mi byl pan Bruce Eckel.
Dodnes nechápu, proč svoji dvoudílnou knihu "Thinking in C++", když už ji zveřejnil v HTML, vystavil ji v podobě dvou ZIPů, tzn. nevystavil to HTML na webu přímo, aby bylo přímo odkazovatelné, googlovatelné apod. Nevadí. O functorech resp. "function objectech" mluví cca na dvou navzájem dost vzdálených místech v druhém dílu. Najděte v ZIPu jediný HTML soubor a hledejte text "functor". Dovolím si dva citáty:

Citace
In Advanced C++: Programming Styles And Idioms (Addison Wesley, 1992), Jim Coplien coins the term functor which is an object whose sole purpose is to encapsulate a function (since “functor” has a meaning in mathematics, we shall use the more explicit term function object). The point is to decouple the choice of function to be called from the site where that function is called.

Tohle chápu tak, že functor je jenom objekt, obalující funkci, tak aby se dala předat jako parametr. Tzn. v této rovině je to jenom "zaobjektěná náhražka" klasické Céčkové syntaxe pro předání pointeru na funkci včetně úplného prototypu. A v zásadě není ani potřeba, aby ten functor obsahoval redefinici metody "operator()".

Sám Bruce Eckel raději hovoří o "function objectech" než o functorech, a jeho druhý díl o tom obsahuje samostatnou kapitolu. Podotýkám, že ta kniha je na dnešní poměry už dost stará.

Děkuji předřečníkům za vysvětlivku, že lze overloadnout operator().

Kdysi tuším na nějakých "gtree" objektech jsem se naučil, podstrčit stromu svou vlastní porovnávací funkci. Později jsem totéž hledal u std::map, a seznal jsem, že std::map toto také umí, ale vyžaduje, abych tu porovnávací funkci zabalil do "functoru". Tak jsem si našel nějaký example a levou zadní jsem to použil, aniž bych zkoumal nějaký hlubší smysl.

Dneska když tak kolem toho browsím, našel jsem nějaký example na Stack Overflow.
Ještě jednou pro ty pomalejší - otázka není o volatelných objektech, ale o (matematických) funktorech.

303
Studium a uplatnění / Re:Socialistické tituly Ing. a Mgr.
« kdy: 10. 05. 2017, 18:22:18 »
Citace
Mne pripada celkem rozumny prevzit vyjimecne dobrej zapadni zvyk a titul si nepsat.

Na základe pozorovania okolia mám skôr pocit že chvastať sa a predstierať že sú niečo viac potrebujú skôr rôzny stredo/základo školsky vzdelaní jedinci. Najviac opovrhuju VŠ tí ktorí boli z VŠ vyhodení. Dá sa to pochopiť, ľudská psychika je už raz taká. Aj ked pravda je že k tomu aby človek mohol samostatne pracovať potrebuje vedieť omnoho viac než sa učí na VŠ.

Neviem ako je to v IT, ale ako vývojár elektroniky (momentálne meniče riadené DSP) vidím môj Ing. titul ako spôsob ako sa na prvý pohľad odlíšiť sa od pologramotných učnovkárov čo niekde po stavbách ťahajú drôty.

Alebo je nepísanie titulu prejav pokusu pokus o inklúziu a multikulti.
Psát si oprávněný titul je normální, ale nakonec to závisí na každém zvlášť. Já mám tituly jen v životopise, ani na vizitce ne.

304
Studium a uplatnění / Re:Socialistické tituly Ing. a Mgr.
« kdy: 10. 05. 2017, 14:36:02 »
U stavařů je to celkem jasné, ale nejsou jen stavaři. Opačný extrém je „softwarové inženýrství“.
Doporučuju přečíst si, co o "software engineering" napsal Dijkstra  :)

305
Vývoj / Re:Funktory v C++
« kdy: 10. 05. 2017, 14:35:17 »
U seznamu to je jasný, ale třeba u kontinuace?
Ty bys toho taky chtěl, furt! ;)

P.S. asi radši skončíme, ne, rozjeli jsme tady solidní off-topic :)
Jo, jdu dělat něco smysluplného (pandas), drž mi palce, můj notebook má jen 64GB RAM  ;)

306
Vývoj / Re:Funktory v C++
« kdy: 10. 05. 2017, 14:31:27 »
Podobně, proč se používá "fmap" (to je možná ještě horší, protože "type constructor" je aspoň výstižné)?
Jednoduše proto, že to má stejnou signaturu jako List.map, tak si to každej aspoň zapamatuje a je mu to intuitivně jasný ;)

Myslím, že to trochu hrotíš :)
U seznamu to je jasný, ale třeba u kontinuace?

307
Vývoj / Re:Funktory v C++
« kdy: 10. 05. 2017, 14:25:46 »
Já ale nekritizuju, jak to je udělané v kódu, jen jsem kritizoval terminologii. Je jasné, že v implementaci vždy budou kompromisy a zjednodušení.
Takže by ti v podstatě stačilo, kdyby se typovému konstruktoru říkalo nějak jako "the object-mapping functor part". Tak ti nevím ;)
To je zrovna jen další výmysl ("když je bordel v terminologii, uděláme úplně novou" ;D). Matematicky to je "functor restricted on (the category of types') objects". V matematice se ostatně často může říct jen "funktor", když ta restrikce plyne z kontextu (což většinou plyne, a když ne, tak se to upřesní). Podobně, proč se používá "fmap" (to je možná ještě horší, protože "type constructor" je aspoň výstižné)?

308
Vývoj / Re:Funktory v C++
« kdy: 10. 05. 2017, 14:19:38 »
U toho Prologu je to imho podobně - zjistilo se, že pro praktické generické použití ten jednoduchý model nestačí a šup, je potřeba tam přidat různý specialitky ;) Osobně mi to taky sympatický není, kdyby Prolog zůstal jenom jako "dotazovací jazyk" (podobně jako Datalog) a nedělal se z něho generický programovací jazyk (který pak stejně máo kdo umí dobře použít), přišel by mi sympatičtější.
Tak to je právě ten problém, ono to není pro "praktické generické" použití, motykou taky nekácím strom, i když by to nějak vyďoubat třeba šlo. Prolog má sílu pro dedukci, nejlépe s nějakým doplňkem pro nonfloundering teorie (jinak to je taky dost nedostatečné). Dělat v tom GUI a jánevímco je jako dělat GUI v SQL. Nicméně opět, nešlo mi o čistotu Prologu, jen o terminologii (tady za to může Kowalski).

309
Vývoj / Re:Funktory v C++
« kdy: 10. 05. 2017, 14:14:43 »
Já tu motivaci chápu, ale je to matoucí pro lidi, co do toho vidí do hloubky. Možná to je kompromis mezi "uděláme to přesně do puntíku superformálně matematicky" a "uděláme to nějak tak jakž takž, aby to pobral i Pepa, co sedí za rohem v Lidlu za kasou". Jenže v prvním případě to je pak dost nepřesné a v tom druhém to stejně nakonec skončí přidáváním různých epicyklů, takže to stejně skončí jako složitost. Nedávno (tebou) zmíněný Prolog mimochodem dtto, vyjde se z jednoduché a jasné (a jasně a přesně už dříve nezávisle na konkrétním použití formulované) myšlenky a skončí to kočkopsem s hromadou vlastních výjimek (a vlastní terminologií).
No jo, jenže se prostě bavíme o programovacích jazycích, kde primární motivace je vytvořit něco, v čem se dá dobře programovat a ne něco, co supervěrně modeluje matematickou teorii. Dovedeš si představit, jak by ten formálně přesný functor mohl vypadat?
Kód: [Vybrat]
mapObject : ??? -> ???
mapMorphism : ??? -> ???
...kde
Kód: [Vybrat]
???
by mohlo být úplně cokoli... :) To by asi byla pěkná makačka na bednu nějak to smysluplně definovat a ještě ke všemu pro to napsat překladač :)
Já ale nekritizuju, jak to je udělané v kódu, jen jsem kritizoval terminologii. Je jasné, že v implementaci vždy budou kompromisy a zjednodušení.

310
Vývoj / Re:Funktory v C++
« kdy: 10. 05. 2017, 14:02:34 »
Tak třeba že jedné části funktoru se říká "typový konstruktor" a druhé "fmap", to nejen že nemá oporu jinde (je to vycucané z prstu), ale navíc to svádí k domněnce, že jde o dvě různé věci.
No jo no, tak to je asi daný tím, že tu první část (mapování objektů) máš už v "hlavičce"
Kód: [Vybrat]
class Functor (f :: * -> *) where
...čili Functor v Haskellu je jeden konkrétní funktor (Hask -> neco Hask).

Kdyby měl být Functor jakýkoli obecný functor, tak už by tomu asi nerozuměl vůbec nikdo, když už i takhle s tím lidi mají problémy :) Člověk to musí brát tak, že Haskell nemá modelovat CT v její obecnosti, ale jenom ji využívá pro jeden konkrétní účel...
Já tu motivaci chápu, ale je to matoucí pro lidi, co do toho vidí do hloubky. Možná to je kompromis mezi "uděláme to přesně do puntíku superformálně matematicky" a "uděláme to nějak tak jakž takž, aby to pobral i Pepa, co sedí za rohem v Lidlu za kasou". Jenže v prvním případě to je pak dost nepřesné a v tom druhém to stejně nakonec skončí přidáváním různých epicyklů, takže to stejně skončí jako složitost. Nedávno (tebou) zmíněný Prolog mimochodem dtto, vyjde se z jednoduché a jasné (a jasně a přesně už dříve nezávisle na konkrétním použití formulované) myšlenky a skončí to kočkopsem s hromadou vlastních výjimek (a vlastní terminologií).

311
Vývoj / Re:Funktory v C++
« kdy: 10. 05. 2017, 13:47:18 »
V Haskellu je ten problém, že zavádí svou terminologii. Pak je v tom ještě větší brajgl.
Co máš namysli?
Tak třeba že jedné části funktoru se říká "typový konstruktor" a druhé "fmap", to nejen že nemá oporu jinde (je to vycucané z prstu), ale navíc to svádí k domněnce, že jde o dvě různé věci.

312
Vývoj / Re:Funktory v C++
« kdy: 10. 05. 2017, 13:40:31 »
V Haskellu je ten problém, že zavádí svou terminologii. Pak je v tom ještě větší brajgl.
To možná jo, ale přijde mi výstižnější. V Haskellu je typ type, a třída class. V javě se typu říká class a třídám interface. A v C++ je to ještě zajímavější.
No jo, v Javě a C++ apod. to už je terminologie OOP (přiohnutá). Já myslel jen v kontextu FP.

313
Vývoj / Re:Funktory v C++
« kdy: 10. 05. 2017, 12:40:17 »
Nekritizoval tě tu někdo v nějakém jiném vlákně za něco podobného?   ;)
Ne, za přesně opačnou věc :)

a jako zajímavost, function object, který vrací T je funktor taky (a že se na to, svým způsobem, taky dá dívat jako na kontejner).
Functor může být cokoli, když si kategorie nadefinuješ tak, aby byly splněna ta definice, co jsi psal. Ale v tom běžném chápání, jak je v Haskellu ("kategorie Hask"), jsou funkce morfismy. Viz https://en.wikibooks.org/wiki/Haskell/Category_theory#Functors_on_Hask

Citace
Translating categorical concepts into Haskell
Functors provide a good example of how category theory gets translated into Haskell. The key points to remember are that:

We work in the category Hask and its subcategories.
Objects are types.
Morphisms are functions.
Things that take a type and return another type are type constructors.
Things that take a function and return another function are higher-order functions.
Typeclasses, along with the polymorphism they provide, make a nice way of capturing the fact that in category theory things are often defined over a number of objects at once.
V Haskellu je ten problém, že zavádí svou terminologii. Pak je v tom ještě větší brajgl.

314
Odkladiště / Re:Nějaké nové objevy ve fyzice?
« kdy: 10. 05. 2017, 12:36:57 »

Ne. Stačí o fyzice něco vědět a ten článek si přečíst pořádně. Ne jenom titulek.

Asi tak. Když jsem to četl, žasnul jsem ne nad zápornou hmotností, ale nad fantazií některých vědců a jejich schopností vylhat si objev, aby dosáhli na granty.
Bez grantu nemůžou na konferenci na Bali nebo Džedžu.

315
Vývoj / Re:Funktory v C++
« kdy: 09. 05. 2017, 22:43:12 »
Citace: Mirek Prymek
Určitě, ale měl by vědět, že to je jenom (velmi dobrý) způsob, jak si to představit, ne že to "je ono".
Nekritizoval tě tu někdo v nějakém jiném vlákně za něco podobného?   ;)

Citace
Funkce není funktor ve smyslu otázky ani s nimi nemá nic společného.
Ale ve smyslu otázky to je. Spíš bych řekl, že odpověď ve smyslu category theory nebyla smyslem otázky. Jako jasně, můžeme se začít bavit o endofunktorech, morfismech apod., ale nakonec stejně skončíme s tím, že prakticky vzato je to (v drtivé většině využítí) kontejner a jako zajímavost, function object, který vrací T je funktor taky (a že se na to, svým způsobem, taky dá dívat jako na kontejner).
Otázka byla zcela zjevně o konceptu z teorie kategorií. Ale na druhou stranu je dobře, že se aspoň vyjasnila terminologie (včetně toho Prologu, tam to je fakt na přesdržku  >:().

Stran: 1 ... 19 20 [21] 22 23 ... 101