sortarray sortarray
sortarray sortarray личный блог
03 февраля 2019, 22:04

Очаровательный язык

Не так давно нарвался на потрясающий язык. Io(от инпут-аутпут, незнаю почему автор так его назвал, вообще название неудачное с тз маркетинга, потому что гуглится из-за этого плохо)

Автор Steve Dekorte

Очаровательный язык




Сайт языка 
iolanguage.com/

Комьюнити и инфраструктура слабые. Для реальной разработки, ИМХО, годится только в качестве клея.
Но в «академическом» плане, для саморазвития язык бесценен. Очень выразительный и [концептуально]простой язык, с чистейшим(прототипным) ООП. Почти все есть объект, кроме чисел, кажется. Но и числа не примитивы, обладают многими свойствами объектов. Сообщения — тоже объекты. Функции — объекты, причем, они там объекты в реальном смысле, а не просто в смысле first-class objects. То есть, функция получает сообщения, наследует и т.д.
Семантически напоминает Луа и Джаваскрипт, но превосходит их по фичастости и чистоте. Наследует идеологию Смоллтока, экстремально упрощая ее в духе Self
Язык медленный. Примерно сопоставим с Питоном
Есть ленивые вычисления, множественное наследование, поддерживает асинхронность и сопрограммы

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

Типизация сильная, динамическая

Вот пример паттерна Observer с вики

Observer := Object clone

Observable := List clone do(
   register := getSlot("push")
   notify := method(message, self foreach(observer, observer update(message)))
)
Newspaper := Observable clone do( addNews := method(news, notify(news)))

Citizen := Observer clone do(
   create := method(name, self clone lexicalDo(name := name))
   update := method(message, writeln( name .. " узнал следующее: " .. message))
)

newspaper := Newspaper clone

newspaper do(
   register(Citizen create("Иван"))
   register(Citizen create("Василий"))
   addNews("Наблюдатель - поведенческий шаблон проектирования")
)

#>>>> Иван узнал следующее: Наблюдатель - поведенческий шаблон проектирования
#>>>> Василий узнал следующее: Наблюдатель - поведенческий шаблон проектирования

Все возможности я перечислять не буду, подробности по вышеприведенной ссылке.
Наиболее силен язык именно в ООП, позволяет быстро строить сложные многоуровневые иерархии.
Хорошие возможности метапрограммирования.
Одно из самых интересных свойств — динамическое связывание имен.

Гуглить по запросу «iolanguage», иначе ничего не найдете

Язык крайне полезен для ознакомления тем, кто программирует на Луа, это поможет лучше понять модель исполнения и семантику Луа


19 Комментариев
  • Sofikhafi
    03 февраля 2019, 22:18
    Когда же появится язык конвертор, чтобы написать на кириллице " тот то объект должен сделать то-то" или это неисполнимо?
  • Storm Hold
    03 февраля 2019, 22:51
    Я бы лучше спросил, когда уже выйдем на нормальное визуальное программирование, без кодов. Мелкомягкие пытаются в свои проекты встроить, я бы даже сказал стараются, но пока до серьезных вещей далеко. Только плодят новые языки, от которых у аналитиков и экономистов, далеких от разработки уже мозг пухнет. 

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн