Co si myslíte o OOP?

Kit

Re:Co si myslíte o OOP?
« Odpověď #765 kdy: 08. 01. 2019, 23:47:06 »
Co je to za jazyk, není to srozumitelné? Dokáže to zajistit to, že hodnota tohoto typu v jedné funkci může být zvýšena právě o jedna, v jiné právě o dva a v třetí může být změněna v závislosti na jiné hodnotě jiného typu a tim zkontrolovat funkčnost funkce? Co v případě, že funkce vrací jiný typ, než je parametr. Je kontrola správnosti funkce součástí vstupního nebo výstupního typu?
haskell, viz výše, je to typ funkce, která inkrementuje přirozené číslo, pokud by měla dělat něco jiného, měla by jiný typ
Co takhle použít nějaký objektovější jazyk, třeba Scalu?
nijak mě to neláká

Tak nám aspoň přestaň vnucovat Haskell, který s OOP nesouvisí.


A. F.

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

Proč? Mě to zajímá.

BaldSlattery

Re:Co si myslíte o OOP?
« Odpověď #767 kdy: 09. 01. 2019, 00:22:32 »
Co je to za jazyk, není to srozumitelné? Dokáže to zajistit to, že hodnota tohoto typu v jedné funkci může být zvýšena právě o jedna, v jiné právě o dva a v třetí může být změněna v závislosti na jiné hodnotě jiného typu a tim zkontrolovat funkčnost funkce? Co v případě, že funkce vrací jiný typ, než je parametr. Je kontrola správnosti funkce součástí vstupního nebo výstupního typu?
haskell, viz výše, je to typ funkce, která inkrementuje přirozené číslo, pokud by měla dělat něco jiného, měla by jiný typ
Co takhle použít nějaký objektovější jazyk, třeba Scalu?
nijak mě to neláká

Tak nám aspoň přestaň vnucovat Haskell, který s OOP nesouvisí.
Furt lepší než PHP.

operator

Re:Co si myslíte o OOP?
« Odpověď #768 kdy: 09. 01. 2019, 08:07:56 »
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?

Re:Co si myslíte o OOP?
« Odpověď #769 kdy: 09. 01. 2019, 08:45:44 »
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ů)...


BaldSlattery

Re:Co si myslíte o OOP?
« Odpověď #770 kdy: 09. 01. 2019, 10:14:06 »
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 + 1Každopádně problém místních je v tom, že si nečtou argumenty. Takže za mě končím.
Testy se nedělají na jeden řádek kódu, ale na funkční celek, třeba funkci. Jak typem zkontroluješ, že jsi omylem nenapsal 2 místo 1?
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?
Máš něco proti kruhovým definicím?

v

Re:Co si myslíte o OOP?
« Odpověď #771 kdy: 09. 01. 2019, 10:36:24 »
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í

Kit

Re:Co si myslíte o OOP?
« Odpověď #772 kdy: 09. 01. 2019, 10:51:56 »
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í.

SB

Re:Co si myslíte o OOP?
« Odpověď #773 kdy: 09. 01. 2019, 11:06:58 »
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.

JS

Re:Co si myslíte o OOP?
« Odpověď #774 kdy: 09. 01. 2019, 11:22:05 »
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.

Re:Co si myslíte o OOP?
« Odpověď #775 kdy: 09. 01. 2019, 11:25:59 »
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#?

Kiwi

Re:Co si myslíte o OOP?
« Odpověď #776 kdy: 09. 01. 2019, 11:32:48 »
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?

Kit

Re:Co si myslíte o OOP?
« Odpověď #777 kdy: 09. 01. 2019, 11:37:36 »
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.

JS

Re:Co si myslíte o OOP?
« Odpověď #778 kdy: 09. 01. 2019, 11:46:55 »
Pozor na to tykání!!!

Hodne stesti!  :)

Citace
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).

To samozrejme nejdou.

Citace
Jestliže i naopak prakticky nejdou nahradit výpočetní testy typovými

To samozrejme taky nejdou, kdybychom to umeli dokazat, nemuseli bychom to pocitat.

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.

SB

Re:Co si myslíte o OOP?
« Odpověď #779 kdy: 09. 01. 2019, 11:49:42 »
Nečetl jsem poctivě celou diskusi, ale předpokládám, že takové tvrzení tu nezaznělo. Diskuse běží na téma potřebnosti statických typů k ověření bezchybnosti programu, nikoliv nahrazení typů.
Aha, tak to je nesmysl, i testy se opiraji o typovy system.

Používají, ale neopírají (ve smyslu vyžadovat):

OOP (= bez primitiv):

Kód: [Vybrat]
GenČtverce = func(x) {
    return {
        _strana: x,
        strana: func() {return _strana},
        plocha: func() {return _strana^2}
    }

testČtverce = func() {
    assert (GenČtverce(5).plocha == 25)    # test identity
}


Ten svůj názor o nahraditelnosti typování jsem v předchozím příspěvku upravil.