Co si myslíte o OOP?

BaldSlattery

Re:Co si myslíte o OOP?
« Odpověď #780 kdy: 09. 01. 2019, 11:51:02 »
třeba
Kód: [Vybrat]
inc :: Nat n -> Nat (S n)
To vypadá jako kruhová definice. Skutečně to odhalí chybu, když místo čísla 5 tam dám omylem číslo 7?
To skutecne neodhali, ale to neodhali ani zadny test na inc.. Testem na funkce tezko otestujes, ze jsi pri volani te funkce zadal spravne parametry.

Měl jsem na mysli tohle:
Kód: [Vybrat]
inc5 :: Nat n -> Nat (S n)
inc5 (x: Int) = x + 7

Jak to odhalí chybu? Chtěl jsem zvýšit o 5, ale místo toho se mi hodnota zvýší o 7.
(S n) není o 5


JS

Re:Co si myslíte o OOP?
« Odpověď #781 kdy: 09. 01. 2019, 11:53:21 »
Měl jsem na mysli tohle:
Kód: [Vybrat]
inc5 :: Nat n -> Nat (S n)
inc5 (x: Int) = x + 7

Jak to odhalí chybu? Chtěl jsem zvýšit o 5, ale místo toho se mi hodnota zvýší o 7.

Tohle odhali chybu hned - nezkompiluje se to. Protoze v typu stale rikas, ze chces zvysovat o 1. Neco jineho by bylo neco jako:

Kód: [Vybrat]
inc5 :: Nat n -> Nat (S (S (S (S (S n)))))
inc5 (x: Int) = x + 7

Uz jsme to tady pred casem rozebirali. Jisty si muzes byt jen tak, ze to napises dvakrat a porovnas. Testy a dostatecne silny typovy system jsou jen dve ruzne moznosti, jak se priblizit tomu "napsat to dvakrat". Oba na to jdou z jine strany, takze v tom priblizeni maji vyhody a nevyhody. Ale ciste teoreticky (v tom limitnim pripade) lze jedno zcela nahradit druhym, je to vec vkusu.

SB

Re:Co si myslíte o OOP?
« Odpověď #782 kdy: 09. 01. 2019, 11:54:39 »

Re:Co si myslíte o OOP?
« Odpověď #783 kdy: 09. 01. 2019, 11:55:40 »
Tak nám aspoň přestaň vnucovat Haskell, který s OOP nesouvisí.
jestli je dynamické typování tak zásadní pro OOP jak tu mnozí tvrdí, pak je ukázka možností statického typování zcela relevantní

Statické typování je pro OOP irelevantní.

Co se dovzdelat a zkusit se doucit trebas tu Scalu/F# nebo alespon Javu/C#?
A jak souvisí Java/C# s OOP?

Aaaa, pan je fundamentalista ;)

SB

Re:Co si myslíte o OOP?
« Odpověď #784 kdy: 09. 01. 2019, 11:55:53 »
Tak nám aspoň přestaň vnucovat Haskell, který s OOP nesouvisí.

Proč? Mě to zajímá.

Přečtěte si téma vlákna.


SB

Re:Co si myslíte o OOP?
« Odpověď #785 kdy: 09. 01. 2019, 12:03:03 »
Citace
pak už zůstává jen otázka, zda a kdy se vyplatí použít typový systém a kdy netypový. Osobně upřednostňuju ten volnější, netypový, ale to je na každém.

Samozrejme odpoved je ten typovy, ten umoznuje oboji. Netypovy jen to druhe.

Supr. Teď ještě napište, co je "oboji" a "druhe", aby to začalo dávat smysl.

Kit

Re:Co si myslíte o OOP?
« Odpověď #786 kdy: 09. 01. 2019, 12:13:43 »
třeba
Kód: [Vybrat]
inc :: Nat n -> Nat (S n)
To vypadá jako kruhová definice. Skutečně to odhalí chybu, když místo čísla 5 tam dám omylem číslo 7?
To skutecne neodhali, ale to neodhali ani zadny test na inc.. Testem na funkce tezko otestujes, ze jsi pri volani te funkce zadal spravne parametry.

