Těžké OOP problémy

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Těžké OOP problémy
« Odpověď #405 kdy: 13. 11. 2019, 10:35:16 »
Citace: Idris linke=topic=22043.msg320506#msg320506 date=1573634974
Tak ono to není nic světoborného.
Idris, neštvi! Koukni v jaké kategorii vlákno skončilo a ty by si mohl poskytnout tak pěkné myšlenky!

Citace: Idris linke=topic=22043.msg320506#msg320506 date=1573634974
Ale uvedu jeden důležitý případ. Řekněme, že mám objektovou databázi a k ní metodu fetch<T>(T->bool)->[T], která mi má vrátit seznam instancí T, které splňují podmínku danou λ-výrazem, což může být například \person -> person.age >= 18 && person.children.count > 0, prostě libovolný výraz pracující s daty objektu. A teď si představme databázi, kde je objektů chtěného typu miliarda. Asi je zřejmé, že je blbost načítat je z databáze všechny a vyhodnocovat. Takže buď můžu podmínku zapsat jako řetězec a někde bokem rozparsovat (jako s SQL, ale pak překlepy a absence typové kontroly) a použít index, nebo použít nějaký preprocesor, který volání fetch nějak něčím nahradí. Přitom by nebyl problém mít v rámci introspekce (“reflexe”) přístup nejen k datům objektů (to tady taky potřebuju, aby šly objekty uložit do databáze a pak zase poskládat), ale i k ASTu toho výrazu, který mě zajímá. Pak můžu mít přímo v kódu databáze analýzu toho λ-výrazu a použít index, s plnou typovou kontrolou, v rámci jednoho jazyka, bez preprocesorů a skákání na jinou - méně intuitivní - syntax. Když je výraz hodně složitý, může index seznam předfiltrovat a pak se projde a výraz se vyhodnotí (“aspoň něco”). Takto by to bylo plně transparentní a nikdo by se nemusel učit SQL/OQL apod.
Hezký.
To zní jako LINQ?
Já jsem si něco takového dělal tak, že jsem vytvářel Expression pomoci objektoveho builderu. Což je sice funkční, ale pěkně hnusný. Tak jsem si ten builder předělal na parser DSLka ze kterého mi vypadl ten samej Expression akorad se to líp zapisovalo.
Matně tuším, že Scala má nějakou podporu pro DSL, takže se to nemusí obchházet přes parsování řetězce.
Chapu tě dobře?

Hezký. Co tam v tom seznamu máš dál? :-)
Interně možná jako LINQ, ale ten má taky svou extra syntax. Já to chci jako normální lambdu (ono to dokonce pro Javu a C# kdysi bylo, ale ten projekt zanikl).


Re:Těžké OOP problémy
« Odpověď #406 kdy: 13. 11. 2019, 10:36:47 »
Za předpokladu, že je pravdivé tvrzení, že Bůh vědomě způsobil smrt lidem při potopě nebo v Sodomě-Gomoře, tak jaké jsou odpovědi na následující tvrzení?
Vsechny ty otazky jsou zalozene na antropomorfizaci Boha a "jeho sveta", coz je hruby omyl. Proto na ne moc nema smysl odpovidat.

S uplne stejnou logikou se muzes ptat, proc Buh zpusobuje to, ze se rodi deti se straslivymi vrozenymi nemocemi. Neni to od nej krute?

Lidsky a bozsky svet jsou proste uplne jine kategorie, nemuzes prenaset meritka z jednoho do druhyho.

Právěže to jde i bez DSL.
Specificky veci urcite, univerzalni si moc nedovedu predstavit. Ale necham se prekvapit. Kdy vyjde nulta verze jazyka? :)

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Těžké OOP problémy
« Odpověď #407 kdy: 13. 11. 2019, 10:41:10 »
Za předpokladu, že je pravdivé tvrzení, že Bůh vědomě způsobil smrt lidem při potopě nebo v Sodomě-Gomoře, tak jaké jsou odpovědi na následující tvrzení?
Vsechny ty otazky jsou zalozene na antropomorfizaci Boha a "jeho sveta", coz je hruby omyl. Proto na ne moc nema smysl odpovidat.

S uplne stejnou logikou se muzes ptat, proc Buh zpusobuje to, ze se rodi deti se straslivymi vrozenymi nemocemi. Neni to od nej krute?

