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

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

Неужели в Io устроили настоящий call by name?
Уточните, что имеете в виду. В смолтоке, селфе и руби то же самое.
Call by name
In call-by-name evaluation, the arguments to functions are not evaluated at all — rather, function arguments are substituted directly into the function body using capture-avoiding substitution. If the argument is not used in the evaluation of the function, it is never evaluated; if the argument is used several times, it is re-evaluated each time. (c) Wikipedia

В смолтоке совершенно традиционный call by value, правда, value может быть блоком. В руби почти так же, насчёт селфа не знаю.

Здесь же, если верить тексту, call by name бывает по умолчанию.

Тестовый пример:
pair := method(a, list(a,a))
pair(1 print)

Я так понимаю, напечатается "11" ?
Напечатает "1". А вот pair(method(1 print)) напечатает "11" потому что ты пишешь list(a,a), а не list(getSlot("a"), getSlot("a")) и метод активируется каждый раз, когда ты к нему стучишься.
Уххх. Это из серии BrainFuck или реально для чего то применяется?
Это экспериментальный язык, но некоторые его фичи соблазняют на серьезную работу. Например, сопрограммы (coroutines) и эффективные сетевые библиотеки позволяют писать эффективные сетевые приложения красивее, чем в Эрланге. Не говоря уже о том, что для объектного моделирования Ио гораздо удобнее, чем Эрланг. Но текущая реализация посылки сообщений в каждой затычке сжирает производительность в некоторых местах (Ио медленнее Руби раза в 2-3). Стив Декорте думает над Io Lite, версией для LuaJIT без ленивого выполнения аргументов, но с блоками, как синтаксической единицей. Я же думаю о том, как бы оптимизировать Ио в рамках текущей концепции.
тоже возник такой вопрос, когда извилины узлом завязались
Мозг вскипел.
Я люблю это ощущение, большое спасибо автору :)
Забавно. Подростки переосмысливают ООП в духе - мы Буча не читали, но свое придумаем и скажем, по своему обзовём, войдём в историю...

Если наберётся ещё достаточное количество чайников не способных промыслить базовые принципы то оно и прокатит. Наивные безграмотные чудики не способные промыслить концепцию. Бла-бла-бла... вставили пробел... бла-бла-бла... Интроспекция вызова... бла-бла-бла... создает специальный объект Locals...

Ребят, вы если действительно понимаете основные базовые принципы, то напишите вменяемый текст, чётко и внятно описывающий новые достижения. Ото эти мутные примеры в духе ...Если нужный слот нигде не найден, то запускается поиск слота forward... Мне абсолютно всё равно поиск какого слота там запускается. Я не пишу на этом языке, но я хочу уловить мысль. Мне может и интересно, но научитесь писать вменяемым языком. Я читал предыдущие статьи, но таки и не понял ключевую мысль. Сакцентируйтесь на этом, а не перечисляйте названия операторов. Я, по своей простоте, полагаю, что для большинства людей это сейчас бесполезно.

Эти вот ваши ...мы можем манипулировать кодом как нам угодно: передавать, хранить, выполнять в произвольных контекстах...
Не поверите, но я тож манипулирую кодом как мне угодно... передаю, храню, выполняю в произвольном контексте...

Грубо говоря - прочтите фундаментальный учебник ООП и чётко и внятно изложите в чём есть достижения. Если уж хотите пропагандировать... Да. :-)


PS: Бля, как же серёзно глючит Хабр. Стыдно за него.
Действительно придумывание "новых" концепций на базе уже существующих - извращенство. Речь идет именно о концепциях.
Суть проекта Ио в том, чтобы обобщить многие известные концепции и сделать язык максимально чистым. Например, выкинуть понятие глобальных, статических переменных, член-переменных, локальных переменных взамен слотов. Выкинуть понятие классов, метаклассов и лексических контекстов взамен иерархии прототипов. Любое действие — посылка сообщения, любое выражение — элемент дерева сообщений, доступный для исследования и модификации в рантайме (привет лиспу). Плюс, приятные фишки типа сопрограмм, асинхронного ввода-вывода и встраиваемой виртуальной машины.

А после проделанной унификации поиграться и посмотреть, насколько удобно с помощью Ио моделировать известные задачи, а также какие новые задачи или новые подходы можно произвести на свет с его помощью. Сами ингредиенты стары как мир, но в таком почти безкомпромиссном замесе смотрятся свежо и интересно.

