Jste zastánci OOP programování?

D.A. Tiger

  • ****
  • 486
  • Tygr, který žere tučňáka ;-)
    • Zobrazit profil
    • E-mail
Re: Jste zastánci OOP programování?
« Odpověď #45 kdy: 28. 11. 2010, 21:20:03 »
[jk & blizzboz]

Myslím, že pravdu máte oba. Objety v "realitě" existují - konec konců i člověk sám je objekt... objekt, který vykonává zažité procedůry...   
« Poslední změna: 28. 11. 2010, 22:12:06 od D.A. Tiger »


JS

Re: Jste zastánci OOP programování?
« Odpověď #46 kdy: 29. 11. 2010, 00:35:38 »
Pri procedurálnom návrhu sa buduje architektúra systému na báze funkcií. Objektovo orientovaný návrh používa za základ modularizácie dáta (abstraktné dátové typy).

Jak jste na tohle prisel? Jeden z mych nejoblibenejsich citatu o programovani je od Linuse*:
"I will, in fact, claim that the difference between a bad programmer and a good one is whether he considers his code or his data structures more important. Bad programmers worry about the code. Good programmers worry about data structures and their relationships."

Kazdy rozumny architekt zacina od datovych struktur, ktere bude potrebovat! Jestli je OOP lepsi - ne vsechny vztahy mezi daty lze zabalit do objektu, takze muj postoj je ambivalentni.

*A asi neni treba rikat, jaky ma Linus nazor na C++. Nazor na Javu co vim nikde nerikal, ale patrne by odpovedel jen gestem.

Ivan

Re: Jste zastánci OOP programování?
« Odpověď #47 kdy: 29. 11. 2010, 09:17:36 »
K tematu jsem se vyjadril a kdyz vidim tu rekl bych az fanaticku zkostnatelost a strach zkouset nove veci u svych kolegu programatoru, tak me az mraz po zadech prechazi.

Kdo nechce videt vyhody OOP (a to je uz rok 2010) a modernich jazyku, kdo tvrdi, ze nas svet neni z objektu, ale z procedur, kdo nevidi zavislost efektivity programovani a vyvoje na jazyku, ..., ..., ...  tomu IMHO neni pomoci.

Nastesti si kazdy muze vybrat jak si bude vydelavat na zivobiti a jak obstoji v konkurenci.

Bye Bye

Your mind is like a parachute. It only works if it is open. Frank Zappa

nou

Re: Jste zastánci OOP programování?
« Odpověď #48 kdy: 29. 11. 2010, 11:22:53 »
objektovo sa da programovat aj v C alebo ASM. C++,Java,C# tomu len pridavaju syntakticky cukor.

JS

Re: Jste zastánci OOP programování?
« Odpověď #49 kdy: 29. 11. 2010, 13:08:16 »
Kdo nechce videt vyhody OOP (a to je uz rok 2010) a modernich jazyku, kdo tvrdi, ze nas svet neni z objektu, ale z procedur, kdo nevidi zavislost efektivity programovani a vyvoje na jazyku, ..., ..., ...  tomu IMHO neni pomoci.

Pokud mate otevrenou mysl, zkuste se nekdy podivat na objektovy model Common Lispu (CLOS), jakoz i jazyk samotny. Pak mozna "modernitu" modernich jazyku uvidite v jinem svetle.


Ivan

Re: Jste zastánci OOP programování?
« Odpověď #50 kdy: 29. 11. 2010, 19:07:45 »
objektovo sa da programovat aj v C alebo ASM. C++,Java,C# tomu len pridavaju syntakticky cukor.

Jasne, vzdyt jsem psal, ze z Bratislavy do Prahy se da dojet i na kravskem povozu a auto staci nechat v garazi.

Logik

  • *****
  • 1 022
    • Zobrazit profil
    • E-mail
Re: Jste zastánci OOP programování?
« Odpověď #51 kdy: 29. 11. 2010, 23:06:24 »
Ivan: Anebo se taky dá říct, že primitiv vyžaduje, aby objektovej jazyk se zapisoval s tečkou mezi objektem a metodou, zatímco inteligentnímu člověku je jedno, jak se to zapisuje.

Co se týče bohatosti syntaxe a jejích možností, je na tom CLOS daleko lépe než C#. Akorát se tam holt nepíše ta tečka, takže to prostě není a nemůže být OOP, že. A mluvit se dá taky pouze a jen anglicky a kdo to nevidí a chce mluvit jinak, tak je blbé, že?

Citace
kdo nevidi zavislost efektivity programovani a vyvoje na jazyku
Posadím Tě k C# ořezaném o všechny knihovny. Sám budu psát ve Visual Basicu s knihovnama. Schválně, kdo bude produktivnější....

Anebo jinak - to si fakt myslíš, žes jedinej pupek světa, kterej přišel na to, že C# je jedinej produktivní jazyk, zatímco miliony programátorů po celém světě jsou blbci, který neuměj programovat a zbytečně ztrácej čas? Chlape, tvoje sebevědomí bych fakt nechtěl mít...

PS: Jako úsměvná epizoda na dokreslení pak působí x letá snaha MS napsat Windows znovu v managed kódu v C#. Pět let někde a zbyl z toho nejméně úspěšný (snad kromě windows ME a obstarožních Windows 1.0) operační systém, co kdy MS vydal - Visty. Napsanej hezky postaru povětšinou v C/C++.

----

Jinak opakuju, svět sice je z objektů, ale ty spolu interagujou pomocí procedur. Takže oddělovat OOP a procedurální styl nelze. I starý dobrý unity v turbopascalu nebo unixový sockety jsou objekty, jen se jim prostě v tý době tak neříkalo.
« Poslední změna: 30. 11. 2010, 16:39:51 od Logik »

Re: Jste zastánci OOP programování?
« Odpověď #52 kdy: 30. 11. 2010, 11:13:25 »
Jinak opakuju, svět sice je z objektů, ale ty spolu interagujou pomocí procedur. Takže oddělovat OOP a procedurální styl nelze. I starý dobrý unity v turbopascalu nebo unixový sockety jsou objekty, jen se jim prostě v tý době tak neříkalo.

Naprostý souhlas.

Ono to nakonec dopadá tak, že analytik navrhne vhodné datové struktury a programátor zpracuje funkce pro jejich komunikaci. A ten analytik a programátor může být klidně jedna a táž osoba. Potom vlastně dojde ke spojení dat a funkcí pro jejich správu - a máme tu objekt :-)

Ivan

Re: Jste zastánci OOP programování?
« Odpověď #53 kdy: 30. 11. 2010, 23:51:43 »
Anebo jinak - to si fakt myslíš, žes jedinej pupek světa, kterej přišel na to, že C# je jedinej produktivní jazyk, zatímco miliony programátorů po celém světě jsou blbci, který neuměj programovat a zbytečně ztrácej čas? Chlape, tvoje sebevědomí bych fakt nechtěl mít...

Nejdriv se nauc cist! Ja jsem nikde kategoricky netvrdil, ze C# je jediny pupek sveta! Takze se k Tvemu urazlivemu a neproduktivnimu prispevku nebudu vyjadrovat.

Jinak opakuju, svět sice je z objektů, ale ty spolu interagujou pomocí procedur. Takže oddělovat OOP a procedurální styl nelze. I starý dobrý unity v turbopascalu nebo unixový sockety jsou objekty, jen se jim prostě v tý době tak neříkalo.

Ne! Interakce mezi objekty v realnem svete neprobiha pomoci procedur, ale pomoci udalosti a parametry, ktere objekt prijima a vydava jsou taky objekty. Takze pokud nepochopis o cem OOP, tak logicky nemuzes videt jeho vyhody.

JS

Re: Jste zastánci OOP programování?
« Odpověď #54 kdy: 01. 12. 2010, 06:54:33 »
Ne! Interakce mezi objekty v realnem svete neprobiha pomoci procedur, ale pomoci udalosti a parametry, ktere objekt prijima a vydava jsou taky objekty. Takze pokud nepochopis o cem OOP, tak logicky nemuzes videt jeho vyhody.

Jake vyhody? Ostatni poucujete, jak maji uzavrenou mysl, a sam nic nevite o generic functions a multiple dispatch.

ondra.novacisko.cz

Re: Jste zastánci OOP programování?
« Odpověď #55 kdy: 01. 12. 2010, 08:34:10 »
Jinak opakuju, svět sice je z objektů, ale ty spolu interagujou pomocí procedur. Takže oddělovat OOP a procedurální styl nelze. I starý dobrý unity v turbopascalu nebo unixový sockety jsou objekty, jen se jim prostě v tý době tak neříkalo.

Naprostý souhlas.

Ono to nakonec dopadá tak, že analytik navrhne vhodné datové struktury a programátor zpracuje funkce pro jejich komunikaci. A ten analytik a programátor může být klidně jedna a táž osoba. Potom vlastně dojde ke spojení dat a funkcí pro jejich správu - a máme tu objekt :-)

Jen Vám to pak někdo nesmí změnit :-)

Logik

  • *****
  • 1 022
    • Zobrazit profil
    • E-mail
Re: Jste zastánci OOP programování?
« Odpověď #56 kdy: 01. 12. 2010, 13:10:41 »
Citace
Nejdriv se nauc cist! Ja jsem nikde kategoricky netvrdil, ze C# je jediny pupek sveta!
Opravdu jsi to netvrdil?
Citace
C# je momentalne nejmodernejsi a nejefektivnjsi jazyk na programovani.
No comment.

-----

Citace
Ne! Interakce mezi objekty v realnem svete neprobiha pomoci procedur, ale pomoci udalosti a parametry, ktere objekt prijima a vydava jsou taky objekty..... Takze pokud nepochopis o cem OOP, tak logicky nemuzes videt jeho vyhody.
Mě je úplně jedno, jak nazveš argument funkce. Furt v drtivé většině OOP jazyků: přijmout zprávu = zavolat metodu = spustit proceduru. Alespoň teda v C#, v některejch OO jazycích (např. onen CLOS) to opravdu tak není (viz dále).
 
