Co si myslíte o OOP?

BaldSlattery

Re:co si myslite o oop?
« Odpověď #885 kdy: 12. 01. 2019, 01:19:55 »
Dale, Typ v beznych prog. jazycich je dost omezena pomucka. Pomuze ti oddelit string od cisla, ale nepomuze ti oddelit zaporny cislo od kladnyho cisla. Taky se ti jednoho krasnyho dne muze stat ze ti nekdo zacne posilat negativni hmotnosti tvych zakazniku a typovej system bude drzet hubu.
Datové vstupy se běžně zpracovávají kontextovou gramatikou, kterou obecné parsery nezvládají.
Context-sensitive grammar? To asi dost těžko, v čem by se takový parser psal?

To je prosté. Podle prvního slova vybereš konstruktor a druhé slovo použiješ jako parametr. Vytvořená instance si ho už zpracuje podle svých potřeb. Pokud vyžaduje text, ale dostane číslo, zpracuje ho jako text. Pokud vyžaduje int, ale dostane text, vyhodí výjimku. Například REST funguje na tomto principu, ale variant je spousta.
Taková gramatika je ale formálně bezkontextová.


Kit

Re:co si myslite o oop?
« Odpověď #886 kdy: 12. 01. 2019, 01:36:49 »
Dale, Typ v beznych prog. jazycich je dost omezena pomucka. Pomuze ti oddelit string od cisla, ale nepomuze ti oddelit zaporny cislo od kladnyho cisla. Taky se ti jednoho krasnyho dne muze stat ze ti nekdo zacne posilat negativni hmotnosti tvych zakazniku a typovej system bude drzet hubu.
Datové vstupy se běžně zpracovávají kontextovou gramatikou, kterou obecné parsery nezvládají.
Context-sensitive grammar? To asi dost těžko, v čem by se takový parser psal?
To je prosté. Podle prvního slova vybereš konstruktor a druhé slovo použiješ jako parametr. Vytvořená instance si ho už zpracuje podle svých potřeb. Pokud vyžaduje text, ale dostane číslo, zpracuje ho jako text. Pokud vyžaduje int, ale dostane text, vyhodí výjimku. Například REST funguje na tomto principu, ale variant je spousta.
Taková gramatika je ale formálně bezkontextová.

Jak tedy pozná, že třeba 138 není číslo, ale tříznakový string?

BaldSlattery

Re:co si myslite o oop?
« Odpověď #887 kdy: 12. 01. 2019, 01:57:27 »
Dale, Typ v beznych prog. jazycich je dost omezena pomucka. Pomuze ti oddelit string od cisla, ale nepomuze ti oddelit zaporny cislo od kladnyho cisla. Taky se ti jednoho krasnyho dne muze stat ze ti nekdo zacne posilat negativni hmotnosti tvych zakazniku a typovej system bude drzet hubu.
Datové vstupy se běžně zpracovávají kontextovou gramatikou, kterou obecné parsery nezvládají.
Context-sensitive grammar? To asi dost těžko, v čem by se takový parser psal?
To je prosté. Podle prvního slova vybereš konstruktor a druhé slovo použiješ jako parametr. Vytvořená instance si ho už zpracuje podle svých potřeb. Pokud vyžaduje text, ale dostane číslo, zpracuje ho jako text. Pokud vyžaduje int, ale dostane text, vyhodí výjimku. Například REST funguje na tomto principu, ale variant je spousta.
Taková gramatika je ale formálně bezkontextová.

Jak tedy pozná, že třeba 138 není číslo, ale tříznakový string?
Ten “konstruktor” a parametr jsou součástí jednoho pravidla.

agent

Re:co si myslite o oop?
« Odpověď #888 kdy: 12. 01. 2019, 08:53:55 »
To je sice hezké, ale nijak mi to nezabrání uživatelsky zadat záporné kilogramy nebo teplotu roztaveného železa 5000 °C. Pokud by objekt nedělal následnou validaci, zpracoval by i nesmysly. V tomhle mi bezkontextový parser skutečně nepomůže.
Jedna šťouravá :) - co je nesmyslného na teplotě roztaveného železa 5000°C?
V zemském jádru má při téhle teplotě dokonce pevné skupenství.
https://cs.wikipedia.org/wiki/Zemsk%C3%A9_j%C3%A1dro
I záporné kilogramy můžou mít v určitém kontextu smysl - např relativní váha člověka ve vodě (i když Newtony by tady asi dávaly větší smysl)
Neodmítej na první pohled nesmyslný údaj bez znalosti kontextu.

BaldSlattery

Re:co si myslite o oop?
« Odpověď #889 kdy: 12. 01. 2019, 09:20:46 »
To je sice hezké, ale nijak mi to nezabrání uživatelsky zadat záporné kilogramy nebo teplotu roztaveného železa 5000 °C. Pokud by objekt nedělal následnou validaci, zpracoval by i nesmysly. V tomhle mi bezkontextový parser skutečně nepomůže.
I záporné kilogramy můžou mít v určitém kontextu smysl - např relativní váha člověka ve vodě
Váha a hmotnost jsou dvě různé veličiny s různými jednotkami. Na Marsu se ti například změní váha, ale ne hmotnost. Za nás se tohle bralo na ZŠ, ale svět se asi změnil, dnes by si maturanti stěžovali na obtížnost, kdyby měli vysvětlit rozdíl  ???


mmm

Re:co si myslite o oop?
« Odpověď #890 kdy: 12. 01. 2019, 11:15:29 »
Jedna šťouravá :) - co je nesmyslného na teplotě roztaveného železa 5000°C?

za atmosferického tlaku je bod varu železa o hodně níž.

Re:Co si myslíte o OOP?
« Odpověď #891 kdy: 12. 01. 2019, 11:51:25 »
Odpor vuci dynamickym jazykum zazniva od tech, kteri se v nich pokousi programovat staticky, protoze to jinak neumi.
Jenže svět, který se snažíme v IT modelovat/automatizovat má spíše charakter statických typů....Nikdo se nejmenuje 123456 nebo 10.60 a na výplatu dostanu vždy nějakou částku a ne stokorunčeských...takže oprávněný požadavek dynamických typů zpravidla zaznívá jen tehdy, když někdo něco generalizoval-sloučil. Navíc zákazník zpravidla požaduje ukládat data to staticky typovaných databází...v tomto případě nedává moc smysl zavádět do systému nějakou dynamickou složku.

Zrovna částku 10.60 je nejlepší předat do databáze jako string. Jakákoli konverze na nějaký int či float mimo databázi je zcela zbytečná a ve svém důsledku může aplikaci dost ublížit. Není žádný důvod pro hlídání takových typů v aplikaci.

A já myslel, že Kit tu žraloka přeskočil už dávno. A on se to pořád snaží trumfnout...

Kiwi

Re:Co si myslíte o OOP?
« Odpověď #892 kdy: 12. 01. 2019, 13:14:04 »
Odpor vuci dynamickym jazykum zazniva od tech, kteri se v nich pokousi programovat staticky, protoze to jinak neumi.
Jenže svět, který se snažíme v IT modelovat/automatizovat má spíše charakter statických typů....Nikdo se nejmenuje 123456 nebo 10.60 a na výplatu dostanu vždy nějakou částku a ne stokorunčeských...takže oprávněný požadavek dynamických typů zpravidla zaznívá jen tehdy, když někdo něco generalizoval-sloučil. Navíc zákazník zpravidla požaduje ukládat data to staticky typovaných databází...v tomto případě nedává moc smysl zavádět do systému nějakou dynamickou složku.

Zrovna částku 10.60 je nejlepší předat do databáze jako string. Jakákoli konverze na nějaký int či float mimo databázi je zcela zbytečná a ve svém důsledku může aplikaci dost ublížit. Není žádný důvod pro hlídání takových typů v aplikaci.

A já myslel, že Kit tu žraloka přeskočil už dávno. A on se to pořád snaží trumfnout...
V životě se člověku přihodí ledacos. Kdysi v databázi jeden takový samouk zavedl IP adresu jako string. On byl opravdu trochu omezenější, protože pořád nedokázal pochopit, že to je ve skutečnosti jen jedno číslo, nedokázal pochopit, jak může číslo obsahovat tři tečky. Jenže pak přišlo IPv6 a díky jeho stringu databáze bez problémů nové adresy zchroustala. Nakonec udělat si konverzi string->číslo (nebo whatever...) jde vždycky, ale kdyby byl databázi udělal nad uint32, celá věc by se bývala dost zkomplikovala.

Je to sice jako v těch pohádkách, kde hloupému Honzovi nakonec pomohlo štěstí, ale určité ponaučení si z toho pro praxi odnést lze.

Re:Co si myslíte o OOP?
« Odpověď #893 kdy: 12. 01. 2019, 13:19:07 »
ale určité ponaučení si z toho pro praxi odnést lze.
Jaké?

Kit

Re:Co si myslíte o OOP?
« Odpověď #894 kdy: 12. 01. 2019, 14:22:30 »
V životě se člověku přihodí ledacos. Kdysi v databázi jeden takový samouk zavedl IP adresu jako string. On byl opravdu trochu omezenější, protože pořád nedokázal pochopit, že to je ve skutečnosti jen jedno číslo, nedokázal pochopit, jak může číslo obsahovat tři tečky. Jenže pak přišlo IPv6 a díky jeho stringu databáze bez problémů nové adresy zchroustala. Nakonec udělat si konverzi string->číslo (nebo whatever...) jde vždycky, ale kdyby byl databázi udělal nad uint32, celá věc by se bývala dost zkomplikovala.

Je to sice jako v těch pohádkách, kde hloupému Honzovi nakonec pomohlo štěstí, ale určité ponaučení si z toho pro praxi odnést lze.

