Nem hibás az OOP szemlélet?
- Joe Armstrong, az Erlang programozási nyelv feltalálója szerint "Az objektumorientált nyelvek problémája, hogy egy implicit környezetet is magukkal hoznak. Egy banánt kértem, de kaptam egy a kezében banánt tartó gorillát meg köré az egész dzsungelt."
- Paul Graham szerint az OOP célja, hogy egyfajta csordaszellemet képezzen, amely megakadályozza, hogy középszerű programozók középszerű cégeiknek túl nagy károkat okozzanak. Mindezt annak az árán, hogy cserébe lelassítja azoknak a programozóknak a munkáját, akik jobb vagy kompaktabb technikákat is ismernek.
- Részletes cikkében Lawrence Krubner végigveszi az objektumorientált programozás tizenkét aspektusát, és bebizonyítja, hogy más nyelvekhez hasonlítva (lisp, funkcionális nyelvek stb.) az OOP nyelveknek nincsenek különleges erősségeik, viszont szükségtelen komplexitást hordoznak magukkal.
- Rob Pike, aki részt vett az UTF-8 és a Go megalkotásában, az objektumorientáltságot a programozás római számainak nevezte. Azt mondta, hogy az adatszerkezetekről és az algoritmusokról az adattípusokra helyezi át a hangsúlyt. Továbbá idézi egy Java professzor példáját, aki egy egyszerű keresőtábla helyett hat osztály létrehozásával oldott meg egy feladatot.
Nagy projektekhez kb. létszükséglet, átlátható, könnyen javítható és bővíthető, nem mellesleg a fejlesztőknek is jóval könnyebb a használata.
Abban igazuk van, hogy kicsiben nem sok értelme van, de több ezer soros kódnál is már bőségesen van annyi előnye hogy azt használja a fejlesztő.
Nem hibás, de túl van értékelve.
A legnagyobb probléma, hogy sokan ágyúval akarnak lőni verébre. Az OOP jól használható, ha jókora méretű rendszereket fejlesztünk, de egy kisebb programnál nem mutatkozik előnye, sőt, sokszor még hátrányos is.
Persze, hogy mikor és mennyire használható jól, az az adott feladattól, és a programozó szemléletmódjától is függ.
Én személy szerint nem vagyok az OOP megszállottja, és eszembe nem jutna kisebb, és közepes méretű feladatoknál használni, de ettől függetlenül a példák azért némileg kisarkítottak.
""Az objektumorientált nyelvek problémája, hogy egy implicit környezetet is magukkal hoznak. Egy banánt kértem, de kaptam egy a kezében banánt tartó gorillát meg köré az egész dzsungelt.""
... És máris ott vagyunk, hogy minek az Assemblyn kívül más nyelv? Hiszen legyen szó akár C-ről, akár Pascalról, akár C#-ról, mindegyik fordítója bele fog szőni "szükségtelen" kódrészleteket a programba. Mégse jutna eszembe Assemblyt használni, hacsak nem vagyok rákényszerülve, hogy minden egyes órajelcikluson spóroljak.
"célja, hogy egyfajta csordaszellemet képezzen, amely megakadályozza, hogy középszerű programozók középszerű cégeiknek túl nagy károkat okozzanak. Mindezt annak az árán, hogy cserébe lelassítja azoknak a programozóknak a munkáját, akik jobb vagy kompaktabb technikákat is ismernek."
Bocsánat, de ez baromság.
A csordaszellem enélkül is (sajnos) jelen van, mint ahogy OOP nélkül is van olyan munkahely, ahol gátolják a jó programozók kreativitását.
"az OOP nyelveknek nincsenek különleges erősségeik, viszont szükségtelen komplexitást hordoznak magukkal"
Ez nyelvtől függ. Egy OOP-t támogató nyelvben sem vagy köteles objektum-orientált szemléletben programozni.
"Azt mondta, hogy az adatszerkezetekről és az algoritmusokról az adattípusokra helyezi át a hangsúlyt."
Ez némileg igaz. De ha jó a programozó (az adott technika terén), akkor ez nem hátrány. OOP-ben sem az adatszerkezet fogja megoldani a problémát, hanem az algoritmus.
Összegezve: nincs baj az OOP-vel (annak ellenére, hogy én nem szeretem), csak azt kéne felfogni, hogy nem divatok után kéne kullogni, hanem mindig az adott feladathoz meg kéne keresni a megfelelő eszközt és technikát. A probléma ott van, hogy jön valami nagyon felkapott dolog, aztán 10-15-20 évig mindent abban csinálnak, ha van értelme, ha nincs, aki meg mást mond, azt kiközösítik. Aztán jön egy újabb divat, akkor meg hirtelen abban akarnak mindent megoldani, és aki másként vélekedik, szintén kiközösítik, leggyakrabban pont azok, akik pár hónapja még az előző divatban látták a programozás alfáját és omegáját.
Fel kéne érni ésszel, hogy van bőségesen hely többféle technológia számára.
Nem hibás, de én is azt mondanám, hogy nagy projektekhez jól jön az OOP, a kisebbeknél viszont öntökön lövés. A kérdés szerintem inkább az, hogy hány olyan projekt van, ahol valóban szükség van az OOP-re, és hány olyan, amit csak azért írtak OOP módszerrel, mert épp az a divat. Sok esetben, kis és közepes méretű projekteknél, főleg ha nincs szükség újrahasznosítható kódrészekre, csak lassítja a fejlesztést az, hogy az OOP szabályait is be kell tartani. Egy plusz teher, de előnye vajon mennyi van?
Ha van egy ablakod, meg 8 vezérlőd amik meghívnak egy pár soros callbacket, oda minek OOP?
Én pl. teljesen jól elvagyok C-ben (számomra szinte semmi nem hiányzik belőle), persze nem csak a standard libeket használom, hanem egy rakat másikat. Viszonylag nagy kódbázisok vannak funkcionális nyelvekben írva, és teljesen jól működnek. Én pl. az Xfce projekt forrását szoktam nézegetni, az egy komplett asztali környezet, programokkal (fájlkezelő, screenshooter, stb.) és kiegészítő libekkel. Sokat lehet az ilyenekből tanulni, főleg kódszervezés terén.
Nem hibás az OOP, csak hibásan alkalmazzák. Az OOP-re mindaz igaz, amit leírtak róla. A fő gond vele az erőforrás igényesség.
Kódszervezés szempontjából egy áldás, más szempontból értelmetlenség.
A legnagyobb gond ott van, hogy már 2-300 soros füttyeneteket is OOP-ben írnak meg, mert elfelejtettek procedurálisan programozni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!