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 ... 100 101 [102] 103 104 ... 618
1516
Vývoj / Re:Gödel a staticky typované jazyky
« kdy: 08. 01. 2019, 00:19:43 »
A kromě toho nemožné, typový systém může být zároveň korektní i nekorektní. Proto jsem navrhoval vzít STλC, to lidi poberou a jde na tom vše kolem typů krásně vysvětlit, včetně metalogických důkazů (ne)korektnosti/úplnosti. A jde v tom přímo programovat za účelem názornosti.
Každopádně Blbec se vypařil, takže nám svoje tvrzení nedoloží na ničem :)

1517
Vývoj / Re:Co si myslíte o OOP?
« kdy: 07. 01. 2019, 21:53:18 »
Ono by nejen této diskusi prospělo, kdyby každý diskutující rozlišoval věcné argumenty a subjektivní názory...
Ano, velmi. Ale je to obtížné. Pro někoho přílíš obtížné.

1518
Vývoj / Re:Co si myslíte o OOP?
« kdy: 07. 01. 2019, 21:44:29 »
Já mám takovou krásnou ukázku flexibility dynamického jazyka.
Spíš je to krásná ukázka toho, že "krása" je veskrze subjektivní pojem.

1519
Vývoj / Re:Co si myslíte o OOP?
« kdy: 07. 01. 2019, 10:16:55 »
Příklad: Mám batoh s danou nosností a objemem a (netypový) seznam blíže neurčených předmětů (= nezajímá mě, co to je), jejichž jediným společným prvkem (a to ještě ne nutně) je, že odpovídají na zprávu "hmotnost" a "velikost", a chci zjistit, zda se mi do toho batohu vlezou. Jak se to řeší typovaným seznamem???
Proč je tam to "ne nutně"? Pokud chci zjistit, jestli se mi tam vlezou, pak musí na ty zprávu odpovídat nutně, jinak nemůžu rozhodnout, jestli se mi tam vlezou.

Pak taky není pravda to "netypový" a "nezajímá mě, co to je". "Netypový" by znamenalo, že o těch objektech nemám vůbec žádnou informaci. Já ale nějakou mám: odpovídají na zprávu "hmotnost" a "velikost". To je typ.  (Odbočka: ) Přesvědčení, že to typ není, vychází imho z internalizace zparchantělého OOP založeného jenom na dědičnosti.

Jak by se to vyřešilo? Snadno. Už víme, že ty objekty mají nějaký typ. Stačí ho pojmenovat (např. HasWeightAndDimension) a pak už snadno můžu říct, že pracuju s polem HasWeightAndDimension[].

Jak to přesně technicky udělat, na to asi bude víc způsobů. Jeden konkrétní je třeba ten, který ma Go: struktury implementují rozhraní implicitně - tj. jakmile jsou pro strukturu definované všechny potřebné metody, je interface implementovaný, není potřeba to explicitně prohlašovat.

1520
Vývoj / Re:Co si myslíte o OOP?
« kdy: 07. 01. 2019, 09:49:08 »
Ne že by to v diskusi bylo podstatné, ale ne vše je zakuklený dict, viz __slots__ (ono pro malé třídy je dict dost overkill).
To je ale jenom optimalizace, která pro to, o čem se bavíme, nejenom že není podstatná, ale nemá to vůbec žádný vliv.

1521
Vývoj / Re:Co si myslíte o OOP?
« kdy: 07. 01. 2019, 09:36:36 »
(dle pravidla Liskovové).
A ještě lepší by bylo tam podtypový polymorfismus vůbec nemít, ušetřili bysme si spoustu bolehlavů ;)

1522
Vývoj / Re:Gödel a staticky typované jazyky
« kdy: 07. 01. 2019, 08:28:26 »
treba typove systemy Javy a stare Scaly jsou nekorektni
Pořád ještě jsme si neřekli, co by to ta korektnost (a (ne)dokazatelnost) u typového systému měla být, takže tvrdit, že nějaký typový systém je nekorektní, je předčasné.

