Co si myslíte o OOP?

operator

Re:Co si myslíte o OOP?
« Odpověď #990 kdy: 16. 01. 2019, 17:54:57 »
Ono to krasne dokazuje omezenost mysleni 'statickych' programatoru
Mno... Zaznelo tady "muzes pouzit numpy.array". Neni to nahodou implementovano staticky v cythonu nebo rovnou v C? :)
Celý Python je implementován v C a ten zase generuje strojový kód. A co má být? Ze sportovních důvodů existuje C compiler implementovaný v Pythonu, viz https://github.com/ShivamSarodia/ShivyC


Re:Co si myslíte o OOP?
« Odpověď #991 kdy: 16. 01. 2019, 18:25:48 »
ndarray je implementováno tady

https://github.com/numpy/numpy/blob/master/numpy/core/src/multiarray/arrayobject.c

všechny vestavěné typy jsou implementovány v C, není rozdíl mezi rozšiřujícím typem a vestavěným typem.

https://docs.python.org/3/extending/newtypes_tutorial.html
Vůbec nerozumím, co se snažíš říct.

gll

  • ****
  • 429
    • Zobrazit profil
    • E-mail
Re:Co si myslíte o OOP?
« Odpověď #992 kdy: 16. 01. 2019, 18:36:48 »
ndarray je implementováno tady

https://github.com/numpy/numpy/blob/master/numpy/core/src/multiarray/arrayobject.c

všechny vestavěné typy jsou implementovány v C, není rozdíl mezi rozšiřujícím typem a vestavěným typem.

https://docs.python.org/3/extending/newtypes_tutorial.html
Vůbec nerozumím, co se snažíš říct.

co jsi chtěl říct ty tím odkazem?

Re:Co si myslíte o OOP?
« Odpověď #993 kdy: 16. 01. 2019, 18:38:29 »
co jsi chtěl říct ty tím odkazem?
No já jsem reagoval na to, na co jsem reagoval: https://forum.root.cz/index.php?topic=20380.msg304009#msg304009

Dor

Re:Co si myslíte o OOP?
« Odpověď #994 kdy: 16. 01. 2019, 18:47:43 »
Ohledně OPP si myslím, že je vhodné pro něco, co si drží nějaké stavy. Např. desktopová aplikace. A hlavně si myslím, že z těch, kteří tvrdí, že umějí OOP, pak 80% porgramátorů přinejmenším zneužívá dědičnost pro sdílení kódu a hrubě pourušují SRP. Tolik k OOP.

Jinak mi přijde, že když už to tu není úplné OT o pohlavích, tak stejně si tu namísto debaty o OPP hodně lidí obhajuje nějaký svůj jazyk a debata se stáčí na dynamické typování, enumy a věci, které imho s OOP tolik nesouvisí.


Kadet

Re:Co si myslíte o OOP?
« Odpověď #995 kdy: 16. 01. 2019, 19:48:28 »
Ohledně OPP si myslím, že je vhodné pro něco, co si drží nějaké stavy. Např. desktopová aplikace. A hlavně si myslím, že z těch, kteří tvrdí, že umějí OOP, pak 80% porgramátorů přinejmenším zneužívá dědičnost pro sdílení kódu a hrubě pourušují SRP. Tolik k OOP.

Jinak mi přijde, že když už to tu není úplné OT o pohlavích, tak stejně si tu namísto debaty o OPP hodně lidí obhajuje nějaký svůj jazyk a debata se stáčí na dynamické typování, enumy a věci, které imho s OOP tolik nesouvisí.

Jinymi slovy, OOP = simulace. Napr. GUI, OS, cokoliv co pracuje se stavem.

Jednou jsem delal na projektu grafickyho editoru, co fungoval na tomhle principu manipulace se stavem. Pak jsem mel pridat funkcionalitu undo/redo. Ukazalo se, ze musim kazdou operaci (tj. zmenu stavu) reprezentovat explicitne a ulozit jit do nejakyho zasobniku, do kteryho pushuju a popuju podle toho jestli delam undo nebo redo.