A jak např. bez procedurálního programování zparsovat hlavičky mailu by mě zajímalo. Jako myslíš najdu objekt znak, kterej je dvojtečkou, všechno předtím je objekt název položky, všechno za tím až po objekt znak konce řádky je objekt položka hlavičky... A je tam všude slovo objekt, takže je to OOP, že?

Netvrdím, že to nejde bez procedurálního programování, parsovat mail jde i v prologu či lispu. Protože pro popis algoritmu existují dva přístupy: procedurální a deklarativní - C# je procedurální, prolog/lisp deklarativní. Žádnej OO popis algoritmu ale neexstuje, OOP popisuje jak se má dělat interakce mezi objekty a jak mmá vypadat objekt, nikoli jak jsou implementovány objekty uvnitř.

(Teda neexistuje - pokusy samozřejmě jsou, např.
http://www.cse.ohio-state.edu/sce/papers/algorithms-paper/algorithms-paper.pdf
ale tam to zas končí u druhé alternativy - deklarativního programování.)

A naopak procedurální programování popisuje jak popsat algoritmus, čili jak posloupností jednodušších kroků provést jednu konkrétní věc, čili jak implementovat jednu konkrétní fci. To, jestli získání 5tého znaku z řetězce se napíše charat(string, 5) nebo string.charat(5) je z hlediska procedurálního programování šumák.... a vlastně z hlediska OOP taky.

Ivan

Re: Jste zastánci OOP programování?
« Odpověď #57 kdy: 01. 12. 2010, 20:10:16 »
Citace
Nejdriv se nauc cist! Ja jsem nikde kategoricky netvrdil, ze C# je jediny pupek sveta!
Opravdu jsi to netvrdil?
Citace
C# je momentalne nejmodernejsi a nejefektivnjsi jazyk na programovani.
No comment.

Znovu vytrhujete jednu vetu z kontextu! Psal jsem, ze na ruzne ulohy je efektivni jiny jazyk, ale ano, kdyz se budeme bavit o beznych aplikacich na PC, tak plati, ze C# je nejefektivnjesi.

Tar

Re: Jste zastánci OOP programování?
« Odpověď #58 kdy: 01. 12. 2010, 20:20:59 »
Ja bych se s dovolenim tak trochu vratil k OP.
Nuze, zastancem OOP jsem, v jeho (dle meho nazoru) nejpraktictejsi forme, kterou dnes nachazim predevsim v C# (prinejmensim pro vetsi aplikace).

Nevyzaduji zadnou filosofickou cistotu - nenamlouvam se ze aplikace se sklada jen z "posilani zprav", protoze na urovni tech nejmensich kroku - operace s primitivy (tim nemyslim hloupe programatory :) budou vzdy proceduralni, bez ohledu na syntax. Takze taky neronim slzy nad konstatovanim ze tu a tam jsou potreba globalni promenne a globalni kod (v C# "static"), a ze vlastne "staticka trida neni trida" apod.

Na druhou stranu si nenamlouvam ale ani to ze aplikace se sklada jen z algoritmu a ze tudiz kdyz "Žádnej OO popis algoritmu neexistuje" tak z toho plyne ze neexistuje ani OO program.

Proste zlata stredni cesta.

Logik

  • *****
  • 1 022
    • Zobrazit profil
    • E-mail
Re: Jste zastánci OOP programování?
« Odpověď #59 kdy: 01. 12. 2010, 20:30:55 »
Citace
Na druhou stranu si nenamlouvam ale ani to ze aplikace se sklada jen z algoritmu a ze tudiz kdyz "Žádnej OO popis algoritmu neexistuje" tak z toho plyne ze neexistuje ani OO program.
Ale to já netvrdím. Já jsem taky zastánce OOP. Akorát tvrdím, že OOP řeší jiné problémy než procedurální programování. Prostě jsou OOP procedurální jazyky (např. C# nebo Java) a OOP deklarativní jazyky (CLOS nebo ten paper co jsem postoval) takže říkat, že OOP je lepší horší než procedurální programování je prostě blbina, stejně jako nejde říct, jestli je lepší mlýnek na maso nebo pánev.

No a druhá věc, kterou tvrdím je, že většina dnešních jazyků má natolik obdobné vyjadřovací schopnosti, že daleko víc záleží na knihovnách, než na samotném jazyku. Proto jsou např. tak placení Javovští programátoři. Ne za Javu samotnou (jazyk samotnej se člověk naučí za pár hodin), ale za znalost knihoven (spring, hibernate atd...).

Následující už je spíše dojem, to nemám nijak podložené fakty:
Proto také C# připadá hodně "samostatným vývojářům" tak produktivní - jeho knihovny jsou hodně cílené na RAD. Zatímco Java (a hlavně její knihovny) je víc cílená na korporátní projekty (např. existuje C# ekvivalent hibernate?) - proto není tak obratná na RAD, ale zároveň proto je i tak dobře příjmaná na velké projekty.
« Poslední změna: 01. 12. 2010, 20:35:20 od Logik »