Hej,
Implementujecie dynamiczny język programowania w dynamicznym języku I nagle musicie dodać obiektowość. Jaki wybrać model obiektów? Oprzeć to na prototypach? Albo ma protokołach? Ktoś ma jakieś pomysły, materiały, argumenty za albo przeciw?
Hej,
Implementujecie dynamiczny język programowania w dynamicznym języku I nagle musicie dodać obiektowość. Jaki wybrać model obiektów? Oprzeć to na prototypach? Albo ma protokołach? Ktoś ma jakieś pomysły, materiały, argumenty za albo przeciw?
Użyłbym jak najbardziej abstrakcyjnego.
Czyli pewnie Smalltalk (znam tylko z opowieści).
Prototypy? Takie jak w JavaScript? To jest wygodne, ale wg mnie to nie jest czytelne rozwiązanie.
Protokołów w kontekście OOP nie znam, jeśli chodzi o komunikaty jak w Smalltalku to patrz wyżej.
Przez prototypy mam na myśli np. Js'a I łańcuch prototypów. Przez protokół coś jak w pythonie, obiekt to zbiór atrybutów, jeśli dostarcza wymagany_atrybut to np. Możesz po nim indeksować jak po tablicy, bo wszystko jest traktowane przez kompilator/interpreter jako ciąg wywołań funkcji.
Spojrzę na smalltalka I jak tam to ogarneli, bo nikt nawet o tym nie pomyślał.
Rzuć okiem na wspomniany Smalltalk, ale może warto też na CLOS (Common Lisp Object System).
Przeczytaj https://www.amazon.com/Theory-Objects-Monographs-Computer-Science/dp/0387947752 i wybierz coś, co pokryje wszystkie interesujące Ciebie przypadki (TLDR: prototypy z JS pozwalają na wszystko).
koszalek-opalek napisał(a):
Rzuć okiem na wspomniany Smalltalk, ale może warto też na CLOS (Common Lisp Object System).
Afish napisał(a):
Przeczytaj https://www.amazon.com/Theory-Objects-Monographs-Computer-Science/dp/0387947752 i wybierz coś, co pokryje wszystkie interesujące Ciebie przypadki (TLDR: prototypy z JS pozwalają na wszystko).
Znalazłm wykłady akademickie autorów książki. Na książkę z ciekawości będę polował. Tłumaczą obiektowość, problemy I strategie implementacji. Ciekawostka - przedstawiają rachunek obiektowy.
W projekcie ostatecznie skorzystaliśmy z miksu prototypów I protokołów.
Dziękuje za linka.