Pak mi doslo proc to neudelat od zacatku tak, ze misto reprezentovani stavu (tj. v pameti jsou uchovany objekty a dat. struktury reprezentujici stav) muzu reprezentovat v pameti prechody mezi temi stavy. Neco jako dualni problem k reprezentaci stavu. Je to pak vyhodnejsi protoze, muzu celou simulaci prehrat od zacatku, kdyz neco testuju napr. Nemusim mit testera co vyklikava rucne vsechny stavy nez se dostane k bugu. Proste prehraju log operaci a sleduju jak se to promita do zmeny stavu systemu.

Nekdo tomu rika event sourcing, nekdo funkcionalni programovani, nekdo programovani s explicitnim casem.

Pro me je otazka OOP vs funkcionalni, apod
 nepodstatna. Ve funkcionalnim i OOP jazyce muzu napsat stavovou nebo prechodovou simulaci. Co je pro me dulezity je prave to jak na system pohlizim a jak ho reprezentuju.

Za me jasne vitezi reprezentovat zmeny systemu explicitne a stav systemu jako side produkt. Kdezto vetsina programatoru reprezentuje stav systemu explicitne a reprezentace prechodu mezi stavy je volatilni a tak nejak se vypari po zavolani metody.

operator

Re:Co si myslíte o OOP?
« Odpověď #996 kdy: 16. 01. 2019, 20:07:10 »
Ohledně OPP si myslím, že je vhodné pro něco, co si drží nějaké stavy. Např. desktopová aplikace. A hlavně si myslím, že z těch, kteří tvrdí, že umějí OOP, pak 80% porgramátorů přinejmenším zneužívá dědičnost pro sdílení kódu a hrubě pourušují SRP. Tolik k OOP.

Jinak mi přijde, že když už to tu není úplné OT o pohlavích, tak stejně si tu namísto debaty o OPP hodně lidí obhajuje nějaký svůj jazyk a debata se stáčí na dynamické typování, enumy a věci, které imho s OOP tolik nesouvisí.
OOP je dobre treba na datove objekty, na vytvareni novych datovych typu. Zvlaste kdyz je jich hodne a maji hierarchickou strukturu. Typicky a vsude uvadeny pripad je GUI. A nebo ja jsem ted hodne ponoren do midi a midi eventů, u nich objektovy pristup take sedi jak zadek na hrnec. A s temito objekty pak muze byt dal klidne nakladano strukturovane nebo funkcionalne, jak je v dane situaci nejlepsi. Takze oop by mel byt dobry sluha aplikovany kam patri, ale ne spatny pan vnucovany nam z duvodu cistoty/uniformity jednoho paradigma i na miste, kde se nehodi.

Kadet

Re:Co si myslíte o OOP?
« Odpověď #997 kdy: 16. 01. 2019, 20:36:24 »
Ohledně OPP si myslím, že je vhodné pro něco, co si drží nějaké stavy. Např. desktopová aplikace. A hlavně si myslím, že z těch, kteří tvrdí, že umějí OOP, pak 80% porgramátorů přinejmenším zneužívá dědičnost pro sdílení kódu a hrubě pourušují SRP. Tolik k OOP.

Jinak mi přijde, že když už to tu není úplné OT o pohlavích, tak stejně si tu namísto debaty o OPP hodně lidí obhajuje nějaký svůj jazyk a debata se stáčí na dynamické typování, enumy a věci, které imho s OOP tolik nesouvisí.
OOP je dobre treba na datove objekty, na vytvareni novych datovych typu. Zvlaste kdyz je jich hodne a maji hierarchickou strukturu. Typicky a vsude uvadeny pripad je GUI. A nebo ja jsem ted hodne ponoren do midi a midi eventů, u nich objektovy pristup take sedi jak zadek na hrnec. A s temito objekty pak muze byt dal klidne nakladano strukturovane nebo funkcionalne, jak je v dane situaci nejlepsi. Takze oop by mel byt dobry sluha aplikovany kam patri, ale ne spatny pan vnucovany nam z duvodu cistoty/uniformity jednoho paradigma i na miste, kde se nehodi.

Presne GUI a implementace vnitrnosti programovaciho prostredi (hierarchie cisel), nektery datovy struktury, jsou presne pripady, kde je fajn mit nastroje, co dokazou dispatchovat funkci hierarchicky.

Nemyslim si ale ze je k tomu potreba OOP jazyk, mela by stacit featura, ktera mi diapatchne spravnou funkci.

Napr. u hierarchie cisel. Mam pripady kdy scitam int a float:

1 + 1 (int_int_plus)
1.0 + 1 (float_int_plus)
1 + 1.0 (int_float_plus, nebo flip + float_int_plus)
1.0 + 1.0 (float_float_plus)

na zaklade typu potrebuju dispatchnout spravnou funkci nebo instrukci.

OOP s posilanim zprav nebo volanim metod je na to kratky, protoze dispatchuju pres dva argumenty. Muzu to ohackovat pres double dispatch. Nejakej haskell fanda mi muze tvrdit, ze bez dispatche na zaklade statickych typu to nepujde, ale kazdy vidi, ze je v tomhle pripade jedno jestli dispatchuju pri prekladu nebo az tesne pred volanim funkce.

Kazdopadne jakmile mam spravnou funkci, tak nepotrebuju dalsi featury OOP jazyka. Staci mi skladat funkce jednu za druhou. Algebra funkci je jednodussi nez algebra objektu, pokud beru objekt pouze jako mnozinu 1+ funkci.

BaldSlattery

Re:Co si myslíte o OOP?
« Odpověď #998 kdy: 16. 01. 2019, 20:43:12 »
Ohledně OPP si myslím, že je vhodné pro něco, co si drží nějaké stavy. Např. desktopová aplikace. A hlavně si myslím, že z těch, kteří tvrdí, že umějí OOP, pak 80% porgramátorů přinejmenším zneužívá dědičnost pro sdílení kódu a hrubě pourušují SRP. Tolik k OOP.

Jinak mi přijde, že když už to tu není úplné OT o pohlavích, tak stejně si tu namísto debaty o OPP hodně lidí obhajuje nějaký svůj jazyk a debata se stáčí na dynamické typování, enumy a věci, které imho s OOP tolik nesouvisí.
OOP je dobre treba na datove objekty, na vytvareni novych datovych typu. Zvlaste kdyz je jich hodne a maji hierarchickou strukturu. Typicky a vsude uvadeny pripad je GUI. A nebo ja jsem ted hodne ponoren do midi a midi eventů, u nich objektovy pristup take sedi jak zadek na hrnec. A s temito objekty pak muze byt dal klidne nakladano strukturovane nebo funkcionalne, jak je v dane situaci nejlepsi. Takze oop by mel byt dobry sluha aplikovany kam patri, ale ne spatny pan vnucovany nam z duvodu cistoty/uniformity jednoho paradigma i na miste, kde se nehodi.

Presne GUI a implementace vnitrnosti programovaciho prostredi (hierarchie cisel), nektery datovy struktury, jsou presne pripady, kde je fajn mit nastroje, co dokazou dispatchovat funkci hierarchicky.

Nemyslim si ale ze je k tomu potreba OOP jazyk, mela by stacit featura, ktera mi diapatchne spravnou funkci.

Napr. u hierarchie cisel. Mam pripady kdy scitam int a float:

1 + 1 (int_int_plus)
1.0 + 1 (float_int_plus)
1 + 1.0 (int_float_plus, nebo flip + float_int_plus)
1.0 + 1.0 (float_float_plus)

na zaklade typu potrebuju dispatchnout spravnou funkci nebo instrukci.

OOP s posilanim zprav nebo volanim metod je na to kratky, protoze dispatchuju pres dva argumenty. Muzu to ohackovat pres double dispatch. Nejakej haskell fanda mi muze tvrdit, ze bez dispatche na zaklade statickych typu to nepujde, ale kazdy vidi, ze je v tomhle pripade jedno jestli dispatchuju pri prekladu nebo az tesne pred volanim funkce.

Kazdopadne jakmile mam spravnou funkci, tak nepotrebuju dalsi featury OOP jazyka. Staci mi skladat funkce jednu za druhou. Algebra funkci je jednodussi nez algebra objektu, pokud beru objekt pouze jako mnozinu 1+ funkci.
Blahopřeju k (zatím) nejdebilnějšímu příspěvku tohoto vlákna.

Kadet

Re:Co si myslíte o OOP?
« Odpověď #999 kdy: 16. 01. 2019, 20:54:18 »
Ohledně OPP si myslím, že je vhodné pro něco, co si drží nějaké stavy. Např. desktopová aplikace. A hlavně si myslím, že z těch, kteří tvrdí, že umějí OOP, pak 80% porgramátorů přinejmenším zneužívá dědičnost pro sdílení kódu a hrubě pourušují SRP. Tolik k OOP.

Jinak mi přijde, že když už to tu není úplné OT o pohlavích, tak stejně si tu namísto debaty o OPP hodně lidí obhajuje nějaký svůj jazyk a debata se stáčí na dynamické typování, enumy a věci, které imho s OOP tolik nesouvisí.
OOP je dobre treba na datove objekty, na vytvareni novych datovych typu. Zvlaste kdyz je jich hodne a maji hierarchickou strukturu. Typicky a vsude uvadeny pripad je GUI. A nebo ja jsem ted hodne ponoren do midi a midi eventů, u nich objektovy pristup take sedi jak zadek na hrnec. A s temito objekty pak muze byt dal klidne nakladano strukturovane nebo funkcionalne, jak je v dane situaci nejlepsi. Takze oop by mel byt dobry sluha aplikovany kam patri, ale ne spatny pan vnucovany nam z duvodu cistoty/uniformity jednoho paradigma i na miste, kde se nehodi.

Presne GUI a implementace vnitrnosti programovaciho prostredi (hierarchie cisel), nektery datovy struktury, jsou presne pripady, kde je fajn mit nastroje, co dokazou dispatchovat funkci hierarchicky.

Nemyslim si ale ze je k tomu potreba OOP jazyk, mela by stacit featura, ktera mi diapatchne spravnou funkci.

Napr. u hierarchie cisel. Mam pripady kdy scitam int a float:

1 + 1 (int_int_plus)
1.0 + 1 (float_int_plus)
1 + 1.0 (int_float_plus, nebo flip + float_int_plus)
1.0 + 1.0 (float_float_plus)

na zaklade typu potrebuju dispatchnout spravnou funkci nebo instrukci.

OOP s posilanim zprav nebo volanim metod je na to kratky, protoze dispatchuju pres dva argumenty. Muzu to ohackovat pres double dispatch. Nejakej haskell fanda mi muze tvrdit, ze bez dispatche na zaklade statickych typu to nepujde, ale kazdy vidi, ze je v tomhle pripade jedno jestli dispatchuju pri prekladu nebo az tesne pred volanim funkce.

Kazdopadne jakmile mam spravnou funkci, tak nepotrebuju dalsi featury OOP jazyka. Staci mi skladat funkce jednu za druhou. Algebra funkci je jednodussi nez algebra objektu, pokud beru objekt pouze jako mnozinu 1+ funkci.
Blahopřeju k (zatím) nejdebilnějšímu příspěvku tohoto vlákna.

(zatim) v zavorce, protoze jsi me prave prekonal?

operator

Re:Co si myslíte o OOP?
« Odpověď #1000 kdy: 16. 01. 2019, 21:15:29 »
Ohledně OPP si myslím, že je vhodné pro něco, co si drží nějaké stavy. Např. desktopová aplikace. A hlavně si myslím, že z těch, kteří tvrdí, že umějí OOP, pak 80% porgramátorů přinejmenším zneužívá dědičnost pro sdílení kódu a hrubě pourušují SRP. Tolik k OOP.

Jinak mi přijde, že když už to tu není úplné OT o pohlavích, tak stejně si tu namísto debaty o OPP hodně lidí obhajuje nějaký svůj jazyk a debata se stáčí na dynamické typování, enumy a věci, které imho s OOP tolik nesouvisí.
OOP je dobre treba na datove objekty, na vytvareni novych datovych typu. Zvlaste kdyz je jich hodne a maji hierarchickou strukturu. Typicky a vsude uvadeny pripad je GUI. A nebo ja jsem ted hodne ponoren do midi a midi eventů, u nich objektovy pristup take sedi jak zadek na hrnec. A s temito objekty pak muze byt dal klidne nakladano strukturovane nebo funkcionalne, jak je v dane situaci nejlepsi. Takze oop by mel byt dobry sluha aplikovany kam patri, ale ne spatny pan vnucovany nam z duvodu cistoty/uniformity jednoho paradigma i na miste, kde se nehodi.

