Dědičnost dnes

balki

Re:Dědičnost dnes
« Odpověď #915 kdy: 02. 02. 2017, 18:16:14 »
No nevím... na ty rubíny asi raději Erlang...

Tam by som povedal, ze sa pouzivaju nejake fosilie typu Ada, alebo Fortran s muzejnymi modulmi za zanzilion eur. Pouzitie javy na taketo ucely nedovoluje licencia.


JS

Re:Dědičnost dnes
« Odpověď #916 kdy: 02. 02. 2017, 18:33:39 »
OK, asi jsem dnes nějaký přibržděný nebo jsem příliš prakticky orientovaný, když to stále nechápu, ale já ještě nepotkal počítač s neomezenou pamětí.

Jeste si to rozmysli. Nejde o to, ze by pocitac mel neomezenou pamet, ale ze velikost pameti na mnozine pocitacu, ktere uvazujeme, je neomezena.

To, o co mi slo, bylo, ze realne je RAM implementovana v zasade podobnym zpusobem jako muzeme implementovat "pamet" ve funkcionalnim programovani - tedy jako strom:

V pripade RAM, v koreni je datova sbernice, a ten strom se postupne vetvi az k jednotlivym bunkam. Cim bude RAM vetsi, tim delsi bude draha od korene k nejvzdalenejsi bunce, tedy hloubce stromu, a informace se muze sirit jen rychlosti svetla.

V pripade funkcionalniho programu muzu primitivni hodnoty ukladat jako listy nejakeho vyvazovaneho stromu. Zase, cim vic stromu ten list bude mit, tim vetsi bude potreba jeho hloubka, a tim dele to bude trvat dostat se k danemu listu.

To, ze v prvnim pripade zanedbavame hloubku stromu, je dane tim, ze je ten pristup zbesile rychly. Proto je nefer to srovnavat s druhou situaci, kdy ji nezanedbavame (ackoli uznavam, ze se obe situaci lisi o vyznamnou konstantu). Na to jsem poukazoval v puvodnim prispevku.

rejpal rejpal

Re:Dědičnost dnes
« Odpověď #917 kdy: 02. 02. 2017, 18:54:32 »
Pořád nějaká paměť... když prostě jedno pc nestačí, tak si v Erlangu přes konzoli připojím další PC... a je to...

fajront pyco

javaman ()

Re:Dědičnost dnes
« Odpověď #918 kdy: 02. 02. 2017, 19:05:53 »
Pořád nějaká paměť... když prostě jedno pc nestačí, tak si v Erlangu přes konzoli připojím další PC... a je to...

fajront pyco

A je ten přístup do ní stejně rychlý jako třeba do cache procesoru prvního stroje?

Protože jinak si můžu udělat pamět i z Google disku, víš co...

Re:Dědičnost dnes
« Odpověď #919 kdy: 02. 02. 2017, 20:24:07 »
To jsou věci teda, člověk je jeden den totálně nasazenej v práci a pak koukne na Root a tady je takovej armageddon! Teda pánové... Obzvlášť ty motanice kolem O-notace jsou teda výživný... Do toho se už ani motat nebudu :)

Já jsem požadoval konkrétní implementaci konkrétního algoritmu, v konkrétním FP jazyku bez side efektů, která po překladu vygeneruje pro reálný HW stejně efektivní kód (stačí z hlediska asymptotické složitosti) jako implementace v imperativním jazyku.
No... neuraž se, ale já bych teda nechtěl vidět, jak bys tu složitost pro konkrétní implementaci počítal - a jak bysme se tady přes fórum shodli na tom, že ten výpočet je správně...

Přijde mi, že Zboj, Prýmkem a vy máte své náboženství a snažíte se ho obhajovat za každou cenu. Když náhodou nemáte pravdu, tak protivníka ubijete argumentem "to v praxi není rozhodující" nebo naopak pseudointelektuálními žvásty (ty používá hlavně zboj) a citací vašich FP guruů.
Nechápu. Jasně a bez jakýchkoli vytáček jsem tady několikrát napsal, že Elixir (který jediný z FP jazyků jakžtakž znám) má hrubý výkon špatný, v testech hrubého výkonu nemá absolutně šanci a naprosto se nehodí pro number crunching. Jediný, co tady dělám, je vyvracení přegeneralizovaných tvrzení o tom, že v FP něco nejde a nejde a nejde protože prostě nejde a jestli jde, tak nejde. Kolikrát tady někdo stejně otevřeně jako já napsal, k čemu se nehodí jeho oblíbený OOP jazyk?!

