Však se to v různých API jiných jazyků také používá. Promise, Optional, Stream...
Benefitem je, že je sémantika navržená na míru toho API. Je zde tedy lepší čitelnost, idiomatický zápis obvyklých konstruktů a kratší kód. Samozřejmě, při špatném návrhu to může vést k opaku. Navíc to jsou do určité míry subjektivní hlediska, takže hodnocení dvou lidí se bude lišit.
Jo, tohle Smalltalkeři říkají často. Akorát s tím termínem přišla i Simula která vznikla ještě před Smalltalkem. A ty jiné objektové jazyky jako C++ nebo Java vycházejí právě ze Simuly.
Ono se není čemu divit. Slovo objekt se při modelování světa přímo nabízí. A taky je tak zatraceně vágní, že se pod ním může schovávat skoro cokoliv. Sám Kay se později vyjádřil, že to jméno zvolil fakt blbě.
"However, there was a need to obtain access to the
contents of an object from outside the object.
In a model containing "customers" and "clerks"
the active agent would need access to its own
data as well as those of the partner during
service" .
https://hannemyr.com/cache/knojd_acm78.pdf
10. 8. 2020, 18:10 editováno autorem komentáře
Uvedený dokument je sepsán dodatečně (sám to v 2. odstavci zmiňuje) až v roku 1978. Dle Kaye pochází jeho termín z roku 1967. Navíc „object“ a „object oriented“ (OO) asi nebude to samé.
JavaScript nemá nelokální return, takže plnohodnou náhradu řídících struktur takto nevyrobíte Když napíšete `(1 + 1 === 2).ifTrue(() => return "success")`, je to něco jiného než `if (1 + 1 === 2) return "success";`
Díky použití zpráv můžete vytvořit snadno snadno další varianty, které budou se stávajícími konzistentní (ifNil:, ifEmpty:, ifExists:, ifAbsent:, ifError:...) a bude to fungovat třeba i pro proxy objekty.
Ale tak nikdy nebudete schopni vytvořit třeba rozumně vypadající "guard clause".
Zprávy ifNil: a podobné můžete udělat i v jiných jazycích, ale pokud nebudou mít podporu pro nelokální návrat, bude to hodně dřít a stále to nebude konzistentní, protože ty jazyky mají speciální syntaxi pro řídící struktury (čest výjimkám, jako je Lisp a Forth).