Presne GUI a implementace vnitrnosti programovaciho prostredi (hierarchie cisel), nektery datovy struktury, jsou presne pripady, kde je fajn mit nastroje, co dokazou dispatchovat funkci hierarchicky.

Nemyslim si ale ze je k tomu potreba OOP jazyk, mela by stacit featura, ktera mi diapatchne spravnou funkci.

Napr. u hierarchie cisel. Mam pripady kdy scitam int a float:

1 + 1 (int_int_plus)
1.0 + 1 (float_int_plus)
1 + 1.0 (int_float_plus, nebo flip + float_int_plus)
1.0 + 1.0 (float_float_plus)

na zaklade typu potrebuju dispatchnout spravnou funkci nebo instrukci.

OOP s posilanim zprav nebo volanim metod je na to kratky, protoze dispatchuju pres dva argumenty. Muzu to ohackovat pres double dispatch. Nejakej haskell fanda mi muze tvrdit, ze bez dispatche na zaklade statickych typu to nepujde, ale kazdy vidi, ze je v tomhle pripade jedno jestli dispatchuju pri prekladu nebo az tesne pred volanim funkce.

Kazdopadne jakmile mam spravnou funkci, tak nepotrebuju dalsi featury OOP jazyka. Staci mi skladat funkce jednu za druhou. Algebra funkci je jednodussi nez algebra objektu, pokud beru objekt pouze jako mnozinu 1+ funkci.
De facto oop nepotrebujes vubec, viz gtk v c, jde se bez toho obejit a nasimulovat to, ale je to krajne nepohodlne. Takze pokud mi vlastnosti oop zjednodusi nebo alespon zprehledni praci, jsem za to rad,  a soucasne jsem rad za to, ze je to jen moznost a nikoliv nutnost. Pro me je nejdulezitejsi moci s lehkosti, strucne a prehledne vyjadrit. A proto mam rad komplexni python s jeho multiparadigmatickym pristupem, dekoratory, generatory, comprehension a dalsimi featurami, protoze programovat v nem je poteseni a radost. Zvlast kdyz jsem nucen z profesnich duvodu programovat v necem tezkopadnem, a klopotnem jako je Java, tak ho potom o to vic umim ocenit. A ano, za to pohodli se plati vykonem.

Re:Co si myslíte o OOP?
« Odpověď #1001 kdy: 16. 01. 2019, 21:43:11 »
A proto mam rad komplexni python s jeho multiparadigmatickym pristupem, dekoratory, generatory, comprehension a dalsimi featurami, protoze programovat v nem je poteseni a radost.
A to jsi ještě nezmínil konkurentnost. Programovat něco konkurentního v Pythonu, to není potěšení a radost, to už je přímo orgastická extáze. Obzvlášť ve dvojce.

BoneFlute

  • *****
  • 2 043
    • Zobrazit profil
Re:Co si myslíte o OOP?
« Odpověď #1002 kdy: 16. 01. 2019, 21:53:01 »
Se svym statickm stylem mysleni nedokazi  vyuzivat jejich vyhodnych vlastnosti

Měl jsi možnost tyto výhodné vlastnosti rozvést. Proč jsi to neudělal?

BoneFlute

  • *****
  • 2 043
    • Zobrazit profil
Re:Co si myslíte o OOP?
« Odpověď #1003 kdy: 16. 01. 2019, 22:00:58 »
OOP je dobre treba na datove objekty, na vytvareni novych datovych typu. Zvlaste kdyz je jich hodne a maji hierarchickou strukturu.
Kdy potřebuješ hiearchickou strukturu? Čuchá čuchám zneužití dědičnosti na reusable kódu.

gll

  • ****
  • 429
    • Zobrazit profil
    • E-mail
Re:Co si myslíte o OOP?
« Odpověď #1004 kdy: 16. 01. 2019, 22:04:24 »
A proto mam rad komplexni python s jeho multiparadigmatickym pristupem, dekoratory, generatory, comprehension a dalsimi featurami, protoze programovat v nem je poteseni a radost.
A to jsi ještě nezmínil konkurentnost. Programovat něco konkurentního v Pythonu, to není potěšení a radost, to už je přímo orgastická extáze. Obzvlášť ve dvojce.

ve dvojce jsem používal gevent a radost to byla.