Niedawne wprowadzenie do Smalltalk uświadomiło mi zastosowanie i korzyści "czystego" stylu obiektowego. Wcześniej zauważyłem zalety tego w Ruby, chociaż obecność konstruktów zorientowanych na obiekt, nie zorientowanych na obiekt, wydawało się, że nie przenoszą one całego procesu.Jakie są jedne z najbardziej "czystych" języków obiektowych?
Mówiąc czysto, mówię o rzeczach takich jak "wszystko jest przedmiotem" (w tym funkcje za pośrednictwem bloków lub czegoś podobnego) i bez kontroli przepływu w stylu proceduralnym, zamiast tego za pomocą metod kontroli przepływu na kolekcjach booleans &.
Jednak nawet w języku takim jak Smalltalk niektóre rzeczy nie są obiektowe. Na przykład nie wydaje się możliwe wykonywanie przypisania zmiennych bez użycia specjalnej składni (: = zamiast "jest:" lub podobnej) i zwracanie wartości z funkcji wydaje się wymagać operatora ^, który nie wydaje się być przynależny "do dowolnego obiektu.
Czy są jeszcze języki, które noszą ten styl?
Jaka jest korzyść płynąca z czystości? Purity sprawia, że Haskell ma znacznie wyższą krzywą uczenia się niż inne języki funkcjonalne, ponieważ monady są tak trudne do zrozumienia z proceduralnego punktu widzenia. –
@Chris: Tak, ale monady są * niesamowite * gdy je otrzymasz. Z drugiej strony wydaje się, że to pytanie niesie ze sobą czystość o wiele dalej ... Oczywiście, można obniżyć wartości zwracane i zamiast tego wymagać tego rodzaju komunikacji, aby przejść przez stan obiektu (wywołać metodę, której rezultatem jest brak, a następnie użyć 'self.result'), ale jest powód, dla którego programiści zwykle starają się utrzymać wszystko w jak najmniejszej skali. Co więcej, złamałoby to łańcuch metod, ponieważ nie ma wartości zwracanej, chyba że zdefiniujesz jakąś właściwość obiektu, która będzie tą wartością, ale wracamy do magii. A lista jest długa. – delnan
Całkowicie rozumiem, że czystość w tym względzie może sprawiać, że rzeczy są bardzo szczegółowe i potencjalnie nieskuteczne, ale jest też znacząca korzyść w języku o bardzo małym i spójnym zestawie reguł. To powiedziawszy, chciałbym znaleźć język, który doprowadziłby do skrajności, nawet jeśli byłby to dobry przykład za dużo dobrego. – donalbain