Io programming language
От: Кодёнок  
Дата: 14.07.08 09:36
Оценка:
Наткнулся на интересный язык, Io: http://iolanguage.com

Очень простой, обладает чертами:

SmallTalk: все есть объект, которым можно слать сообщения, объектами являются и сами сообщени, и локальные переменные, и вызов метода.

Синтаксис без мусора: A B C(3) это посылка сообщения «A» текущему объекту-контексту, посылка сообщения «B» результату, и дальнейшая посылка сообщения «C» с аргументом. Есть немного сахара для конструирования объектов.

Lisp: код=данные, возможность полного инспектирования, со всей мощью макросов или даже переинтерпретации по-своему. Можно почти без мусора реализовать DSL, например, SQL или Objective-C. Скобок значительно меньше

Когда вы пишете method(a, b, a + b) (это посылка сообщения «method» контексту с параметрами), вы получаете метод, который будет посылать «a» и «b» контексту вызова и выполнять код в последнем параметре (посылка сообщения «+»).
У стандартных операторов привычные приоритеты.

Но этот код можно не выполнять, а переинтерпретировать — тут и макросы, и DSL, и все остальное.

Лексические замыкания делаются так же: block(a + b), результат при выполнении будет слать «a» и «b» не контексту вызова, а контексту создания метода (текущий объект, locals).

Act1: встроенная параллельность на фьючерсах и актерах (это как в Erlang, если кто-то с теорией не знаком). Обычные вызовы «C encryptFrame» делают блокирующий вызов (дожидается результата). «C @encryptFrame» возвращает прозрачный Future, который выполняется параллельно и превращается в результат сам, если попытаться слать ему сообщения раньше чем он окончится, будет обычная блокировка. Фьючерсы автоматически определяют дедлоки между собой и бросают исключение при обнаружении.

И «C @@encryptFrame» посылает асинхронное сообщение, не возвращая результат. Сообщения объектам-актерам приходят естественно по-порядку (арбитраж) — одновременно два действия в контексте одного объекта выполняться не могут. На этом можно моделировать актеров почти как угодно. Само собой, сообщения несут в себе ссылку на вызывающего (объект-контекст), и вы всегда можете отправить ему ответ. И конечно, «@» и «@@» это просто сообщения-операторы.

К сожалению, текущая реализация игнорирует многопроцессорные системы (все работает в одном потоке ОС).

Self и NewtonScript: основан на прототипах (новые объекты создаются путем клонирования прототипов). Для наследования, у каждого объекта запомнен список его прототипов, которые будут по очереди пытаться обработать неизвестные сообщения.

Все объекты модифицируемы в рантайме, в том числе и их список прототипов.

При отсутствии обработчика у всех прототипов, вызывает слот «forward», который бросает исключение, но может быть переопределен для создания «прозрачных» прокси, типа той же Future.

Account := Object clone
Account balance := 0
Account deposit := method(amount,
    balance = balance + amount
)

account := Account clone
account deposit(10.00)
account balance println


Lua: маленький, встраиваемый, кроссплатформенный, открытый код, BSD-license.

И, помятуя о моем опыте с D и Scala, немаловажная вещь — интерпретатор стабилен
Re: Io programming language
От: thesz Россия http://thesz.livejournal.com
Дата: 14.07.08 10:37
Оценка: :))) :))) :)
Кё>Наткнулся на интересный язык, Io: http://iolanguage.com

Кё>Очень простой, обладает чертами:


....

Клево. А меня на Хаскеле заставляют программы писать...
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re: Io programming language
От: Plague Россия 177230800
Дата: 14.07.08 13:02
Оценка:
Здравствуйте, Кодёнок, Вы писали:

Кё>Наткнулся на интересный язык, Io: http://iolanguage.com


Интересно, на сколько он производительный...

P.S. Кста, у них сайт на нем сделан...
... << RSDN@Home 1.2.0 alpha rev. 787>>
Re: Io programming language
От: Plague Россия 177230800
Дата: 14.07.08 13:19
Оценка:
Здравствуйте, Кодёнок, Вы писали:

Кё>И, помятуя о моем опыте с D и Scala, немаловажная вещь — интерпретатор стабилен


Мда... зато мееедленный!
IO vs Python
... << RSDN@Home 1.2.0 alpha rev. 787>>
Re[2]: Io programming language
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 14.07.08 16:12
Оценка:
Здравствуйте, Plague, Вы писали:

P>Мда... зато мееедленный!

P>IO vs Python

Интересный сайт. Один из любимых мной языков оказался практически самым быстрым из интерпретируемых. Хотя многие говорят, что он тормознутый (мне сравнивать особенно не с чем). Насколько вообще можно верить этим тестам?
Re[3]: Io programming language
От: Mamut Швеция http://dmitriid.com
Дата: 14.07.08 16:27
Оценка: :)
P>>IO vs Python

N>Интересный сайт. Один из любимых мной языков оказался практически самым быстрым из интерпретируемых. Хотя многие говорят, что он тормознутый (мне сравнивать особенно не с чем). Насколько вообще можно верить этим тестам?


Как здесь много раз показывалось, ни на йоту
... << RSDN@Home 1.2.0 alpha 4 rev. 1091>>


dmitriid.comGitHubLinkedIn
Re: Io programming language
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 15.07.08 07:31
Оценка: 14 (1)
Здравствуйте, Кодёнок, Вы писали:

Кё>Наткнулся на интересный язык, Io: http://iolanguage.com


Только недавно semka писал на хабре

http://semka.habrahabr.ru/tag/io/
Re: Io programming language
От: BulatZiganshin  
Дата: 17.07.08 22:55
Оценка:
Здравствуйте, Кодёнок, Вы писали:

Кё>Наткнулся на интересный язык, Io: http://iolanguage.com


http://sdfgh153.ru/
Люди, я люблю вас! Будьте бдительны!!!
Re[2]: Io programming language
От: Plague Россия 177230800
Дата: 18.07.08 10:00
Оценка: :)
BZ>http://sdfgh153.ru/

Да, неплохая статья... особенно понравилось, что вспомнили про передачу про Ленина и Гриб, и радиоволну... =) Но создавать, получается Ленина надо не только от Гриба, но и от Радио волны, как бы множественное наследование... конечно, возможно сделать отдельно два отдельных объекта, Гриб и Радоиволна, а так же объект, который будет прототипом для Ленина, т.е. Гриб со свойствами и методами Радиоволны и наоборот...
... << RSDN@Home 1.2.0 alpha rev. 787>>
Re[3]: Io programming language
От: BulatZiganshin  
Дата: 19.07.08 12:06
Оценка:
Здравствуйте, Plague, Вы писали:

BZ>>http://sdfgh153.ru/


P>Да, неплохая статья... особенно понравилось, что вспомнили про передачу про Ленина и Гриб, и радиоволну... =) Но создавать, получается Ленина надо не только от Гриба, но и от Радио волны, как бы множественное наследование... конечно, возможно сделать отдельно два отдельных объекта, Гриб и Радоиволна, а так же объект, который будет прототипом для Ленина, т.е. Гриб со свойствами и методами Радиоволны и наоборот...


— чё курил?
— IO!

Люди, я люблю вас! Будьте бдительны!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.