Měl jsem na mysli tohle:
Kód: [Vybrat]
inc5 :: Nat n -> Nat (S n)
inc5 (x: Int) = x + 7

Jak to odhalí chybu? Chtěl jsem zvýšit o 5, ale místo toho se mi hodnota zvýší o 7.
(S n) není o 5

Funkce inc5 má zvýšit hodnotu o 5. Tak tam dej něco jiného než (S n), aby to fungovalo.

operator

Re:Co si myslíte o OOP?
« Odpověď #787 kdy: 09. 01. 2019, 12:23:10 »
Tak jsem chtel overit tu haskell ukazku a zjistil, ze haskell je tak okrajovy jazyk, ze neni k dispozici v termuxu. Hledal jsem balicek s nazvem haskell nebo ghc. Seznam balicku: https://pastebin.com/kdfgUFRt To jen upevnuje me presvedceni, ze nema smysl ztracet cas okrajovymi nepodporovanymi jazyky.  Je schopen to nekdo predvest v jinem jazyku ktery je mezi balicky? (je tam kde co, rust, vala, erlang, java, ocaml, golang, clang, racket, ...)  Nebo se jedna ciste o schopnost haskellu, ktera je tu mylne prisuzovana jazykum se statickymi typy?
To je tak pitomá metrika (přítomnost v termuxu) a tak pitomý argument (když je to v Haskellu a opírá se to o statické typy, tak to nutně je demonstrace výhod statických typů)...
To neni metrika, proste si to nemam kde zkusit a z toho plyne muj osobni nezajem.

Neni to demonstrace vyhod statickych typu, pokud je haskell jediny jazyk, ktery to umi. V takovem pripade je to demonstrace vyhoda haskellu. Na tom zalozene tvrzeni o statickych typech je argumentacni klam, predcasna generalizace.

Srovnej. Implicitni pretypovani v jazyce C se take opira o staticke typy a prameni z toho nestabilita a chybovost programu napsanych v C. Je tedy nestabilitu a chybovost programu mozno oznacit za nevyhodu statickych typu? Nebo je to vlastnost jazyka, nikoliv statickych typu? 

Pokud se chceme bavit o vyhodach statickych typu, musite najit vlastnosti, ktere jsou spolecne jazykum se statickymi vlastnostmi a chybi jazykum s dynamickymi typy. Obavam se, ze krom vykonove optimalizace zadnou vyhodu statickych typu nikdo nenalezne. Ony i dynamicke jazyky mohou mit silny typovy system, viz treba Julia. Rada vlastnosti tady pripisovana statickym typum pak neni cizi ani nekterym dynamickym jazykum. Viz například zde oblíbené tvrzení o refaktoringu, přičemž jehož původ je v dynamickém smalltalku.

operator

Re:Co si myslíte o OOP?
« Odpověď #788 kdy: 09. 01. 2019, 12:25:18 »
Taky si to myslím. Typový systém nahradit testy jde.
Nahraď mi prosím typy za testy u tohoto příkladu:

Kód: [Vybrat]
inc (x: Int) = x + 1...

Pozor na to tykání!!!

V Pytónu:

Kód: [Vybrat]
def inc(x):
    if not isinstance(x, Int):
        raise Exception()
    ...

Když nad tím přemýšlím, tak musím uznat, že TYPOVÉ testy prováděné PŘI PŘEKLADU nahradit nejdou (běhové pochopitelně ano, vizte výše). Jestliže i naopak prakticky nejdou nahradit výpočetní testy typovými, pak už zůstává jen otázka, zda a kdy se vyplatí použít typový systém a kdy netypový. Osobně upřednostňuju ten volnější, netypový, ale to je na každém.
Nahradit jdou a to typingem.

