Яр (язык программирования) — различия между версиями
Материал из ТХАБ.РФ
м |
м |
||
Строка 85: | Строка 85: | ||
[[Категория:Язык программирования]] | [[Категория:Язык программирования]] | ||
[[Категория:Язык программирования с русским синтаксисом]] | [[Категория:Язык программирования с русским синтаксисом]] | ||
− | [[Категория:Яр | + | [[Категория:Яр]] |
[[Категория:Лисп]] | [[Категория:Лисп]] | ||
[[Категория:LISP]] | [[Категория:LISP]] |
Версия 20:57, 8 февраля 2018
Язык программирования Яр
- Яр - это русскоязычный универсальный язык программирования
- Яр строится на платформе языка "искусственного интеллекта" 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)
Что будет сделано
- методы
- декораторы
- исключения
- модули
- параметрические типы, вариантность
- стандартные контейнеры
- лямбды
На данный момент исправляются ошибки вывода типов в платформе.