Язык программирования Яр
- Яр - это русскоязычный универсальный язык программирования
- Яр строится на платформе языка "искусственного интеллекта" Common Lisp, подобно тому, как Kotlin - на платформе JVM или F# - на платформе .Net
- Программы на Яре быстры и быстро запускаются (прекомпиляция в двоичный код) и надёжны (сборка мусора, статическая типизация)
- "Горячая замена кода" позволяет менять программу без её перезапуска. Например, можно будет добавлять в классы новые поля, а в функции - новые параметры. Это ключевое преимущество Яра перед другими языками, которое присуще используемой платформе Common Lisp
- Возможная область применения такая же, как у C# или Java
- язык и кроссплатформенная среда разработки выпущены под лиценией MIT - можно без ограничений встраивать в коммерческие приложения
Пример кода
/// классы больше похожи на структуры, чем на классы С++
опр класс Па () тело
Поле1 // поле может содержать произвольный объект
кно // кно - сокращение от 'конец опр'
/// Есть наследование
опр класс Сы (Па) тело
/// У поля есть тип и значение по умолчанию
Поле2 -- л-строка = "Значение по умолчанию"
кно
/// 'ПаₒИмя' - это просто идентификатор
опр функ ПаₒИмя(Я -- Па)
тело
л-печать("Я - Па")
л-печать(Я.Поле1)
кно
опр функ СыₒИмя(Я -- Сы)
тело
л-печать("Я - Сы")
л-печать(Я.Поле1)
пусть П2 = Я.Поле2
если не П2 == "Значение по умолчанию" то
л-печать(П2)
кне // сокращение от 'конец если'
кно
/// Яр выполняет определения по одному,
/// а идущие подряд несколько функций определяет за одно действие.
/// Если нужно разбить группу функций, то применяется эта конструкция.
Сохрани-результат-компиляции()
опр функ Тест ()
тело
/// родись - это аналог new или create
пусть П = родисьₒПа(Поле1 = "1")
// есть вывод типов, но есть и явное указание типа
пусть С -- Сы = родисьₒСы(Поле1 = "2")
П.Имя()
С.Имя()
кно
/// Функция Тест вызывается во время выполнения скрипта
Тест()
Реализовано
- неопубликованное описание языка на ~90 страницах
- работающий прототип транслятора
- реализованы функции, классы, некоторые управляющие конструкции, возможость вызова функций платформы
- работающая среда разработки - разработка Яра ведётся в этой среде
- раскраска исходных текстов, подсветка грамматических ошибок, переход к определению, автодополнение имён
- пошаговый отладчик с отображением стека и локальных переменных
- интерактивный вычислитель (REPL)
Что будет сделано
- методы
- декораторы
- исключения
- модули
- параметрические типы, вариантность
- стандартные контейнеры
- лямбды
На данный момент исправляются ошибки вывода типов в платформе.
См. также
Ссылки