Блог им. sortarray

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

Не так давно нарвался на потрясающий язык. 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», иначе ничего не найдете

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


★2
19 комментариев
Когда же появится язык конвертор, чтобы написать на кириллице " тот то объект должен сделать то-то" или это неисполнимо?
avatar
Sofikhafi, есть проекты на кириллице, но они любительские, и не особо развиваются.
Есть еще 1С:)
avatar
sortarray sortarray, а что 1с? Можно поподробнее? Хотя вроде действительно в конфигурации там можно писать по-русски. Только я говорю про конвертор на язык, типа Ява, си и пр
avatar
Sofikhafi, Просто в 1C код пишут на кириллице, по-русски.
Но это была шутка, это не то, что Вы имели в виду, как я понял

Типа такого там

<code class=" 1c">Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
	
	ОтраженоВОперУчете           = Истина;
	ОтражатьВБухгалтерскомУчете  = Истина;
	ОтражатьВНалоговомУчете      = Истина;
	
	Если НЕ ДокументОснование = Неопределено Тогда
		ЭлементыФормы.Проект.Значение = ДокументОснование.Проект;
	КонецЕсли;	
		
КонецПроцедуры // ПередОткрытием()</code>
avatar
Sofikhafi, в том виде, в котором Вы имеете в виду, видимо, в обозримом будущем неисполнимо, потому что это должно быть что-то сопоставимое с человеческим интеллектом:)
С другой стороны, это и не приветствуется особо, потому что естественный язык грамматически слишком свободен, а в разработке наоборот стараются избегать неоднозначности интерпретации слов, чтобы избежать ошибок
avatar
sortarray sortarray, но ведь можно договориться о терминологии и способа построения команд. Вообще-то с моей обывательской точки зрения, для нынешнего развития кодирования и возможностей железа это вполне решаемая задача, но видно пока время не пришло-запроса общества нет
avatar
Sofikhafi, Ну, если договариваться о способе построения команд, то чем это будет отличаться от обычных языков программирования? Только тем, что на кириллице написано и по русски? Тогда 1С самое то:)
avatar
sortarray sortarray, ну не скажите, все таки машина пока понимает только 1 и 0 или нет?
avatar
Sofikhafi, это относится не к языку, а к архитектуре ЭВМ. Просто ячейка памяти машины имеет 2 состояния. Цифры эти в смысле чисел ничего не значат
avatar
sortarray sortarray, что-то я совсем темная. Я думала
avatar
Sofikhafi, Ну, в общем то, «1-0», это тоже можно считать «языком», грубо говоря, это язык для заполнения регистров, он ниже ассемблера, и содержит 2 команды. Но фактически на этом «языке» никто не пишет, обычно в этот «язык» происходит трансляция из ассемблера. Ассемблеры — это самые низкоуровневые языки, на которых все еще пишут руками, но в наше время это уже редкость.
Обычные языки абстрагируют машинный уровень, они выглядят как команды-слова, или более сложные выражения
avatar
sortarray sortarray, скажу коротко и просто: спасибо. Кое-что в моих темных мозгах подсказывает, что между высокоуровневые и и низкоуровневыми языками давно существует свой код, который заложен уже, может на уровне операционной системы. Ужасно радуюсь, когда по крохам закрываю свои вопросы по теме столь далёкой от меня, но заманчивой. Так что ещё раз спасибо.
avatar
Я бы лучше спросил, когда уже выйдем на нормальное визуальное программирование, без кодов. Мелкомягкие пытаются в свои проекты встроить, я бы даже сказал стараются, но пока до серьезных вещей далеко. Только плодят новые языки, от которых у аналитиков и экономистов, далеких от разработки уже мозг пухнет. 
avatar
Storm Hold, а приведите пример визуального программирования, что вы имеете в виду?
avatar
Sofikhafi, работаешь конструктором — нажимаешь кнопки, выбираешь действия, последовательность запоминается и затем воспроизводится. Обычно конструктор сам код и генерит. Это пример по скриптам. Визуалку конструкторами делать вроде научились.
avatar
Storm Hold, Я думаю, что это возможно только для узких специализаций. К примеру, есть язык «Дракон», который используют инженеры-электронщики в Роскосмосе.
Для полноценной разработки визуальное программирование не подойдет.
К тому же, это неизбежно приведет к снижению надежности ПО
avatar
sortarray sortarray, к середине 30-х вроде бы прогнозировали. Когда-то ведь тоже на перфокартах все было. Главное что потребность в этом все ощущают. Думаю, что в итоге кодить станет узкой специализацией, для чего-то глобального и системного.
avatar
Storm Hold, Наверное так. Тенденции к этому и так есть, да.
Вообще любая индустрия всегда стремится к максимальному разделению труда, тут то же самое, как токари-универсалы заменяются операторами ЧПУ.
Сейчас большинство разработчиков не универсальны, а используют определенный набор инструментов. Иногда это сводится к различному комбинированию библиотек, и собственно программирования там очень мало
avatar
Storm Hold, я думаю это надо для удовлетворения эго. В каждом языке есть что-то уникальное. Иначе вряд ли возможен прогресс. Но для утилитарных целей можно было бы конечно дать госзаказ на разработку таких конструкторов
avatar

теги блога sortarray sortarray

....все тэги



UPDONW
Новый дизайн