1523
Vývoj / Re:Co si myslíte o OOP?
« kdy: 07. 01. 2019, 03:27:37 »
Pokoušel jsem se na ladit ne ten váš problém, co řešíte. Evidentně se mi to nepovedlo :-)
Ne, nepovedlo :) Pointa je v tom, že v obou systémech se program větví na základě typu a v obou k tomu dojde až za běhu.

To, co's udělal, je, že jsi do té jedné větve dal chybu, kterou dynamický jazyk neodhalí. Ale tím jsi nic nového neřekl - je totiž úplně jedno, jestli takovou chybu dáš hned na začátek té větve (hned ze matchnutí Just x) nebo až někam za deset jiných volání jiných funkcí :) Prostě pořád je to ta samá chyba.

1524
Vývoj / Re:Gödel a staticky typované jazyky
« kdy: 07. 01. 2019, 03:08:45 »
Ještě teda by se asi slušelo dodat:

Na kategorické "Ne" striktně vztao nemám nárok, v tom se shodneme. Zaznělo to ale v kontextu neformální debaty o vágním tématu a indicie jsou (podle mě) natolik silné, že jsem v daném kontextu měl oprávnění "pravděpodobně ne" zkrátit do "ne". "Pravděpodobně ne" by podle mě bylo v daném kontextu příliš slabé a mohlo by ve čtenáři vyvolat dojem mé větší nejistoty než jaká skutečně je, což by debatě nepomohlo.

:)

1525
Vývoj / Re:Gödel a staticky typované jazyky
« kdy: 07. 01. 2019, 02:57:14 »
Než se pustíte dál, taková malá odbočka.
Jde o to tvé jednoznačné Ne v odpovědi. Výrok Godel se posleze zbláznil v odpovědi nepopíráš, takže se asi shodneme, že je to výrok pravdivý (pomiňme teď definici zbláznění). Vše se teda točí kolem slovíčka z toho. Řekl bych, že nemáme dost informací na to, aby se dalo jednoznačně říct, že se jedná o nepravdivý výrok. Za prvé není úplně jasné, co přesně znamená to "z toho" a za druhé asi úplně nevíme, z čeho konkrétně se Godel zbláznil a zda na to "to" nemohlo mít nějaký vliv.
Krása! Konečně někdo, kdo mluví jazykem mého kmene! Jdu do toho! :)

Souhlasím, že "asi úplně nevíme, z čeho se G zbláznil". Respektive přesněji: já to nevím a předpokládám, že ty taky ne, protože bys tím zřejmě argumentoval.

Jestliže to jistě nevíme, můžeme se to buď pokusit najít v literatuře (to se mi nechce) nebo zkusit najít nějaká vodítka, která by hypotéze "zbláznil se ze svých vět o neúplnosti" dávala nějakou pravděpodobnost. To udělám.

1. po publikování vět o neúplnosti G ještě relativně dlouho pracoval a to i na veřejně exponovaných místech (přednášky apod.) a složitých problémech

2. předpokládám, že kdyby už v té době nemocí trpěl, tak by se to vědělo (i já bych to věděl). Z toho vyvozuju (s nějakou pravděpodobností), že nemocí začal trpět až později, na sklonku života.

3. Pokud vím, G trpěl především (sorry za laičtinu) "stihomamem", konkrétně strachem z toho, že ho někdo chce otrávit. Prověřme pravděpodobnost, že by zrovna objevy ohledně neúplnosti toto způsobily.

Na samém začátku druhé sv. války G emigroval z Německa do USA. V USA se spřátelil s Einsteinem, pracoval v Institute for Advanced Study a začal se věnovat i fyzice. V té době v USA probíhal výzkum jaderného štěpení, o čemž nacisti věděli.

Z toho mi vychází jako daleko pravděpodobnější, že G měl strach z toho, že bude zavražděn nacistickými agenty, možná v souvislosti s výzkumem štěpení, a tento strach se vyvinul v psychické onemocnění.

Možnost, že by mu srovnatelnou úzkost způsobovaly objevy ohledně neúplnosti, mi přijde málo pravděpodobná. Z toho důvodu se kloním spíš k tomu, že teze "zbláznil se z toho" je nepravdivá.

