Как стать автором
Обновить

Комментарии 22

хабракат не помешает
сделано, простите
хорошо что он идет по пути smaltalk, но последний всё же шире, да и роднее.
На счет шире не уверен, io это такой маленький Smalltalk с человеческим синтаксисом. В некотором роде io даже больше Smalltalk, чем сам Smalltalk. Тут нет вообще ни одного зарезервированного слова, все — объект. (Хотя по правде, io выгодно отличается от ST именно синтаксисом) (:
в смалтолке параметры функций именованные, а в йо — идут сплошной простынёй. у примитивных абстракций большие проблемы с читабельностью, поддерживаемостью и выразительностью нетривиальных вещей.
Именованные параметры это простите что?

setSomeObjectsWidthTo: width AndHeightTo: height;

Так? Я кроме ST такое только в ObjC видел и в лиспе. Чем плохо:

setSomeObjectWidthAndHeight := method(width, height, ... )


/нудеж/: в ST нет функций, там МЕТОДЫ, блеять.
тем, что по вызову obj.callMyMethod( true, true, false, 1 ) совершенно не понятно, что происходит и если позарез нужно указать последний параметры, а остальные — нет, всё-равно придётся заполять их нуллами.

именованные параметры есть в питоне, руби, яваскрипте, ада

community.livejournal.com/ru_dmitriid/2388.html

/нунадож/: какая наxyй разница?
А, дошло про именованные параметры. Да, есть такое.
Вобще надо как-нибудь под пиво придумать как их реализовать в io, потому что риальни гламурни удобни фича.
Ну и про примитивные абстракции тоже поподробней, а то я нихтферштейн совершенно пока.
НЛО прилетело и опубликовало эту надпись здесь
А тут ничего особо сложного нет, прототипы призваны обеспечить высокую мутабельность свойств объектов без механизма наследования. Это имеет смысл, во-первых мы отказываемся от понятия «класс», получая в замен готовый к использованию объект. Во-вторых наследование зачастую сильно усложняет логику программы мешая чтению исходников. А тут все просто:
«Авраам родил Исаака; Исаак родил Иакова; Иаков родил Иуду и братьев его»
Abrahaam := Object clone
Isaac := Abraham clone
Iakow := Isaac clone
Judas := Iakow clone
JudasBrothers := Iakow clone


Как-то так.
у наследования через классы и наследования через прототипы нет принципиальной разницы. всё одно:
у авраама был тик, у исаака был тик и колики, а у бедного иуды ещё и понос…
Ну а что поделать.
Основной посыл таков: это не лучше, это по-другому.
Да нет никаких плюсов. Можно точно так же писать на ruby:

irb(main):001:0> class A; end
=> nil
irb(main):002:0> B = A.clone
=> B
irb(main):003:0> class B; def hello; puts "hello"; end; end
=> nil
irb(main):004:0> B.new.hello
hello
=> nil
irb(main):005:0> A.hello
NoMethodError: undefined method `hello' for A:Class
from (irb):5

А теперь найди 10 отличий между class B < A и B = A.clone.
Ну насчет 10 отличий, я конечно погорячился, отличия есть :)
А вот такой вопрос — я так понимаю, что Python тоже может работать как prototyped? Ну в смысле функцию clone написать это же просто достаточно с его средствами интроспекции.
Если трамвай поставить на дебаркадер — он сможет плыть по воде!
Извините, но не удержался:

Исходники io я посеял, а эти двое упырей сказали, что особой ценности в нем и небыло
Вам помогло магическое число 42, ничего удивительного.
Io — это сила. Особенно с учётом того, что можно намутить сверх.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории