А тут ничего особо сложного нет, прототипы призваны обеспечить высокую мутабельность свойств объектов без механизма наследования. Это имеет смысл, во-первых мы отказываемся от понятия «класс», получая в замен готовый к использованию объект. Во-вторых наследование зачастую сильно усложняет логику программы мешая чтению исходников. А тут все просто:
«Авраам родил Исаака; Исаак родил Иакова; Иаков родил Иуду и братьев его»
Abrahaam := Object clone
Isaac := Abraham clone
Iakow := Isaac clone
Judas := Iakow clone
JudasBrothers := Iakow clone
На счет шире не уверен, io это такой маленький Smalltalk с человеческим синтаксисом. В некотором роде io даже больше Smalltalk, чем сам Smalltalk. Тут нет вообще ни одного зарезервированного слова, все — объект. (Хотя по правде, io выгодно отличается от ST именно синтаксисом) (:
Какая удивительно отвратительная заправская херня в духе «Ойамывсеумриом!».
Выражение лица попороще, поменьше «профессиональных ужасающихся психологов» и побольше внимания детям. Не в мультиках дело, а родителях.
И даже более впечатляющий пример удаленной отладки произошел в миссии NASA «Deep Space 1» в 1998 году. Через полгода после запуска космического корабля, небольшой код на Lisp должен был управлять космическим кораблем в течении двух дней для проведения серии экспериментов. Однако, неуловимая race condition в коде не была выявлена при тестировании на земле и была обнаружена уже в космосе. Когда ошибка была выявлена в космосе (100 миллионов миль от Земли) команда смогла произвести диагностику и исправление работающего кода, что позволило завершить эксперимент.
Epic Fail. В Смолтоке небыло прототипного ооп.
Вы когда-нибудь что-либо крупное на lisp'е писали? Я вот писал, знаете, ничего удобнее REPL еще не придумали для отладки, можете погуглить историю, как люди дебажили lisp код находящийся в глубоком космосе. А пространства имен можно запортачить и в java, нужно просто понимать что ты делаешь, вот и все.
Заменя . -> и прочего мусора на " " обусловлена двумя факторами: 1. Наследие Smalltalk'а (А там именно так) 2. Стремление максимально упростить синтаксис.
А в остальном я с вами даже соглашусь, хотя вы сами пишете о том, что вызов метода --- обертка над асинхронным сообщением, тут мы минуя обертку получаем что хотим и все дела (:
Здраво, но по факту мы имеем кривую реализацию вызова и хотя бы отдаленно прямую реализацию посылки сообщений.
Сообщения, по-моему, более человекоподобны, все-таки.
Что, действительно непонятно? А если reciever object у меня на другой ноде? А если он динамически изменяется? Все еще непонятно?
Сообщение посылается удаленному объекту, а метод вызывается. Система сообщений по своей природе распределенная, сообщения проще сделать асинхронными и организовать поверх них модель актеров. Посмотрите вот эту презентацию Стива Декорте, что бы понять о чем я: http://iolanguage.com/docs/talks/2006-10…
1. В общих чертах, внешне --- ничем. Внутреннее это другой подход (по-моему интуитивно понятно в чем разница) Если интересно почитайте статью про Smalltalk в википедии, там, вроде бы неплохо описано.
2. Классов с одинаковыми названиями в рамках одной сессии работы интерпретатора не бывает. (Я кстати опечатался, классов вообще не бывает, бывают только объекты)
«Авраам родил Исаака; Исаак родил Иакова; Иаков родил Иуду и братьев его»
Как-то так.
Выражение лица попороще, поменьше «профессиональных ужасающихся психологов» и побольше внимания детям. Не в мультиках дело, а родителях.
Так оно как-то спокойнее (:
(c) PCL (http://pcl.catap.ru/doku.php?id=pcl:%D1%…)
Вы когда-нибудь что-либо крупное на lisp'е писали? Я вот писал, знаете, ничего удобнее REPL еще не придумали для отладки, можете погуглить историю, как люди дебажили lisp код находящийся в глубоком космосе. А пространства имен можно запортачить и в java, нужно просто понимать что ты делаешь, вот и все.
А в остальном я с вами даже соглашусь, хотя вы сами пишете о том, что вызов метода --- обертка над асинхронным сообщением, тут мы минуя обертку получаем что хотим и все дела (:
Сообщения, по-моему, более человекоподобны, все-таки.
Сообщение посылается удаленному объекту, а метод вызывается. Система сообщений по своей природе распределенная, сообщения проще сделать асинхронными и организовать поверх них модель актеров. Посмотрите вот эту презентацию Стива Декорте, что бы понять о чем я: http://iolanguage.com/docs/talks/2006-10…
2. Классов с одинаковыми названиями в рамках одной сессии работы интерпретатора не бывает. (Я кстати опечатался, классов вообще не бывает, бывают только объекты)