Re:Co si myslíte o OOP?
« Odpověď #789 kdy: 09. 01. 2019, 12:30:27 »
Tak jsem chtel overit tu haskell ukazku a zjistil, ze haskell je tak okrajovy jazyk, ze neni k dispozici v termuxu. Hledal jsem balicek s nazvem haskell nebo ghc. Seznam balicku: https://pastebin.com/kdfgUFRt To jen upevnuje me presvedceni, ze nema smysl ztracet cas okrajovymi nepodporovanymi jazyky.  Je schopen to nekdo predvest v jinem jazyku ktery je mezi balicky? (je tam kde co, rust, vala, erlang, java, ocaml, golang, clang, racket, ...)  Nebo se jedna ciste o schopnost haskellu, ktera je tu mylne prisuzovana jazykum se statickymi typy?
To je tak pitomá metrika (přítomnost v termuxu) a tak pitomý argument (když je to v Haskellu a opírá se to o statické typy, tak to nutně je demonstrace výhod statických typů)...
To neni metrika, proste si to nemam kde zkusit a z toho plyne muj osobni nezajem.

Ty nemas pocitac? :-O
Kazdopadne jsou i REPLy online. A cele IDE online byvalo taky.

Re:Co si myslíte o OOP?
« Odpověď #790 kdy: 09. 01. 2019, 12:32:01 »
Tak jsem chtel overit tu haskell ukazku a zjistil, ze haskell je tak okrajovy jazyk, ze neni k dispozici v termuxu. Hledal jsem balicek s nazvem haskell nebo ghc. Seznam balicku: https://pastebin.com/kdfgUFRt To jen upevnuje me presvedceni, ze nema smysl ztracet cas okrajovymi nepodporovanymi jazyky.  Je schopen to nekdo predvest v jinem jazyku ktery je mezi balicky? (je tam kde co, rust, vala, erlang, java, ocaml, golang, clang, racket, ...)  Nebo se jedna ciste o schopnost haskellu, ktera je tu mylne prisuzovana jazykum se statickymi typy?
To je tak pitomá metrika (přítomnost v termuxu) a tak pitomý argument (když je to v Haskellu a opírá se to o statické typy, tak to nutně je demonstrace výhod statických typů)...
Neni to demonstrace vyhod statickych typu, pokud je haskell jediny jazyk, ktery to umi. V takovem pripade je to demonstrace vyhoda haskellu. Na tom zalozene tvrzeni o statickych typech je argumentacni klam, predcasna generalizace.