Zároveň přiznávám, že moje znalosti psychiatrie jsou prakticky nulové, takže předpoklad "patologický stihomam se může vyvinout z relativně opodstatněné obavy" může být chybný. Možná že existence opodstatněných obav nemá na pravděpodobnost vývinu "onemocnění stihomamem" žádný vliv. Potom by argumentace v bodu 3 byla chybná.

1526
Vývoj / Re:Co si myslíte o OOP?
« kdy: 07. 01. 2019, 02:22:09 »
Nepustí:
No dobře, tak ten string bude trochu víc zakuklenej no. Třeba do atributu.

1527
Vývoj / Re:Co si myslíte o OOP?
« kdy: 07. 01. 2019, 02:19:38 »
Nevidím důvod, proč by v dynamicky typovaném jazyce měla aplikace padat v produkci. Ovšem pokud někdo píše testy jen podle metrik...
Mohl úplně jednoduše na otestování nějakého edge casu zapomenout. Probublal mu None někam, kde správně neměl být povolený, uložilo se to na disk, nikdo na ty data deset let nešáhl a nikdo už dneska neví, že tam kdysi None být mohl.

Jistě, můžeš si vymýšlet pohádky o tom, že to byla změna kontraktu, která měla být zaznamenána do dokumentace a bla bla bla. Ať si ten důvod pojmenuješ jak chceš, tak výsledek je stejný: spadlo to v produkci.

1528
Vývoj / Re:Co si myslíte o OOP?
« kdy: 07. 01. 2019, 02:11:31 »
V tom řádku s Just je právě schválně chyba. Kde statický jazyk si "všimne" při překladu, že x není string. To považuju za dost "světodějný".
Ajo, promiň, toho jsem si nevšiml. Ale co tím demonstruješ? Jenom to, že statické jazyky umí některé chyby odhalit už v době překladu. To ale přece všichni víme, ne?!

A proč to demonstrovat tak krkolomně? Stačilo úplně:

Kód: [Vybrat]
def some_func_anywhere():
  return 1 + "x"
- Python ti tohle ochotně pustí do produkce i když by to krásně mohl odhalit. No, je to tak, dělá míň práce, než by mohl :)

1529
Vývoj / Re:Gödel a staticky typované jazyky
« kdy: 07. 01. 2019, 01:55:54 »
zabývat tím, jestli existuje takový algoritmus/systém, že pro každý program, který pro všechny validní vstupy skončí, existuje důkaz.
To bohužel neplatí, důkaz lze zaručeně najít pouze pro primitivně rekurzivní funkce.
Tak pro primitivně rekurzivní funkce to platí vždy, takže vlastně ani důkaz (otypování) nemusíme ověřovat. Ale proč to neplatí pro obecné programy?
Mám trochu pocit, že na to jdete moc rychle a zbytečně zužujete počet lidí, kteří vám budou rozumět. Nešlo by začít tím, že to trochu zpřehledníte např. vymezením pojmů? Např.: Čemu říkám "důkaz"? Jakými prostředky je veden? V rámci jakého systému? Atd. Tohle vaše povídání je fakt srozumitelné asi jenom tomu, kdo víceméně už zná výsledek :)

1530
Vývoj / Re:Co si myslíte o OOP?
« kdy: 07. 01. 2019, 01:40:27 »
Asi se už dost opakujeme, ale tak co už :) Ve všem souhlas, jenom tomuhle nerozumím:

Jenže dynamický jazyk tu chybu pustí.

V dynamickém jazyce bude výsledkem parsePerson buď hodnota typu Person nebo výjimka, ve statickém buď Just Person nebo Nothing. Nevidím tam žádný zásadní "světodějný" rozdíl. Jediný rozdíl, který tam vidím (a souhlasím, že je docela podstatný), je, že statický jazyk tě donutí obě varianty explicitně ošetřit, zatímco dynamický tě klidně nechá výjimku nechat probublat až do main a nechat program spadnout v produkci :)

Stran: 1 ... 100 101 [102] 103 104 ... 618