Lidsky a bozsky svet jsou proste uplne jine kategorie, nemuzes prenaset meritka z jednoho do druhyho.

Právěže to jde i bez DSL.
Specificky veci urcite, univerzalni si moc nedovedu predstavit. Ale necham se prekvapit. Kdy vyjde nulta verze jazyka? :)
To nevyjde, to byla trochu nadsázka. Sice něco existuje a používá se to i v produkci, ale je to in-house a spíš se čeká, až se nějaký mainstreamový jazyk vylepší.

Re:Těžké OOP problémy
« Odpověď #408 kdy: 13. 11. 2019, 10:43:54 »
a nebo to dojede na to, ze on to neumel vysvetlit nebo ja pochopit a tak sme toho radsi nechali, aby sme si nekazili jinak celkem pratelsky vztah.
Ono asi těžko by ti někdo vysvětloval, proč se zamiloval do nějaké holky tak, aby ses do ní zamiloval taky :)
Mít vestavěný automatický "subsystém", který při setkání s +- použitelnou ženskou začne vyrábět drogy aby jeden moc nepřemýšlel a raději ji zbouchnul, je svým způsobem velmi racionální. Ale řekl bych, že listoper si představoval trochu jiný druh racionální úvahy. :)

Re:Těžké OOP problémy
« Odpověď #409 kdy: 13. 11. 2019, 10:46:08 »
Mít vestavěný automatický "subsystém", který při setkání s +- použitelnou ženskou začne vyrábět drogy aby jeden moc nepřemýšlel a raději ji zbouchnul, je svým způsobem velmi racionální.
Ani ne tak racionalni jako spis evolucne vyhodny ;) Racionalni superego s tim pak tezce bojuje, ze zas nemuzes zbouchnout kazdou i kdyz drogy vali naplno :)


BoneFlute

  • *****
  • 1 983
    • Zobrazit profil
Re:Těžké OOP problémy
« Odpověď #410 kdy: 13. 11. 2019, 10:51:04 »
Když se tady rozjela náboženská diskuze, tak mě jako laika vždy zajímalo několik odpovědí, ale když jsem se zeptal křesťanů, tak mě obvinili z rouhačství.
Já ti to sice nevěří, že tě to skutečně zajímá a jen rejpeš, ale je to hezkej seznam, tak budiž.

Za předpokladu, že je pravdivé tvrzení, že Bůh vědomě způsobil smrt lidem při potopě nebo v Sodomě-Gomoře, tak jaké jsou odpovědi na následující tvrzení?

A) Pokud by se na Boha vztahoval náš Občanského zákoníku, tak je Bůh masový vrah?
Ne, není. Nejedná se o vraždu, ale o vykonání rozsudku smrti.

B) Je podle biblických zákonů Bůh masový vrah?
Není

C) Jsou podle Bible andělé považování za vrahy pokud zabijí lidi?
Vybavuji si jednen případ, pobití Asyřanů - a to byla naprosto legální - detaily si dostuduj.

D) Budu podle Bible považován za vraha když zabiji Boha nebo anděly?
Máš na to právo? On se vůči tobě dopustil nějaké zločinu?

E) Budu podle Bible považován za vraha když zabiji Satana?
Máš na to právo? Nemáš.

F) Zabil Bůh větší množství lidí než Satan?

U F) bych poprosil rozebrat konkrétní biblické události, které dokazují tvrzení. Vždy ve spojení s Biblí slyším o tom, že Bůh někoho zabil ale nevzpomínám si, že bych slyšel o zabíjení ze strany Satana.

Ne. Satan zabil bezkonkurenčně největší počet lidí (a andělů). Protože nebýt jeho, tak neumíráme. Díky němu (taky) umíráme. Takže má na svědomí každou smrt každého člověka, který kdy žil. A to asi těžko někdo trumfne.

G) Je podle Bible vrahem člověk, který zavraždí jiného člověka pod vlivem psychické nemoci?
Není. Doporučuji nastudovat jak to měli ve starověkém Izraeli s útočistnými městy. Moc šikovné.

H) Byl podle Bible Kain psychicky zdravý a zodpovědný za své jednání když zabíjel Abela?
Byl zdravý. A nejen to, dokonce ho Bůh osobně varoval. A nejen, že ho varoval, dokonce následně mu bylo úplně fuk, co provedl, takže se nedá mluvit ani o lítosti.

