Comments 22
хабракат не помешает
хорошо что он идет по пути smaltalk, но последний всё же шире, да и роднее.
На счет шире не уверен, io это такой маленький Smalltalk с человеческим синтаксисом. В некотором роде io даже больше Smalltalk, чем сам Smalltalk. Тут нет вообще ни одного зарезервированного слова, все — объект. (Хотя по правде, io выгодно отличается от ST именно синтаксисом) (:
в смалтолке параметры функций именованные, а в йо — идут сплошной простынёй. у примитивных абстракций большие проблемы с читабельностью, поддерживаемостью и выразительностью нетривиальных вещей.
Именованные параметры это простите что?
Так? Я кроме ST такое только в ObjC видел и в лиспе. Чем плохо:
/нудеж/: в 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й разница?
именованные параметры есть в питоне, руби, яваскрипте, ада
community.livejournal.com/ru_dmitriid/2388.html
/нунадож/: какая наxyй разница?
Ну и про примитивные абстракции тоже поподробней, а то я нихтферштейн совершенно пока.
А тут ничего особо сложного нет, прототипы призваны обеспечить высокую мутабельность свойств объектов без механизма наследования. Это имеет смысл, во-первых мы отказываемся от понятия «класс», получая в замен готовый к использованию объект. Во-вторых наследование зачастую сильно усложняет логику программы мешая чтению исходников. А тут все просто:
«Авраам родил Исаака; Исаак родил Иакова; Иаков родил Иуду и братьев его»
Как-то так.
«Авраам родил Исаака; Исаак родил Иакова; Иаков родил Иуду и братьев его»
Abrahaam := Object clone Isaac := Abraham clone Iakow := Isaac clone Judas := Iakow clone JudasBrothers := Iakow clone
Как-то так.
Основной посыл таков: это не лучше, это по-другому.
Да нет никаких плюсов. Можно точно так же писать на ruby:
А теперь найди 10 отличий между
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
.А вот такой вопрос — я так понимаю, что Python тоже может работать как prototyped? Ну в смысле функцию clone написать это же просто достаточно с его средствами интроспекции.
Извините, но не удержался:
Исходники io я посеял, а эти двое упырей сказали, что особой ценности в нем и небыло
Исходники io я посеял, а эти двое упырей сказали, что особой ценности в нем и небыло
Вам помогло магическое число 42, ничего удивительного.
Io — это сила. Особенно с учётом того, что можно намутить сверх.
Sign up to leave a comment.
Io Language: Метапрограммирование