Язык программирования Оно

Оно́ — базовый язык Единой среды, а также средство описания самой ОС. Язык высокоуровневый, функциональный, чисто объектно-ориентированный, со средствами императивного программирования. Синтаксис языка — однопроходный, леворекурсивный. Примитивы языка соответствуют примитивам ядра ОС и хранятся в виде обратимого байт-кода. Из байт-кода ядром строятся планы выполнения, исполняемые платформой. Любые другие промежуточные представления в виде псевдоассемблера отсутствуют. 

Предпосылки создания языка 

Остерегайтесь трясин Тьюринга, в которых можно сделать всё, но ничего интересного нельзя сделать просто.
Алан Перлис — «Эпиграммы о программировании». 

Необходимость в собственном языке программирования продиктована следующими требованиями: 

Ключевые требования Единой среды к языку: 

Концепция обратимого байт-кода даёт теоретическую возможность создания национальных синтаксисов Оно, что учитывалось при проектировании языка. Текущая (базовая) версия основана на английских ключевых словах — такова сегодняшняя традиция, то есть требование WYTIWYG. 

Hello, world! 

Описание языков программирования принято начинать с программы «Hello, world!», выводящей означенное приветствие на экран. На языке Оно это будет так: 

ono  'Hello, world!';

Банально, не правда ли? Программисты сразу заметят, что строка заключена в апострофы, как делается во многих других языках. Смысл команды становится понятен, если записать её в полной форме: 

ono  select
    'Hello, world!'
  end;

В Оно ключевое слово select необязательно и может быть опущено при написании команды. 

Будучи выполненной из-под оболочки системы, команда вернёт строку ono'Hello, world!', в ответ на что оболочка найдёт класс, отвечающий за отображение строк, и с его помощью выведет строку на экран. Ближайший аналог — поведение phpMyAdmin. 

Командный и декларативный синтаксис 

Язык Оно имеет два синтаксиса — командный и декларативный: 

Не все операторы имеют полные эквиваленты в обоих вариантах, но оба синтаксиса можно произвольно комбинировать. На уровне ядра различий нет — эквивалентным операторам соответствуют одни и те же примитивы. При отображении байт-кода в виде исходного текста можно выбрать предпочитаемый синтаксис. Девиз языка: 

Функциональное программирование в привычном синтаксисе. 

WYTIWYG 

Для использования WYTIWYG на практике недостаточно заимствовать популярные ключевые слова или разметку. Нужны правила, как использовать знакомые средства в новой среде. Правил нужно немного, и они должны быть простыми и легко запоминаемыми. Например, в WackoWiki таковым стало правило двух символов

Перед Оно поставлено больше задач, чем перед WackoWiki, поэтому и правил WYTIWYG чуть больше: 

Некоторые следствия правил: 

Философия программирования в Единой среде 

Происхождение названия 

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

Название Оно возникло спонтанно и происходит от фразы: 

Оне Оберон (O is not Oberon) 

Языки Оберон и Оно стремятся к минимализму и простоте, но делают это по-разному. Оно выражает бо́льшую часть понятий императивного программирования через функциональное и объектно-ориентированное, ограничиваясь минимумом базовых понятий: контейнер, функция, класс, параметр, управляющий оператор, исключение. Остальные понятия, традиционные для императивных языков, — такие как константа, переменная или пространство имён, выводятся из базовых путём комбинации. Перефразируя известную формулу Вирта, можно сказать: 

Функции + контейнеры = операционная система 

Синтаксис Оно богат синонимами ключевых слов. Предполагается, что программисту, знакомому с любым Паскаль- или Си-подобным языком, или SQL, достаточно один раз прочесть описание Оно, чтобы начать на нём программировать. 

См. также 

Обсуждения