Ale houby, umi to s drobnymi rozdily kopec jazyku (o Scale a F# tu uz rec sla), ten Haskell se proste bere jako "zlaty standard", co ho navic pomalu kazdy zna.

Re:Co si myslíte o OOP?
« Odpověď #791 kdy: 09. 01. 2019, 12:33:30 »
Tak jsem chtel overit tu haskell ukazku a zjistil, ze haskell je tak okrajovy jazyk, ze neni k dispozici v termuxu. Hledal jsem balicek s nazvem haskell nebo ghc. Seznam balicku: https://pastebin.com/kdfgUFRt To jen upevnuje me presvedceni, ze nema smysl ztracet cas okrajovymi nepodporovanymi jazyky.  Je schopen to nekdo predvest v jinem jazyku ktery je mezi balicky? (je tam kde co, rust, vala, erlang, java, ocaml, golang, clang, racket, ...)  Nebo se jedna ciste o schopnost haskellu, ktera je tu mylne prisuzovana jazykum se statickymi typy?
To je tak pitomá metrika (přítomnost v termuxu) a tak pitomý argument (když je to v Haskellu a opírá se to o statické typy, tak to nutně je demonstrace výhod statických typů)...

Srovnej. Implicitni pretypovani v jazyce C se take opira o staticke typy a prameni z toho nestabilita a chybovost programu napsanych v C. Je tedy nestabilitu a chybovost programu mozno oznacit za nevyhodu statickych typu? Nebo je to vlastnost jazyka, nikoliv statickych typu? 


Timhle muzes ukazat na Hindenburg a odstrelit tim myslenku na letani...

Dulezite je, ze reseni existuje a neco prinasi. A bez statickeho typovani ti fungovat nebude.

operator

Re:Co si myslíte o OOP?
« Odpověď #792 kdy: 09. 01. 2019, 13:32:12 »
Tak jsem chtel overit tu haskell ukazku a zjistil, ze haskell je tak okrajovy jazyk, ze neni k dispozici v termuxu. Hledal jsem balicek s nazvem haskell nebo ghc. Seznam balicku: https://pastebin.com/kdfgUFRt To jen upevnuje me presvedceni, ze nema smysl ztracet cas okrajovymi nepodporovanymi jazyky.  Je schopen to nekdo predvest v jinem jazyku ktery je mezi balicky? (je tam kde co, rust, vala, erlang, java, ocaml, golang, clang, racket, ...)  Nebo se jedna ciste o schopnost haskellu, ktera je tu mylne prisuzovana jazykum se statickymi typy?
To je tak pitomá metrika (přítomnost v termuxu) a tak pitomý argument (když je to v Haskellu a opírá se to o statické typy, tak to nutně je demonstrace výhod statických typů)...
To neni metrika, proste si to nemam kde zkusit a z toho plyne muj osobni nezajem.
Ty nemas pocitac? :-O
Kazdopadne jsou i REPLy online. A cele IDE online byvalo taky.
Zadny kam bych mohl instalovat cizi software. Online mohu zkusit.

operator

Re:Co si myslíte o OOP?
« Odpověď #793 kdy: 09. 01. 2019, 13:33:53 »
Tak jsem chtel overit tu haskell ukazku a zjistil, ze haskell je tak okrajovy jazyk, ze neni k dispozici v termuxu. Hledal jsem balicek s nazvem haskell nebo ghc. Seznam balicku: https://pastebin.com/kdfgUFRt To jen upevnuje me presvedceni, ze nema smysl ztracet cas okrajovymi nepodporovanymi jazyky.  Je schopen to nekdo predvest v jinem jazyku ktery je mezi balicky? (je tam kde co, rust, vala, erlang, java, ocaml, golang, clang, racket, ...)  Nebo se jedna ciste o schopnost haskellu, ktera je tu mylne prisuzovana jazykum se statickymi typy?
To je tak pitomá metrika (přítomnost v termuxu) a tak pitomý argument (když je to v Haskellu a opírá se to o statické typy, tak to nutně je demonstrace výhod statických typů)...
Neni to demonstrace vyhod statickych typu, pokud je haskell jediny jazyk, ktery to umi. V takovem pripade je to demonstrace vyhoda haskellu. Na tom zalozene tvrzeni o statickych typech je argumentacni klam, predcasna generalizace.
Ale houby, umi to s drobnymi rozdily kopec jazyku (o Scale a F# tu uz rec sla), ten Haskell se proste bere jako "zlaty standard", co ho navic pomalu kazdy zna.
Zatim to spis vypada na vlastnost funkcionalnich jazyku, porad cekam na nejaky normalni. :-)

Kit

Re:Co si myslíte o OOP?
« Odpověď #794 kdy: 09. 01. 2019, 13:35:48 »
Srovnej. Implicitni pretypovani v jazyce C se take opira o staticke typy a prameni z toho nestabilita a chybovost programu napsanych v C. Je tedy nestabilitu a chybovost programu mozno oznacit za nevyhodu statickych typu? Nebo je to vlastnost jazyka, nikoliv statickych typu? 
Timhle muzes ukazat na Hindenburg a odstrelit tim myslenku na letani...

Dulezite je, ze reseni existuje a neco prinasi. A bez statickeho typovani ti fungovat nebude.

Funguje to i bez statického typování, které může nahradit některé typy testů a přinést i něco navíc. Proto se dnes používají oba přístupy, které jsou vzájemně do jisté míry zastupitelné.

Kritika byla mířena proti jazyku C, kterému ani statické typování nepomáhá ke stabilitě aplikaci.