Portál AbcLinuxu, 6. května 2025 23:37
Jinak myslíte si, že se C++ rozšířilo kvůli C syntax a kompatibilitě s C?
Určitě to nejsou jediné důvody, protože potom by Objective-C mělo být rozšířené minimálně stejně jako C++.
Jaký je smysl vymýšlet nové jazyky když tu už nějakou dobu existují "mocné" jazyky? Těmi "mocnými" jazyky mám namyslí například smalltalk, lisp erlang...
Obecně to samozřejmě smysl má. Za povšimnutí stojí, že většina těch nejmocnějších jazyků (Lisp, Forth, Smalltalk...) jsou vlastně metajazyky, takže je určitě na místě se podívat, jestli pro řešení daného problému není lepší než se snažit vytvořit nový na zelené louce, použít některý z nich a vyždímat z něj, co se dá.
I na těch metajazycích lze lecos zlepšovat a když se vezmou v potaz Kayovy cíle, je pochopitelné, že mu žádná současná SW architektura nevyhovuje.
Ak OOP projekty komplikuje, tak je to nesprávnym prístupom k OOP v danom jazyku. Java a C++ sú toho dobrým príkladom
Hlavný bod OOP spomína Kay v odkazovanom článku: posielanie správ. To plynie z toho, že v správnom OOP jazyku je objekt úplne samostatná a nezávislá entita, takže posielanie správ je jediná možnosť interakcie medzi objektami. S tým samozrejme súvisí aj to, že všetky konštrukcie v danom jazyku, by pokiaľ možno mali byť objekty (tento bod nespĺňa takmer žiadny jazyk, ktorý sa honosí titulom OOP). Veci ako dedičnosť, polymorfizmus, atď. sú len vlastnosti systému objektov. Sú pochopiteľne užitočné, ale nijak zvlášť fundamentálne. Aspoň tak to teda vidím ja
Tak ako vidím OOP ja, tak je to o samostatných entitách (rovnako ako píšete nižšie, dá sa pod tým predstaviť samostatný počítač) a o komunikácii medzi nimi. Polymorfizmus je len triviálny (aj keď veľmi užitočný) dôsledok tohoto modelu a nie je nijak zvlášť fundamentálny.
To je jen velice jemná nuance v úhlu pohledu. Ve skutečnosti lze identitu rozlišit jen z vnějšího pohledu. Objekt v systému musí objektům zaslat zprávu, aby je mohl od sebe odlišit (a ony si mohou i vymýšlet). Fungování komunikace v objektovém systému je natolik svázáno s polymorfismem, že rozlišovat mezi tím, jestli se jedná o její příčinu nebo nutnou podmínku, v podstatě nemá smysl.
Tak jasné, že sa na to dá pozerať aj z opačného smeru. Povieme si, že chceme polymorfizmus a pozeráme sa, ktoré modely ho obsahujú. Lenže tej požiadavke môžu vyhovovať aj modely, ktoré nemajú s OOP (v tom zmysle objektov + správ) veľa spoločné. To by sme potom mohli nazvať POP (polymorfne orientované programovanie) a bolo by to nepochybne zaujímavé, ale mal som za to, že sa snažíme dobrať podstaty OOP. Je celkom možné, že polymorfizmus je pre OOP nutnou podmienkou a v tom prípade je OOP podmnožinou POP
Dá, dědičnost je jen druh realizace sdíleného chování, které ale také není pro OOP nezbytné. Můžete mít objekty jako zcela samostatné entity, kde každá bude bude obsahovat i všechny své metody. Pro OOP je důležité jen zapouzdření a polymorfismus, tedy že s různými takovými objekty můžete pracovat/komunikovat stejným způsobem a nemusíte s každým jednotlivým objektem pracovat zvlášť. Také zapouzdřením se nemyslí žádné private/protected/public, ale to, že každý objekt má sám o sobě schopnosti celého výpočetního systému (místo každého objektu si můžete představit celý počítač či dokonce celou síť) a sám samostatně rozhoduje, jak bude reagovat na zprávy z okolí.
Yup, presne tak OOP vidím aj ja.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.