Разжевывающий тон статьи употреблен намеренно, чтобы быть понятым теми, кто на лекции не ходил и Буча не читал. Что касается зауми, то меня лично интересует адаптивная оптимизация виртуальной машины Ио и литература подобная этой: http://www.cs.ucsb.edu/~urs/oocsb/papers…
Понимаете, тусовать набор возможностей, вырванных из разных языков, в надежде получить новый удобный язык, дело несложное, но достаточно неблагодарное. Вариантов уж очень много. Посему принято иметь концепцию, которую нужно уметь чётко пояснить (защитить, по сути). Не просто перечислить что было перетасовано, а внятно пояснить ЗАЧЕМ это было сделано. очертить какие преимущества и в каких случаях дают те или иные возможности (или мешают, если вы их убираете). К примеру, руль в автомобиле можно поставить сбоку, педали сзади, а зеркала на уровне бампера. Всё это обозвать крутым концепт-каром и пытаться ездить, поглядывая какие-такие преимущества это привнесло в процесс вождения. Одно из преимуществ видно сразу – греющий пятки экстрим и драйв в вождении. :-)

Этому процессу очень хорошо помогает осмысление того, с какой целью изменяемые возможности были введены в уже существующие языки и каких преимуществ от этого добилось прогрессивное человечество в процессе эволюции. :-)

Скажу больше, в глобальном смысле, в большинстве случаев цель одна – помочь справиться со сложностью систем. Посему, когда вы говорите ... выкинуть понятие глобальных переменных... это понятно и альтернативные варианты легко обосновываются. Когда вы говорите ...выкинуть понятие классов... то хочется спросить, а чем же ваш одинавсеслучаи-класс-объект-мутант лучше? Классы, это дополнительный уровень абстракции, причём отражающий специфику мышления человеческого мозга (мы классифицируем окружающие предметы). Имея классы, можно в пять секунд сэмулировать вашу концепцию. Достаточно ввести один класс на всё приложение, снабдить его парой динамических структур и пихать в них всё что вздумается.

Вуаля, типизации больше нет. Нет больше телевизоров, табуреток и унитазов. Есть один предмет обихода – мутант, который может выполнять все функции. Натыкаясь на него в темноте будете путём сообщений выяснять в каком он сейчас статусе. То ли его включить, то ли в него помочиться. Но забавно и прикольно, только зачем нужно в подавляющем большинстве случаев? Сталкеризм видимо весёлое развлечение, но не в промышленных масштабах. В масштабах цивилизации это называется словом хаос.

С передачей сообщений примерно такая же картинка (вызов метода, кстати, если абстрагироваться, также не более чем передача сообщения). Легко моделируется там где надо, а где не надо – используется простой и понятный подход. Который к тому же намного более эффективен.

Посему я и написал, что такие перетасовки не более чем забавное хобби. Ну или вы способны именно пояснить преимущества новых вещей, сопоставив с тем что уже есть, и почему вам кажется, что это действительно удобней, эффективней, безопасней и позволит вам реализовывать более сложные системы. Просто же описывать механику работы вряд ли целесообразно. Это как описывать каким болтом укрепить руль сбоку на двери, не пояснив предварительно зачем и кому это нужно.
Разумеется, выкидывание классов, локальных переменных и других вещей, необходимых для моделирования реального мира, не идет на пользу проектированию в промышленном масштабе.

Смысл Ио не в том, чтобы получить инструмент для эффективного моделирования реальности, а для того, чтобы исследовать языковую унификацию. Как токи пона. Да, это хобби, а не инструмент для решения какой-то жизненной задачи. Иногда имеет смысл пошалить, чтобы посмотреть что получится и сделать выводы.
Супербизон! Но молодежи надо давать баловаться, им нужны достижения. Хотя с другой стороны эти самоутверждающиеся личности часто становятся в нашем гребанном айти руководителями и всякими архитекторами и уже реально портят реальным людям реальную кровь.
Портят кровь глупые люди, а не просто все, кто играется. Умные поиграются и вычленят важное.
Чем-то это система напоминает регистры процессора.
Тем, что и то, и другое — красное? оО
Олег, добрый день!
Подскажите, пожалуйста, как с Вами можно связаться кроме как по почте.
Есть предложение о работе).
gtalk/email oleganza at gmail.com
skype olegandreev1986
постучалась в скайп)
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории