Vřele doporučuji si přečíst ten původní linkovaný článek https://thenewstack.io/unix-co-creator-brian-kernighan-on-rust-distros-and-nixos/ . Ze zprávičky (ani z diskuse) to není vůbec patrné, ale on si především dělal ze všeho docela legraci.
Tak paradigma ako paradigma. Rust je multiparadigmový. Je funkcionlálny, imperatívny, a objektovo orientovaný*
Nové je použitie borrow checkera, ktoré nemajú používatelia ešte ceľkom zažité. Ak by som bol autorom živého programovacieho jazyka starého 50 rokov, tak by sa mi iný samozrejme zle používal.
*Nie tak ceľkom, miesto dedičnosti používa traits.(Črty?)
O tom by som sa dokázal hádať. Nás učili, že OOP by malo spĺňať:
1. Zapúzdrenie
2. Dedičnosť
3. Polymorfizmus
Ak by som bol veľmi tolerantný, tak trait je kind of dedičnosť správania. Ale za tvrdenie, že Rust podporuje OOP by som asi dostal poza uši. Dedičnosť by mala byť od nadtriedy (prípadne rodičovského objektu), nie vznikať symetrickou kompozíciou traitov.
Či je dedičnosť antipattern, o tom sa hádať nebudem. Skrátka patrí do svätej trojice. A som zastánca symetrickej kompozície (traits v tomto prípade).
Ani abstract classes nejsou nutnost. Osobně dědičnost považuju za syntax sugar, kterej se občas hodí, ale ve většině případů se zneužívá.
https://en.wikipedia.org/wiki/Composition_over_inheritance
Pro úplnost:
Základní čtyři kameny objektově orientovaného programování jsou:
1. Abstrakce - skrytí detailů, práce jen s podstatnými vlastnostmi objektu.
2. Zapouzdření - data a logika jsou uvnitř objektu, ven pouští jen to, co má (public rozhraní).
3. Dědičnost - možnost odvozovat nové třídy z existujících a přebírat jejich chování.
4. Polymorfismus - schopnost jedné metody/funkce mít různé chování podle kontextu (např. virtuální metody, přetížení).
Vypíchnu, že pro striktní OOP jazyky je dědičnost a polymorfismus základ - chování se odvozuje od společného předka, polymorfismus nahrazuje podmínkové větvení.
2. 9. 2025, 13:55 editováno autorem komentáře
Zapouzdření se dá dosáhnout například na úrovni modulu, jak je dobře vidět na příkladu Haskellu, který zřejmě málokdo nazve OOP jazykem. Metody na strukturách apod., které lze vidět třeba u Rustu, jsou pak v zásadě jen syntaktický cukr. OOP jazyk z Rustu nedělají, byť tedy nějaká inspirace tam určitě je.
Kay prezentoval OOP ako objekty, ktoré si medzi sebou vymieňajú správy, čo mi viacej pripomína actor model. Nakoniec to skončilo tak, že je treba používať selectory, čo sú zbastardelé procedúry navešané na objekt .... Pri všetkej úcte asi smalltalk bol skôr umenie možného, než ideálna implementácia.
Na "dědičnosti" v OOP je nejhorší její název, protože je naprostém rozporu s tím, co dědičnost znamená v biologii, evoluci a darwinismu. Buď je to chybné pojmenování už od počátku, nebo je to skrytá propagace kreacionismu. Protože kdyby biologická evoluce probíhala jako v OOP programování, tak by bůh věděl dopředu, jaké potomky bude do budoucna potřebovat, a podle toho pak nadesignoval jejich společné předky, a také naplánoval kdy a jak bude každý jeden druh mutovat. Protože takto se provádí analýza v OOP, ale v biologické evoluci to tak za posledních několik miliard let nikdy neprobíhalo.
IMO by bylo nanejvýš vhodné to v OOP přejmenovat. Říkat tomu místo dědičnosti nějakým vhodnějším termínem, třeba "odvozování" a "odvozenost". Metody by se nedědily, ale odvozovaly nebo přebíraly (override by zůstalo). Místo třídy-předka by byla třída-vzor, místo poděděné třídy by byla "třída odvozená" atd. Implementace by zůstala stejná - tabulka virtuálních metod pro každou třídu, strom tříd, který určuje, jak jsou tyto třídy od sebe odvozené. Případně "graf tříd" v C++.
Protože dost rozumím biologii, tak pokaždé když čtu nějakoku OOP analýzu, tak mám pocit, jako bych četl nějakou pavědeckou pambíčkářskou agitku, například "Vestiges of the Natural History of Creation" ( https://en.wikipedia.org/wiki/Vestiges_of_the_Natural_History_of_Creation ). A ono to není jen pavědecké, ono to zatemňuje myšlení.
Člověk který má i jen rudimentální znalosti biologie, genetiky a přírodního výběru (třeba proto, že ho v dětství fascinovali Dinosauři :-) má intuitivní porozumnění pojmu "dědičnost" nekompatibilní s jeho významem v OOP, a z toho plyne spousta problémů. Zejména vadné analýzy, vadný design stromů tříd, nesprávné použití objektových knihoven....