Яр (язык программирования) — различия между версиями

Материал из ТХАБ.РФ
Перейти к: навигация, поиск
м
м
Строка 1: Строка 1:
 +
Язык программирования Яр
 +
 +
* Яр - это русскоязычный универсальный язык программирования
 +
* Яр строится на платформе языка "искусственного интеллекта" 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)
 +
== Что будет сделано ==
 +
* методы
 +
* декораторы
 +
* исключения
 +
* модули
 +
* параметрические типы, вариантность
 +
* стандартные контейнеры
 +
* лямбды
 +
На данный момент исправляются ошибки вывода типов в платформе.
 
== Ссылки ==
 
== Ссылки ==
 
* [http://программирование-по-русски.рф/яр.яргт Официальный сайт Языка программирования Яр]
 
* [http://программирование-по-русски.рф/яр.яргт Официальный сайт Языка программирования Яр]

Версия 20:52, 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)

Что будет сделано

  • методы
  • декораторы
  • исключения
  • модули
  • параметрические типы, вариантность
  • стандартные контейнеры
  • лямбды

На данный момент исправляются ошибки вывода типов в платформе.

Ссылки