Co si myslíte o OOP?

anonym

Re:Co si myslíte o OOP?
« Odpověď #525 kdy: 06. 01. 2019, 01:05:18 »
Vtipne jak se tu polemizuje nad statickou typovou kontrolou, zatimco v Jave se momentalne nadava nad novym populistickym slunickarskym klicovym slovem "var", protoze to zpusobi, ze nejde videt navratovy typ primo v kodu, coz zhorsuje prehlednost. Fakt inteligentni. Podle me by ten "var" meli synci vyhodit.

Co se vas tyce hosi, tak vy proste delate webdevelopment. Se s tim proste smirte, webolepici. Opravdovi softwarovi inzenyri pouzivaji staticky typovany jazyk, protoze vyvijeji poradne komplexni backendove veci.

To je jak kdyby jeden frajer peclive frezoval ocelove obrobky do komplexniho pristroje, zatimco opodal by se mu smal nejaky plantala z kvetinarstvi, ze naco to frezuje do oceli a dela to tak presne a namahave, kdyz na to prece muze pouzit stejne dobre nuzky a lepenku, jako to dela on.


Kit

Re:Co si myslíte o OOP?
« Odpověď #526 kdy: 06. 01. 2019, 01:09:57 »
To je jak kdyby jeden frajer peclive frezoval ocelove obrobky do komplexniho pristroje, zatimco opodal by se mu smal nejaky plantala z kvetinarstvi, ze naco to frezuje do oceli a dela to tak presne a namahave, kdyz na to prece muze pouzit stejne dobre nuzky a lepenku, jako to dela on.

Proč bych měl lisovat podložky pod matičky z plechu, když je mohu soustružit z kulatiny a prověřovat kalibrem, že?

Re:Co si myslíte o OOP?
« Odpověď #527 kdy: 06. 01. 2019, 01:12:23 »
To je jak kdyby jeden frajer peclive frezoval ocelove obrobky do komplexniho pristroje, zatimco opodal by se mu smal nejaky plantala z kvetinarstvi, ze naco to frezuje do oceli a dela to tak presne a namahave, kdyz na to prece muze pouzit stejne dobre nuzky a lepenku, jako to dela on.

Proč bych měl lisovat podložky pod matičky z plechu, když je mohu soustružit z kulatiny a prověřovat kalibrem, že?
Panové, fakt vám přijde, že tahle pseudotrefná, emotivní, na všech deset noh kulhající přirovnání, jsou k něčemu dobrá?

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Co si myslíte o OOP?
« Odpověď #528 kdy: 06. 01. 2019, 01:48:24 »
Nehádám se s tebou, přijde mi taky lepší mít explicitně dvě větve, když tam věcně nutně jsou, ale nevidím mězi těmi dvěma možnostmi, jak k tomu přistupovat, tak světodějný rozdíl jako ty ;)

:-)

Pro mě je to úplně-extrémně-maximálně-úplně-ultimátně-základně-úplně nutný.

Primus: Dynamický jazyk mě obvykle nepřinutí ošéfovat tu druhou větev (čest výjimkám). Zapomenu na to. Vždycky. Každej. I Kit. Zatímco v Staticky typovaném jazyce, když tu větev zamatlám, a neošetřím to (ne, že by to nešlo), tak je to moje vědomé, opakovaně varované, rozhodnutí.
Secundus: Dynamický jazyk tu větev projde na produkci, což je naprosto pozdě.

BaldSlattery

Re:Co si myslíte o OOP?
« Odpověď #529 kdy: 06. 01. 2019, 01:49:22 »
Dá se pro libovolný program napsat testovací sada, která nalezne všechny chyby, jež by nalezla statická typová kontrola, a přitom nebude zahrnovat (jakkoliv zakamuflovanou) statickou typovou kontrolu?
Ne
Já si to myslím taky, ale na akademickou otázku by mě zajímala akademická odpověď
Tak třeba typová kontrola umí zajistit, že funkce vrací sudé číslo. Testem to nejde, nejsou-li ty výsledky shora omezené.


BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Co si myslíte o OOP?
« Odpověď #530 kdy: 06. 01. 2019, 01:54:15 »
Dá se pro libovolný program napsat testovací sada, která nalezne všechny chyby, jež by nalezla statická typová kontrola, a přitom nebude zahrnovat (jakkoliv zakamuflovanou) statickou typovou kontrolu?
Ne
Já si to myslím taky, ale na akademickou otázku by mě zajímala akademická odpověď
Tak třeba typová kontrola umí zajistit, že funkce vrací sudé číslo. Testem to nejde, nejsou-li ty výsledky shora omezené.
Pouštíš se na tenkej led :-) Bohatě stačí, že typová kontrola umí zajistit, že funkce vrátí celé číslo. Už v takovém případě test nebude stačit.

BaldSlattery

Re:Co si myslíte o OOP?
« Odpověď #531 kdy: 06. 01. 2019, 02:07:41 »
Statické typování má tu výhodu, že taková situace jednoduše neexistuje. Pokud popletu vstupy, tak to na mě zařve kompilátor. Hned! Nemusím testovat, jestli ta funkce vyhodila nějakou chybu, protože jsem se překlpl. Spustu věcí nemusím dělat. Kód je kratší a přímočařejší.
Kód: [Vybrat]
float sin(float phi) {
    return 0.0;
}

Navíc z ní vůbec není patrné, zda je parametr ve stupních, radiánech nebo v jiných jednotkách. Takže i ten typ "float" je de facto špatně, protože neobsahuje sémantiku. Když tam hodíš údaj v metrech, tak to typová kontrola nepozná.
To je tím, že to je hloupě napsané. V takovém systému jde mít typ obsahující (a kontrolující) fyzikální rozměr i jednotku a činitele, takže prostě řeknu, že rozměr vstupu je 1 a výpočet upravím podle vlastností vstupu. Pak tam nepůjdou hodit metry, protože clashne rozměr. Fyzici tohle mají ve výpočtech ošetřené běžně, jen ty typy bývají divočejší, například vektorové pole.

Kit

Re:Co si myslíte o OOP?
« Odpověď #532 kdy: 06. 01. 2019, 02:26:25 »
Statické typování má tu výhodu, že taková situace jednoduše neexistuje. Pokud popletu vstupy, tak to na mě zařve kompilátor. Hned! Nemusím testovat, jestli ta funkce vyhodila nějakou chybu, protože jsem se překlpl. Spustu věcí nemusím dělat. Kód je kratší a přímočařejší.
Kód: [Vybrat]
float sin(float phi) {
    return 0.0;
}

Navíc z ní vůbec není patrné, zda je parametr ve stupních, radiánech nebo v jiných jednotkách. Takže i ten typ "float" je de facto špatně, protože neobsahuje sémantiku. Když tam hodíš údaj v metrech, tak to typová kontrola nepozná.
To je tím, že to je hloupě napsané. V takovém systému jde mít typ obsahující (a kontrolující) fyzikální rozměr i jednotku a činitele, takže prostě řeknu, že rozměr vstupu je 1 a výpočet upravím podle vlastností vstupu. Pak tam nepůjdou hodit metry, protože clashne rozměr. Fyzici tohle mají ve výpočtech ošetřené běžně, jen ty typy bývají divočejší, například vektorové pole.

Na vektorovém či tenzorovém poli nevidím nic divokého.

Tu funkci jsem tak napsal záměrně. Jak bys ji tedy napsal, aby nebyla hloupě, např. v Javě?

Honza

Re:Co si myslíte o OOP?
« Odpověď #533 kdy: 06. 01. 2019, 02:39:03 »
Na tom příkladu se sinusem bych chtěl vidět jednu věc: chci, aby parametrem mohl být i zlomek, nejen float...
A výsledek chci mít možnost obojí, podle toho, jak to vyjde, abych neztratil přesnost výpočtu. Ha?

BaldSlattery

Re:Co si myslíte o OOP?
« Odpověď #534 kdy: 06. 01. 2019, 02:53:06 »
Na tom příkladu se sinusem bych chtěl vidět jednu věc: chci, aby parametrem mohl být i zlomek, nejen float...
A výsledek chci mít možnost obojí, podle toho, jak to vyjde, abych neztratil přesnost výpočtu. Ha?
To je triviální, prostě rozhraním.