Ani nevím, jakého gurua jsem citoval. Na nic si teď nevzpomínám. Opět jsem se jenom snažil trochu korigovat přehnaná tvrzení o tom, že Armstrong je pitomec, který ničemu nerozumí a OOP vůbec nepochopil. Když už pro nic jinýho, tak kvůli věku by se k němu imho místní usmrkanci měli chovat s elementární dávkou respektu :(


Re:Dědičnost dnes
« Odpověď #920 kdy: 02. 02. 2017, 20:35:07 »
Rád ti to vysvětlím. Už v roce 1936 Alan Turing dokázal, že nexistuje obecný algoritmus, který by řešil problém zastavení pro všechny vstupy všech programů na Turingově stroji.
Pravda.

Možná víš, že Java je Turing complete programovací jazyk. Prakticky to znamená, že nelze rozhodnout jestli je nějaký (netriviální) program (v Javě) správný a bude fungovat pro jakýkoliv vstup.
Nepravda. Ten zmíněný důkaz něco říká o neomezeném stroji, který nemáme a nikdy mít nebudeme. Pokud je stroj jakýmkoli způsobem omezený, např. počtem atomů ve vesmíru, neříká o něm zmíněný Turingův objev vůbec nic. Protože o takovém stroji prostě a jednoduše nehovoří, stejně jako nehovoří třeba o maximálním možném množství žab v jihočeských rybnících. Že je Java turingovsky kompletní s tím souvisí jenom víceméně okrajově.

Čili argumentuješ chybně: z toho, co víme o halting problému pro TM, neplyne vůbec nic pro konkrétní algoritmus v javě běžící na nějakém reálném (nebo realisticky myslitelném) počítači.

Tvoje tvzení: [...] je nesmysl, který tvrdíš, protože neznáš základy IT.
Byl bych v těch odsudcích raději skromnější...

Re:Dědičnost dnes
« Odpověď #921 kdy: 02. 02. 2017, 21:42:29 »
Tak já nevím, já když do Googlu zadám "haskell dijkstra algorithm", tak to mám hned na prvních třech pozicích. Ale možná mám jinej Google.
Implementace, které jsem našel, používají knihovny, které uvnitř nejsou FP.
Já mam vážně asi nějakej jinej Google. U mě je druhý odkaz tohle: https://github.com/ddrake/haskell-dijkstra
Tam jsou nějaké "unitř ne-FP knihovny"?

(Teda úplně nechápu, co to je za kritérium - když budu mít céčkový kód, který použije knihovnu s kouskem assembleru, tak? No ale nešť...)

lopata

Re:Dědičnost dnes
« Odpověď #922 kdy: 02. 02. 2017, 22:16:43 »
Nepravda. Ten zmíněný důkaz něco říká o neomezeném stroji, který nemáme a nikdy mít nebudeme. Pokud je stroj jakýmkoli způsobem omezený, např. počtem atomů ve vesmíru, neříká o něm zmíněný Turingův objev vůbec nic. Protože o takovém stroji prostě a jednoduše nehovoří, stejně jako nehovoří třeba o maximálním možném množství žab v jihočeských rybnících. Že je Java turingovsky kompletní s tím souvisí jenom víceméně okrajově.

Čili argumentuješ chybně: z toho, co víme o halting problému pro TM, neplyne vůbec nic pro konkrétní algoritmus v javě běžící na nějakém reálném (nebo realisticky myslitelném) počítači.

Na reálném počítači to teoreticky řešitelné je, prakticky ale ne:

The halting problem is theoretically decidable for linear bounded automata (LBAs) or deterministic machines with finite memory. A machine with finite memory has a finite number of states, and thus any deterministic program on it must eventually either halt or repeat a previous state:

...any finite-state machine, if left completely to itself, will fall eventually into a perfectly periodic repetitive pattern. The duration of this repeating pattern cannot exceed the number of internal states of the machine... (italics in original, Minsky 1967, p. 24)

Minsky warns us, however, that machines such as computers with e.g., a million small parts, each with two states, will have at least 21,000,000 possible states:

This is a 1 followed by about three hundred thousand zeroes ... Even if such a machine were to operate at the frequencies of cosmic rays, the aeons of galactic evolution would be as nothing compared to the time of a journey through such a cycle (Minsky 1967 p. 25)

Což samozřejmě nevylučuje, že někdy někdo přijde s lepším řešením, jak to v rozumném čase rozhodnout, zatím se to ale nikomu nepovedlo.

lopata

Re:Dědičnost dnes
« Odpověď #923 kdy: 02. 02. 2017, 22:24:29 »
Samozřejmě, jak by se to asi povedlo? Ten tvůj nick asi nebude úplně náhoda, jen s tím rozdílem, že ty na svoje první házení teprve čekáš.

Mně nevadí, že máš narcistickou poruchu osobnosti, nemůžeš za to. Jen bych ti doporučil vyhledat odborníka, pomůže ti.

Re:Dědičnost dnes
« Odpověď #924 kdy: 02. 02. 2017, 22:40:02 »
Další z textů, jejichž autor podlehl dojmu, že OOP stojí a leží na dědění. I s "povinným" prvoplánovým příkladem grafických objektů, na němž je "všechno krásně jasné", aspoň do doby, než by se v tom zvídavý čtenář začal šťourat a začal si klást otázky, jestli je opravdu dobrý nápad odvozovat děděním křivku od úsečky, jestli je to opravdu šikovné doplňovat takto vzniklou hierarchii o vlastnost barvy dalším děděním od již specializovaných tříd a k čemu je to celé dobré, když stejně na vykreslení každého z těch útvarů je objekt plátno, který to všechno umí tak nějak bokem i bez objektů.

Jestli to nebude "krásně jasné", protože to je "správný" příklad. OOP opravdu krásně funguje na diskrétní simulace a grafické objekty (nebo ještě lépe na GUI). Protože tam objekty existují samy za sebe a nesnaží se reprezentovat nějaké entity "reálného světa". Připadá mi to mnohem rozumnější, než použití OOP spojená s nekonečnými filozofickými debatami, jestli je reprezentace zvolená "dobře". Zvlášť když se často takto reprezentují pasivní data a OOP je uměle svazuje s operacemi (metodami). Pak se ještě prohlásí za špatnou vícenásobná dědičnost a je možné se začít hádat, jestli třída C má dědit z A nebo z B, když přirozené by bylo, aby dědila z obou. Celá nesmyslná debata se vyostří hádkou, jestli je lepší statické nebo dynamické typování, Java nebo Smalltalk, a co z toho je "původní", nebo "pravověrné" OOP. Uvědomme si, že programování zahrnuje řešení různorodých problémů, pro které se hodí různé nástroje a také různá hodnotící kritéria. Jeden malý příklad - nedávno jsem narazil na dva texty. Jeden vychvaloval efektivitu alternativního GC pro Javu, kterému stačí i cca 50 % výkonu CPU. Druhý byl návrh na předělání iterátorů a algoritmů ve standardní knihovně C++, čímž by se ve specifických situacích ušetřila v přeloženém kódu jedna instrukce podmíněného skoku.

javaman ()

Re:Dědičnost dnes
« Odpověď #925 kdy: 02. 02. 2017, 22:40:39 »
Samozřejmě, jak by se to asi povedlo? Ten tvůj nick asi nebude úplně náhoda, jen s tím rozdílem, že ty na svoje první házení teprve čekáš.

Mně nevadí, že máš narcistickou poruchu osobnosti, nemůžeš za to. Jen bych ti doporučil vyhledat odborníka, pomůže ti.

Proč bych měl mít poruchu? Jestli jsi studoval psychologii stejně kvalitně jako informatiku, tak pak to chápu. Ale sorry, jako vždy, zase špatně.

Re:Dědičnost dnes
« Odpověď #926 kdy: 02. 02. 2017, 22:45:34 »
Proto nema smysl nad takovou mnozinou algoritmu a vstupu uvazovat o stroji, ktery pristupuje k pameti v O(1) pro libovolne N - takovy stroj je jen teoreticky konstrukt.

Navíc i v teorii má takový stroj některé velmi nepěkné vlastnosti, např. na něm některé algoritmy vychází exponenciálně rychlejší, než bychom chtěli. Proto se v teorii složitosti různě omezuje, např. maximální velikostí slova nebo právě logaritmickou cenou přístupu do paměti.

Re:Dědičnost dnes
« Odpověď #927 kdy: 02. 02. 2017, 23:00:45 »
A pokud jde o ten odkazovaný článek, tak je to opravdu tak napůl esoterická záležitost, protože se snaží nás přesvědčit, že chceme-li posuzovat časovou složitost co nejobecněji, tak musíme předpokládat sice konečná, ale libovolně rozsáhlá data, na nichž ukazuje, že je obecně nelze obsloužit v konstantním čase z ryze fyzikálních důvodů (jen jsem čekal, kdy tam začne vytahovat holografický princip z teorie strun).
To je sice roztomilé, ale jen jako taková kratochvilná teoretická onanie. Protože v praxi při porovnávání algoritmů předpokládám nikoliv "sice konečné, avšak libovolně rozsáhlé" paměti, ale jeden a ten samý konkrétní stroj.

Ono se ukazuje, že navrhovat algoritmy, počítat jejich složitost a vzájemně porovnávat jejich efektivitu je paradoxně jednodušší, když předpokládáme sice konečná, ale libovolně velká data. Dělá se to tak desítky let a i když o tom možná nevíte, výsledky takových teoretických úvah denně používáte. A ten odkazovaný článek vlastně není nic překvapivého ani esoterického, je to spíš téměř triviální pozorování.

Takže pokud by mi podobný rozumbrada začal opravovat mé odhady řka, že přístup k paměti má přece složitost O(√n), pousmál bych se, poplácal bych ho po tvářičce a popřáv mu mnoho radosti při onaniích nad řešením otázek, kolik andělů se vejde na povrch horizontu událostí černé díry, bych ho kopnul do...

Hodně vtipné. Zvlášť když si uvědomíte, že při taktovacích frekvencích v řádu GHz a omezení rychlostí světla se omezení rychlosti přístupu k paměti (nebo obecně latence libovolné komunikace) začnou projevovat na vzdálenostech několika centimetrů.

Re:Dědičnost dnes
« Odpověď #928 kdy: 02. 02. 2017, 23:08:19 »
To jsou věci teda, člověk je jeden den totálně nasazenej v práci a pak koukne na Root a tady je takovej armageddon! Teda pánové... Obzvlášť ty motanice kolem O-notace jsou teda výživný... Do toho se už ani motat nebudu :)