Stačí takto? V opačném přápad PM prosím.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Těžké OOP problémy
« Odpověď #411 kdy: 13. 11. 2019, 10:54:18 »
Hezký. Co tam v tom seznamu máš dál? :-)
Když vynechám poměrně běžné věci, který ale chybí zrovna v tom jazyku, kle to potřebuju, tak to už je poměrně specifické. Jedna věc je mít literály s jednotkami a symbolickým “usuzováním,” abych třeba mohl zapsat číslo jako 1234 kg m s-2 a abych to mohl porovnat s 1234 N, ale ne třeba s 1234 J (tam je totiž m2). To by se hodilo pro (numerické) výpočty ve fyzice. Další rozšíření syntaxe je umožnění zapisování tenzorů (nebo netenzorů, se kterými se počítá jako s tenzory, například Christoffelových symbolů) s kontrolou při překladu (opět obdoba typové kontroly), že indexy jsou správně kontra- či kovariantní. To pak souvisí - na úrovni implementace - s vektorovou implementací atd. S tím souvisí i ty jednotky, všechny komponenty vektoru/tenzoru by měly mít stejnou, takže kromě indexů chci i zajistit shodnost jednotek v (ct,x,y,z) apod. (tj. zařvat, když někdo zapomene c). Prostě věci ze symbolické a numerické matematiky na úrovni, kterou nemají ani specializované jazyky jako R.

Kit

  • *****
  • 707
    • Zobrazit profil
    • E-mail
Re:Těžké OOP problémy
« Odpověď #412 kdy: 13. 11. 2019, 11:17:47 »
Hezký. Co tam v tom seznamu máš dál? :-)
Když vynechám poměrně běžné věci, který ale chybí zrovna v tom jazyku, kle to potřebuju, tak to už je poměrně specifické. Jedna věc je mít literály s jednotkami a symbolickým “usuzováním,” abych třeba mohl zapsat číslo jako 1234 kg m s-2 a abych to mohl porovnat s 1234 N, ale ne třeba s 1234 J (tam je totiž m2). To by se hodilo pro (numerické) výpočty ve fyzice. Další rozšíření syntaxe je umožnění zapisování tenzorů (nebo netenzorů, se kterými se počítá jako s tenzory, například Christoffelových symbolů) s kontrolou při překladu (opět obdoba typové kontroly), že indexy jsou správně kontra- či kovariantní. To pak souvisí - na úrovni implementace - s vektorovou implementací atd. S tím souvisí i ty jednotky, všechny komponenty vektoru/tenzoru by měly mít stejnou, takže kromě indexů chci i zajistit shodnost jednotek v (ct,x,y,z) apod. (tj. zařvat, když někdo zapomene c). Prostě věci ze symbolické a numerické matematiky na úrovni, kterou nemají ani specializované jazyky jako R.

Doufal jsem, že tyto praktiky se používají v jazycích, které nabízí možnost tvořit vlastní typy. Zkusil jsem to v Haskellu a fungovalo to bezvadně. Jen mi pak bylo vysvětleno, že se to takhle nedělá, že se to mydlí jedním typem.

Re:Těžké OOP problémy
« Odpověď #413 kdy: 13. 11. 2019, 11:50:22 »
Hezký. Co tam v tom seznamu máš dál? :-)
Když vynechám poměrně běžné věci, který ale chybí zrovna v tom jazyku, kle to potřebuju, tak to už je poměrně specifické. Jedna věc je mít literály s jednotkami a symbolickým “usuzováním,” abych třeba mohl zapsat číslo jako 1234 kg m s-2 a abych to mohl porovnat s 1234 N, ale ne třeba s 1234 J (tam je totiž m2). To by se hodilo pro (numerické) výpočty ve fyzice. Další rozšíření syntaxe je umožnění zapisování tenzorů (nebo netenzorů, se kterými se počítá jako s tenzory, například Christoffelových symbolů) s kontrolou při překladu (opět obdoba typové kontroly), že indexy jsou správně kontra- či kovariantní. To pak souvisí - na úrovni implementace - s vektorovou implementací atd. S tím souvisí i ty jednotky, všechny komponenty vektoru/tenzoru by měly mít stejnou, takže kromě indexů chci i zajistit shodnost jednotek v (ct,x,y,z) apod. (tj. zařvat, když někdo zapomene c). Prostě věci ze symbolické a numerické matematiky na úrovni, kterou nemají ani specializované jazyky jako R.

