Яр (язык программирования) — различия между версиями
Материал из ТХАБ.РФ
м |
Админ (обсуждение | вклад) м (→Ссылки) |
||
(не показаны 3 промежуточные версии 1 участника) | |||
Строка 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://программирование-по-русски.рф/яр.яргт Официальный сайт Языка программирования Яр] | ||
* [https://bitbucket.org/budden/iar Репозиторий языка Яр на БитБукет] | * [https://bitbucket.org/budden/iar Репозиторий языка Яр на БитБукет] | ||
+ | * [http://plana.mybb.ru/ Форум по программированию на русском языке и языку Яр] | ||
* [https://vk.com/yar_lisp Группа Вконтакте посвящённая языку Яр] | * [https://vk.com/yar_lisp Группа Вконтакте посвящённая языку Яр] | ||
Строка 7: | Строка 86: | ||
[[Категория:Язык программирования]] | [[Категория:Язык программирования]] | ||
[[Категория:Язык программирования с русским синтаксисом]] | [[Категория:Язык программирования с русским синтаксисом]] | ||
+ | [[Категория:Яр]] | ||
[[Категория:Лисп]] | [[Категория:Лисп]] | ||
[[Категория:LISP]] | [[Категория:LISP]] |
Текущая версия на 09:39, 24 марта 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)
Что будет сделано
- методы
- декораторы
- исключения
- модули
- параметрические типы, вариантность
- стандартные контейнеры
- лямбды
На данный момент исправляются ошибки вывода типов в платформе.