Ale když člověk zrovna čeká na doběhnutí make při ladění obskurní chyby v poměrně low-level kódu v C++, tak je čtení názorů místních odborníků na teorii vyčíslitelnosti, složitosti a programovacích jazyků docela dobrý relax :)

Re:Dědičnost dnes
« Odpověď #929 kdy: 02. 02. 2017, 23:16:26 »
Na reálném počítači to teoreticky řešitelné je, prakticky ale ne:
Kvituji s velkým vděkem, že jsi pastnul text, který podstatu problému perfektně vystihuje (daleko líp než napůl pochopený Turing, jak je tady zhusta vidět). Jenom škoda, že neuvádíš, odkud ta citace je.

Nicméně pořád se se mnou míjíš, já jsem netvrdil, že to řešitelné je, tvrdil jsem, že uvedená argumentace Turingem je chybná, neplatná. Pokud se na tomhle shodneme všichni, dá se jít dál a Turinga nechat spát

Což samozřejmě nevylučuje, že někdy někdo přijde s lepším řešením, jak to v rozumném čase rozhodnout, zatím se to ale nikomu nepovedlo.
Co "to"? Pro libovolný javovský program rozhodnout, jestli se na nějakém reálném hw zastaví? To se nejspíš nikomu (obecně) nepovede, protože to (obecně) není zajímavý problém.

Pro nějaký omezený subset to nepochybně jde, vždyť tady už proběhl odkaz. Pro ne-subset to nikoho nezajímá, protože v reálném programu hraje roli taky síť, disk, atd. atd. Reálný svět IT je o dost pestřejší než číslo na pásce :)