Doufal jsem, že tyto praktiky se používají v jazycích, které nabízí možnost tvořit vlastní typy. Zkusil jsem to v Haskellu a fungovalo to bezvadně. Jen mi pak bylo vysvětleno, že se to takhle nedělá, že se to mydlí jedním typem.
Minimálně je na tohle C++ knihovna v boostu. https://www.boost.org/doc/libs/1_71_0/doc/html/boost_units.html
Šablony jsou mocné. Jen kdyby se to dalo i číst.

Re:Těžké OOP problémy
« Odpověď #414 kdy: 13. 11. 2019, 12:06:41 »
U pravoslavných a tradicionalistických římskokatolíků pak třeba sklon k nacionalismu až fašismu (ne nacismu).

To by asi nejdřív chtělo objasnit, co si představit pod tradicionalistických římskokatolíků. Imho to je spíš problém protestantů a dalších, co si chtějí vybírat.

U římskokatolíků pak ještě (imho) dost křečovitý vztah k sexualitě.

Jakože odmítání předmanželského sexu, nebo...?

Odvrácenou stranou menšího počtu rozvodů by mohla být frustrace a domácí násilí.

To si myslím, že spolu úplně nesouvisí (ta frustrace by mohla  :D ). Už jen proto, že rozvod násilníka nevyléčí...

Ne. Satan zabil bezkonkurenčně největší počet lidí (a andělů). Protože nebýt jeho, tak neumíráme. Díky němu (taky) umíráme. Takže má na svědomí každou smrt každého člověka, který kdy žil. A to asi těžko někdo trumfne.

Ne, umíráme kvůli své chybě.

Re:Těžké OOP problémy
« Odpověď #415 kdy: 13. 11. 2019, 12:11:04 »
To by asi nejdřív chtělo objasnit, co si představit pod tradicionalistických římskokatolíků. Imho to je spíš problém protestantů a dalších, co si chtějí vybírat.
Od FSSPX az po sedisvakantisty.

U římskokatolíků pak ještě (imho) dost křečovitý vztah k sexualitě.

Jakože odmítání předmanželského sexu, nebo...?
Viz napr. Denzler, G.: Zakazana slast, CSDK 1999

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Těžké OOP problémy
« Odpověď #416 kdy: 13. 11. 2019, 12:33:32 »
Co tam v tom seznamu máš dál? :-)
Dál už to jsou triviální, ale užitečné věci, které už některé jazyky mají, třeba možnost definice vlastních operátorů včetně určení priority a asociativity (tedy mnohem flexibilnější než například v C++) nebo implicitní přetypování (to má C++ a C#). Obecně pozoruju, že v každém jinak poměrně použitelném jazyce něco zásadního chybí. Z toho, co jsem psal, bych na první místo položil ty operátory a HKT, to jsou obecné konstrukce, zbytek už je specifičtější.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Těžké OOP problémy
« Odpověď #417 kdy: 13. 11. 2019, 12:37:31 »
Kdy vyjde nulta verze jazyka? :)
K tomu ještě dodám, že kdybych někdy náhodou v sobě objevil ambici něco podobného veřejně vydat, šlo by o vylepšení již existujícího a rozšířeného jazyka. Ale momentálně všechen můj čas zabírá výuka a pár projektů na univerzitě a ve spinoffech.

Re:Těžké OOP problémy
« Odpověď #418 kdy: 13. 11. 2019, 13:08:08 »
a nebo to dojede na to, ze on to neumel vysvetlit nebo ja pochopit a tak sme toho radsi nechali, aby sme si nekazili jinak celkem pratelsky vztah.
Ono asi těžko by ti někdo vysvětloval, proč se zamiloval do nějaké holky tak, aby ses do ní zamiloval taky :)

Tak nevim, je to o racionalnim rozhodovani nebo o emocich?

Re:Těžké OOP problémy
« Odpověď #419 kdy: 13. 11. 2019, 13:32:30 »
U římskokatolíků pak ještě (imho) dost křečovitý vztah k sexualitě.

Jakože odmítání předmanželského sexu, nebo...?
Viz napr. Denzler, G.: Zakazana slast, CSDK 1999

To je dost pochybný autor.