Spíše jestli to nechápeš špatně ty. Proč se teda ten tvůj Smalltalk a dynamické typování skoro na nic nepoužívá? Pochybuju, že tvůrci C++ a Javy byli úplně mimo a nic nechápali. Neříkám, že musejí být lepší než ty, ale podle těch tvých hlášek tady pochybuju, že bys uměl programovat. Pokud máš problém jen s tím, že Java je OOP, tak je na čase si to tu pro tu debatu trochu změnit.
Takže ještě jednou, proč se používá skoro na všechno Java, když je tak špatná? Dyť by ti podnikatelé raději mohli ušetřit a prodávat luxusní věci, ne? Neříkám, že je úžasná na všechno, ale ty máš určitě hromadu lepších přístupů, které plno problémů odstraní. A nebo jsi jen nic pořádného nedělal, nevím.
Tak jinak. "OOP" tak, jak ho nabízí C++ či Java, je jenom určitý odvar z OOP. To není jen má původní myšlenka, to v mnoha rozhovorech říkají i otcové-zakladatelé OOP. Jistě autory těch dvou výše zmiňovaných jazyků vedly určité záměry, proč zvolili zrovna tuto podmnožinu. Osobně si myslím, že to bylo z toho důvodu, že na určitý okruh problémů to stačí - typicky GUI a určitý druh aplikačního software. Např. jinak neobjektový Oberon má oproti Pascalu možnost definovat záznam přidáním dalších položek analogickou cestou, jakou se odvozuje podtřída. To je vše a stačí mu to. Další důvod je asi ten, že to původní, plně dynamické pojetí, je výpočetně náročnější. Smalltalk byl navržen pro počítač, který byl oproti v té době běžným asi tak o dvě generace napřed.
No a u Javy speciálně podle mne sehrálo největší roli to, že za ní stála silná korporace.
Pokud jde o to původní OOP, tak z prakticky používaných a oblíbených jazyků se mu nejvíc blíží Objective C (podle githubu a počtu debat na stackoverflow je v první desítce jazyků) nebo Ruby (také v první desítce, takže bych netvrdil, že to nikdo nepoužívá, i když podobné statistiky je vždycky dobré brát s určitou rezervou).
Ovšem nic z výše uvedeného nemění nic na faktu, že objektově orientované programování je trošku něco jiného než Java. A že problémy, které jsou představovány jako problémy OOP, jsou ve skutečnosti problémy Javy. Jinou otázkou je, jak moc jsou ty problémy v praxi palčivé a nakolik jsou spíš akademické. Dalším nemilosrdným faktem je taky skutečnost, že průměrný program v Javě je stále mnohonásobně rychlejší a méně náročnější na paměť než program ve Smalltalku, ale i Objective C.
Možná tu budím dojem nějakého advokáta smalltalkovského OOP. Ve skutečnosti se jen pokouším vyvrátit určité předsudky a omyly ohledně OOP. Sám jsem se s "OOP" poprvé setkal u Turbo Pascalu a u Borland C++ na začátku 90. let, spolu se jejich slavným Turbo Vision, a celý ten koncept mi připadal takový nějaký zbytečný, obzvláště když člověk zná Xaw nebo GTK. Teprve na Smalltalku mi docvaklo, co se tím ve skutečnosti myslí a jaká "kouzla" se s tím dají dělat. Ale ne v C++ ani v Javě. Sám jsem moc příležitostí profesionálně se tím zabývat neměl, vlastně jen asi půl roku jsem měl co do činění s Objective C a s Cocoa, ovšem musím říci, že to byla celkem příjemná zkušenost. Jinak mě živí C++ a dříve sem tam i ta Java. Ale jako embeďák je to především to C++. A bohužel musím konstatovat, že ve většině případů, s nimiž se setkávám, bylo upřednostnění C++ před C nešťastným krokem, protože to žádný benefit nepřineslo. Jen samá negativa.