2011-08-29 11 views
11

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?

+0

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. –

+2

@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

+1

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

Odpowiedz

8

Jak długi czas Smalltalker I (w porównaniu do wielu innych odpowiedzi tutaj) zrozumieć to, czego po - a „ja” język nie iść trochę dalej, przy najmniej jeśli chodzi o zadania. Nie będąc zaprogramowanym samodzielnie, nie mogę tego skomentować dalej. Innym nowszym językiem podobnym do siebie jest Slate, również prototypowy, a także wykorzystuje wysyłanie wiadomości do zadań.

2
+2

Smalltalk został omówiony i odrzucony w pytaniu. Ruby jest znacznie bardziej hybrydowy niż Smalltalk (na przykład ma funkcje funkcjonalne, takie jak 'call/cc'). Przeczytaj pytanie. – delnan

+0

To połączenie jest w rzeczywistości doskonałym zasobem. – donalbain

+0

to był świetny zasób dziesięć lat temu. Java ma generics od około 2003. – fdreger

Powiązane problemy