Typový system versus unittesty

Kit

Re:Typový system versus unittesty
« Odpověď #270 kdy: 21. 06. 2018, 13:29:40 »
Diskuse se poněkud odklonila od původního tématu. Jako obvykle "type haters" nekriticky prosazují "čisté OOP". Přitom flexibilní (smalltalkovské) posílání zpráv a mocný typový systém s kontrolou v době překladu se ani v nejmenším nevylučují. Malý kvíz: který "čistě OO" jazyk má generika, varianci typů (to nemá ani C++ nebo Swift) a typovou kontrolu při překladu?

Který "čistě OO" jazyk potřebuje generika, varianci typů a typovou kontrolu při překladu?


SB

Re:Typový system versus unittesty
« Odpověď #271 kdy: 21. 06. 2018, 13:30:54 »
Unit testy jsem nikdy neřešil, vždy si vše testuji sám vlastním systémem, že si vytvořím testovací třídu, která testuje veškeré elementární objekty (třídy, funkce), kdy ověřuji, zda na zadaný vstup leze zadaný výstup. Systém téměř debuggovat nemusím a pokud systém vykazuje chybu, vím hned, kde konkrétně je.

Supr! A teď si zkuste tipnout, jak se tomu, co jste vytvořil, říká.

SB

Re:Typový system versus unittesty
« Odpověď #272 kdy: 21. 06. 2018, 13:32:53 »
asi nevím co je "kategorie hodnot"
se statickým typovým systémem můžete u některých funkcí dosáhnout vyčerpávajícího testování, u dynamického asi nikdy

To je jiný název pro typy.

To se tu právě řeší.

Gődel

Re:Typový system versus unittesty
« Odpověď #273 kdy: 21. 06. 2018, 13:44:24 »
Už nejméně dvakrát jsem ho uváděl: podmíněná konformance. Vlastně třikrát. Stačí letmo mrknout na Swift.

Tohle https://github.com/apple/swift-evolution/blob/master/proposals/0143-conditional-conformances.md je ono? Dopracováváme se zpět k myšlence, že dokonalý typový systém možná existuje, ale určitě je složitý jak prase?
Co je na tom složitého? Naopak když budu psát nějakou generickou kolekci, tak si ušetřím psaní kódu. DRY se tomu říká. Jestli pro někoho psaní méně kódu znamená vyšší složitost, tak asi nemá cenu dál diskutovat, jedem das seine.

v

Re:Typový system versus unittesty
« Odpověď #274 kdy: 21. 06. 2018, 13:45:02 »
Už nejméně dvakrát jsem ho uváděl: podmíněná konformance. Vlastně třikrát. Stačí letmo mrknout na Swift.

Tohle https://github.com/apple/swift-evolution/blob/master/proposals/0143-conditional-conformances.md je ono? Dopracováváme se zpět k myšlence, že dokonalý typový systém možná existuje, ale určitě je složitý jak prase? Tak to soráč květináč, ale to si radši nechám ten netypovaný systém s jednotkovými testy.
co je na tom tak složitého?


Gődel

Re:Typový system versus unittesty
« Odpověď #275 kdy: 21. 06. 2018, 13:46:55 »
Už nejméně dvakrát jsem ho uváděl: podmíněná konformance. Vlastně třikrát. Stačí letmo mrknout na Swift.
Tohle https://github.com/apple/swift-evolution/blob/master/proposals/0143-conditional-conformances.md je ono? Dopracováváme se zpět k myšlence, že dokonalý typový systém možná existuje, ale určitě je složitý jak prase? Tak to soráč květináč, ale to si radši nechám ten netypovaný systém s jednotkovými testy.
co je na tom tak složitého?
Asi je pro někoho obtížné to pochopit. Což nechápu proč, ale i mimo IT někteří preferují dělat věci složitě, i když to jde jednoduše a s menší námahou. Holt svět není dokonalý.

SB

Re:Typový system versus unittesty
« Odpověď #276 kdy: 21. 06. 2018, 13:49:01 »
Asi je pro někoho obtížné to pochopit. Což nechápu proč, ale i mimo IT někteří preferují dělat věci složitě, i když to jde jednoduše a s menší námahou. Holt svět není dokonalý.

Přesně! Přesně to samé si myslím o vás.

SB

Re:Typový system versus unittesty
« Odpověď #277 kdy: 21. 06. 2018, 13:49:50 »
Malý kvíz: který "čistě OO" jazyk má generika, varianci typů (to nemá ani C++ nebo Swift) a typovou kontrolu při překladu?