Honza

Re:Co si myslíte o OOP?
« Odpověď #535 kdy: 06. 01. 2019, 03:21:05 »
Na tom příkladu se sinusem bych chtěl vidět jednu věc: chci, aby parametrem mohl být i zlomek, nejen float...
A výsledek chci mít možnost obojí, podle toho, jak to vyjde, abych neztratil přesnost výpočtu. Ha?
To je triviální, prostě rozhraním.
Díky, člověk rychle zapomene, že je něco takového ve statických jazycích potřeba...

Kit

Re:Co si myslíte o OOP?
« Odpověď #536 kdy: 06. 01. 2019, 03:36:11 »
Na tom příkladu se sinusem bych chtěl vidět jednu věc: chci, aby parametrem mohl být i zlomek, nejen float...
A výsledek chci mít možnost obojí, podle toho, jak to vyjde, abych neztratil přesnost výpočtu. Ha?
To je triviální, prostě rozhraním.
Díky, člověk rychle zapomene, že je něco takového ve statických jazycích potřeba...

Ve statických jazycích je nutné ho i implementovat nějakou přetíženou metodou.

Honza

Re:Co si myslíte o OOP?
« Odpověď #537 kdy: 06. 01. 2019, 03:41:55 »
Na tom příkladu se sinusem bych chtěl vidět jednu věc: chci, aby parametrem mohl být i zlomek, nejen float...
A výsledek chci mít možnost obojí, podle toho, jak to vyjde, abych neztratil přesnost výpočtu. Ha?
To je triviální, prostě rozhraním.
Díky, člověk rychle zapomene, že je něco takového ve statických jazycích potřeba...

Ve statických jazycích je nutné ho i implementovat nějakou přetíženou metodou.

Ano, to se blížíme tomu, co jsem chtěl naznačit. Přetíženou metodou to totiž nepůjde, protože typ výsledku známe až za běhu...
Např. v Javě rozhodně nemůžu mít dvě stejné metody, pokud mají různé typy výsledku...

Kit

Re:Co si myslíte o OOP?
« Odpověď #538 kdy: 06. 01. 2019, 03:51:51 »
Na tom příkladu se sinusem bych chtěl vidět jednu věc: chci, aby parametrem mohl být i zlomek, nejen float...
A výsledek chci mít možnost obojí, podle toho, jak to vyjde, abych neztratil přesnost výpočtu. Ha?
To je triviální, prostě rozhraním.
Díky, člověk rychle zapomene, že je něco takového ve statických jazycích potřeba...
Ve statických jazycích je nutné ho i implementovat nějakou přetíženou metodou.
Ano, to se blížíme tomu, co jsem chtěl naznačit. Přetíženou metodou to totiž nepůjde, protože typ výsledku známe až za běhu...
Např. v Javě rozhodně nemůžu mít dvě stejné metody, pokud mají různé typy výsledku...

Pokud se liší typem parametru, tak ano. Ovšem sin(π/6) má reálný parametr, ale racionální výsledek. Také jsem zvědav, jak to staticky natypují.

BaldSlattery

Re:Co si myslíte o OOP?
« Odpověď #539 kdy: 06. 01. 2019, 03:55:40 »
Na tom příkladu se sinusem bych chtěl vidět jednu věc: chci, aby parametrem mohl být i zlomek, nejen float...
A výsledek chci mít možnost obojí, podle toho, jak to vyjde, abych neztratil přesnost výpočtu. Ha?
To je triviální, prostě rozhraním.
Díky, člověk rychle zapomene, že je něco takového ve statických jazycích potřeba...
Ve statických jazycích je nutné ho i implementovat nějakou přetíženou metodou.
Ano, to se blížíme tomu, co jsem chtěl naznačit. Přetíženou metodou to totiž nepůjde, protože typ výsledku známe až za běhu...
Např. v Javě rozhodně nemůžu mít dvě stejné metody, pokud mají různé typy výsledku...

Pokud se liší typem parametru, tak ano. Ovšem sin(π/6) má reálný parametr, ale racionální výsledek. Také jsem zvědav, jak to staticky natypují.
racionální implikuje reálný, sám sis odpověděl, co je rozhraním