Něco podobného se mi skutečně stalo, když mi někdo vnucoval, že telefonní číslo mám ukládat jako uint32, ale já ho přesto udělal jako string, protože telefonní číslo není číslo.

Inkvizitor

Re:Co si myslíte o OOP?
« Odpověď #895 kdy: 12. 01. 2019, 17:58:49 »
V životě se člověku přihodí ledacos. Kdysi v databázi jeden takový samouk zavedl IP adresu jako string. On byl opravdu trochu omezenější, protože pořád nedokázal pochopit, že to je ve skutečnosti jen jedno číslo, nedokázal pochopit, jak může číslo obsahovat tři tečky. Jenže pak přišlo IPv6 a díky jeho stringu databáze bez problémů nové adresy zchroustala. Nakonec udělat si konverzi string->číslo (nebo whatever...) jde vždycky, ale kdyby byl databázi udělal nad uint32, celá věc by se bývala dost zkomplikovala.

Je to sice jako v těch pohádkách, kde hloupému Honzovi nakonec pomohlo štěstí, ale určité ponaučení si z toho pro praxi odnést lze.

Něco podobného se mi skutečně stalo, když mi někdo vnucoval, že telefonní číslo mám ukládat jako uint32, ale já ho přesto udělal jako string, protože telefonní číslo není číslo.

Ty jsi, Kite, predbehl dobu. Dnes je v mode genderova flexibilita a jak by se hodilo mit moznost volnou formou zadat v kolonce pohlavi "kyberpes" namisto trapneho vyberu mezi M a F.

Kit

Re:Co si myslíte o OOP?
« Odpověď #896 kdy: 12. 01. 2019, 21:52:42 »
Ty jsi, Kite, predbehl dobu. Dnes je v mode genderova flexibilita a jak by se hodilo mit moznost volnou formou zadat v kolonce pohlavi "kyberpes" namisto trapneho vyberu mezi M a F.

Zažil jsem i dobu, kdy se pohlaví zadávalo true/false.

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Co si myslíte o OOP?
« Odpověď #897 kdy: 12. 01. 2019, 22:01:50 »
Ty jsi, Kite, predbehl dobu. Dnes je v mode genderova flexibilita a jak by se hodilo mit moznost volnou formou zadat v kolonce pohlavi "kyberpes" namisto trapneho vyberu mezi M a F.

Zažil jsem i dobu, kdy se pohlaví zadávalo true/false.

Má pindíka? Ano/Ne :-D

Re:Co si myslíte o OOP?
« Odpověď #898 kdy: 12. 01. 2019, 22:13:04 »
V životě se člověku přihodí ledacos. Kdysi v databázi jeden takový samouk zavedl IP adresu jako string. On byl opravdu trochu omezenější, protože pořád nedokázal pochopit, že to je ve skutečnosti jen jedno číslo, nedokázal pochopit, jak může číslo obsahovat tři tečky. Jenže pak přišlo IPv6 a díky jeho stringu databáze bez problémů nové adresy zchroustala. Nakonec udělat si konverzi string->číslo (nebo whatever...) jde vždycky, ale kdyby byl databázi udělal nad uint32, celá věc by se bývala dost zkomplikovala.

Je to sice jako v těch pohádkách, kde hloupému Honzovi nakonec pomohlo štěstí, ale určité ponaučení si z toho pro praxi odnést lze.

Něco podobného se mi skutečně stalo, když mi někdo vnucoval, že telefonní číslo mám ukládat jako uint32, ale já ho přesto udělal jako string, protože telefonní číslo není číslo.

Ty jsi, Kite, predbehl dobu. Dnes je v mode genderova flexibilita a jak by se hodilo mit moznost volnou formou zadat v kolonce pohlavi "kyberpes" namisto trapneho vyberu mezi M a F.

Akorát pohlaví (u lidí) jsou dvě. Tzv. "gender" je něco jiného. To jen taková technická :)

Re:Co si myslíte o OOP?
« Odpověď #899 kdy: 13. 01. 2019, 01:05:21 »
Akorát pohlaví (u lidí) jsou dvě. Tzv. "gender" je něco jiného. To jen taková technická :)
Ještě přesněji, pojem "pohlaví" postupně ztrácí svůj někdejší čistě vnějškový biologický význam (má pindíka/nemá pindíka).

Pokud bych si měl vzít poučení z té anekdoty s IP adresou ve stringu, tak vlastně správný způsob, jak modelovat pojem "pohlaví" je neomezený string, do kterého dotazovaný může vepsat esej o tom, jestli to, co má mezi nohama, je ochoten nazývat slovem "pindík" a jakým způsobem to, co má mezi nohama, ovlivňuje jeho sebechápání v pojmech "žena" či "muž".

Nebo možná to poučení z té anekdoty s IP ve stringu je v tom, že bysme do labelu takové položky neměli psát "pohlaví", ale "co máte v občance v položce >pohlaví<?", nevím.
« Poslední změna: 13. 01. 2019, 01:07:22 od Mirek Prýmek »