Nenapínejte nás.

v

Re:Typový system versus unittesty
« Odpověď #278 kdy: 21. 06. 2018, 13:51:09 »
Asi je pro někoho obtížné to pochopit. Což nechápu proč, ale i mimo IT někteří preferují dělat věci složitě, i když to jde jednoduše a s menší námahou. Holt svět není dokonalý.

Přesně! Přesně to samé si myslím o vás.
tohle je zajímavý moment

jdusizasvym

Re:Typový system versus unittesty
« Odpověď #279 kdy: 21. 06. 2018, 13:53:03 »
Unit testy jsem nikdy neřešil, vždy si vše testuji sám vlastním systémem, že si vytvořím testovací třídu, která testuje veškeré elementární objekty (třídy, funkce), kdy ověřuji, zda na zadaný vstup leze zadaný výstup. Systém téměř debuggovat nemusím a pokud systém vykazuje chybu, vím hned, kde konkrétně je.

Supr! A teď si zkuste tipnout, jak se tomu, co jste vytvořil, říká.

Komparační test elementárních funkcí. Nebo také elementární test.

Gődel

Re:Typový system versus unittesty
« Odpověď #280 kdy: 21. 06. 2018, 13:53:55 »
Asi je pro někoho obtížné to pochopit. Což nechápu proč, ale i mimo IT někteří preferují dělat věci složitě, i když to jde jednoduše a s menší námahou. Holt svět není dokonalý.
Přesně! Přesně to samé si myslím o vás.
tohle je zajímavý moment
Ano, konečně i v tomto vlákně došlo na ad hominem :)

v

Re:Typový system versus unittesty
« Odpověď #281 kdy: 21. 06. 2018, 14:01:52 »
Asi je pro někoho obtížné to pochopit. Což nechápu proč, ale i mimo IT někteří preferují dělat věci složitě, i když to jde jednoduše a s menší námahou. Holt svět není dokonalý.
Přesně! Přesně to samé si myslím o vás.
tohle je zajímavý moment
Ano, konečně i v tomto vlákně došlo na ad hominem :)
je dobře, že si svůj prohřešek uvědomujete, teď zpět k věcné debatě :)

Gődel

Re:Typový system versus unittesty
« Odpověď #282 kdy: 21. 06. 2018, 14:08:41 »
Asi je pro někoho obtížné to pochopit. Což nechápu proč, ale i mimo IT někteří preferují dělat věci složitě, i když to jde jednoduše a s menší námahou. Holt svět není dokonalý.
Přesně! Přesně to samé si myslím o vás.
tohle je zajímavý moment
Ano, konečně i v tomto vlákně došlo na ad hominem :)
teď zpět k věcné debatě :)
Ano, teď se čeká, až SB a Kit dodají důkazy svých tvrzení. Trochu to začíná připomínat debatu Čada vs. Virius, kde prvně jmenovaný přestal se snahou dokládat svá uhozená tvrzení.

Kit

Re:Typový system versus unittesty
« Odpověď #283 kdy: 21. 06. 2018, 14:13:23 »
Ano, teď se čeká, až SB a Kit dodají důkazy svých tvrzení. Trochu to začíná připomínat debatu Čada vs. Virius, kde prvně jmenovaný přestal se snahou dokládat svá uhozená tvrzení.

Které z mých tvrzení potřebuješ doložit?

andy

Re:Typový system versus unittesty
« Odpověď #284 kdy: 21. 06. 2018, 14:15:21 »
Nechci spekulovat, ale jednoduchá úvaha, že když netypový systém otypuju, tj. omezím jej, dosáhnu tak větší znovupoužitelnosti, neboli obecnosti, mi nedává smysl.
Pokud otypuju netypový jazyk (třeba ve stylu TypeScript), tak ne. Zajímavé to začne být, jakmile je schopen překladač na základě těch typů něco rozhodovat. Zářným případem je právě polymorfismus na základě návratové hodnoty. To prostě nejde s "vtable"-like jazyky rozumně udělat, přitom pokud má překladač k dispozici informace o typech, tak je pro něj celkem jednoduché vybrat tu "správnou" funkci (nebo i konstantu).

Ona teda i ta typová kontrola vede k vyšší jednoduchosti kódu, protože prostě nemusím spoustu věcí kontrolovat - a vím, že je nemusím kontrolovat a nic se nestane (překladač to garantuje). Ono stačí se podívat na to jak fungují Promisy v JS a zkusit si představit, že by podobný protokol měl být naprosto běžný pro spoustu jiných situací.