🏠  > Язык программирования «Яр»

О проекте

  • Яр - это русскоязычный универсальный язык программирования
  • Яр строится на платформе языка "искусственного интеллекта" 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)

Предстоит сделать

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

На данный момент мы столкнулись с тем, что, несмотря на множество заявленных и во многом работающих режимов SBCL, проблемы с качеством этой платформы весьма велики. Чтобы надёжно справляться с такими задачами, нужно на порядок больше ресурсов, чем у нас есть. Кроме того, выделенные на данный проект средства подошли к концу. Есть и ещё одна проблема: выбранные нами технологии хороши, но крайне непопулярны. Поэтому, наряду с медленной работой по улучшению качества данной реализации, мы ищем новые пути. Например, мы рассматриваем возможность перезапуска проекта на базе различных реализаций Scheme, Black Box Component Builder, JavaScript v8 или Golang.

Вопрос-ответ

В: В мире тысячи языков программирования. Зачем ещё один?
О: Да, в мире тысячи языков, но именно в последние годы крупные фирмы агрессивно внедряют свои совершенно новые языки, и, что самое главное, у них получается. Имеют явный успех Rust, Golang, Swift, Typescript, Kotlin. Задайте этот вопрос 'зачем' любой из этих организаций: Mozilla Foundation, Google, Apple, Microsoft, Jetbrains. У Яра тоже есть своя изюминка, даже две. Если нам поможет сильная организация, то получится хороший продукт.

В: Почему вы не публикуете описание языка?
О: Мы не хотим, чтобы вышеперечисленные могущественные организации украли наши идеи. Зато мы публикуем исходные тексты.

В: Почему вы рекламируете загрузку, ведь у вас есть только прототип на ранней стадии развития?
О: Есть фактор времени. Мы ещё не выполнили намеченное, но уже начинаем отставать. Поэтому приходится показывать такой сырой результат.

В: Ваши дальнейшие планы?
О: Продолжать работу.

Исходные тексты, загрузки, документация

Главная

Загрузки

Видео

🏠  > Язык программирования «Яр»