Previous Entry Share Next Entry
2016-01

a become: b

http://gbracha.blogspot.com/2009/07/miracle-of-become.html

таааак, ну я конечно никогда не утверждал что знаю Smalltalk, но блин, почему я не видел это раньше

This entry was originally posted at http://wizzard.dreamwidth.org/465496.html. It has comment count unavailable comments. Please comment there using OpenID.

  • 1
_winnie March 10th, 2016
nice!
Рассказываешь всем, что иммутабельность это хорошо и менять значение переменной это плохо, и тут видишь что существует вот такое :)

sorhed March 10th, 2016
(Кроме того, в смоллтоке можно менять динамически иерархию наследования, переопределять сложение, менять глобально true на false и вообще вести себя непринуждённо).

Ограничения в голове, Нео.

sorhed March 10th, 2016
True на false я, конечно, пробовал менять, а сделать (Random nextInt: 1) > 0 уже не догадался, а сейчас ради этого ставить смоллток лень.

Очень интересная информация, но подход мне кажется тупиковым.
Во-первых, можно часто вообще избегать работы с идентичностью, и оставаться в рамках value-семантики. Во-вторых, непонятно как сослаться на объект из-за пределов программы (как пример, клиент передает серверу команду на изменение объекта, или если надо сохранить часть состояния программы на диск).

sab123 March 10th, 2016
Не так сложно реализовать в поризвольном языке, всех делов - добавить еще один уровень ссылок (который в Смоллтоке согласно описаниб состоит в таблице объектов). То есть, хранить ссылки не прямо на объект, а на "ручку" к нему, которая будет ссылаться на собственно объект. В нужный момент менять объект под ручкой.

jakobz March 10th, 2016
Так в динамическом языке можно просто сам объект поменять - досыпал ему полей и всё. Непонятно зачем нужно создавать новый и перебивать на него ссылки.

kodt_rsdn March 11th, 2016
mice become: hedgehogs

Смолтачи знатные извращенцы. Просто интересно, как вот именно эту фичу они выдумали. Неужели просто "потому что могут"? Сидели и глядели, что следует из двойной косвенности, и эврика? Двойную косвенность, кстати, выдумали от большой нужды на машинах с маленьким ОЗУ.

nivanych March 11th, 2016
Нууу, переименование есть, так этого уже достаточно.
А переименование обосновать как-то проще, что ли...

  • 1
?

Log in

No account? Create an account