Мира (язык программирования)
Парадигмы | Объектно-ориентированный , императивный |
---|---|
Разработано | Чарльз Оливер Наттер |
Стабильная версия | 0.2.1
/ 26 сентября 2016 г |
Дисциплина набора текста | статический, с динамическими характеристиками , сильный , предполагаемый |
Платформа | виртуальная машина Java |
ТЫ | Кросс-платформенный |
Лицензия | Лицензия Апач 2.0 |
Веб-сайт | https://mirah.org/ |
Под влиянием | |
Руби , Ява , Бу |
Mirah (ранее Duby ) — это язык программирования , основанный на синтаксисе языка Ruby , выведении локального типа , гибридной статически-динамической системе типов и подключаемой компилятора цепочке инструментов . Mirah был создан Чарльзом Оливером Наттером как «Ruby-подобный язык, вероятно, подмножество синтаксиса Ruby, который [может] компилироваться в надежный, быстрый, идиоматический JVM байт-код ». [1] Слово «мира» относится к драгоценному камню рубину на яванском языке , что является обыгрыванием концепции рубина на языке Java. [2]
История
[ редактировать ]Чтобы способствовать более широкому участию членов сообщества Ruby в проекте JRuby , Наттер начал изучать возможность представления синтаксиса Ruby, но с моделью статического типа и прямой компиляцией в нативный код. В этом контексте «родной» означал в основном виртуальную машину Java (JVM), но Mirah был разработан с учетом возможности наличия альтернативных серверных частей для других объектно-ориентированных сред выполнения, таких как Common Language Runtime (CLR) .NET Framework . Язык должен был выглядеть и работать как Ruby, не вводить в JRuby никаких новых библиотечных зависимостей (что исключает работу большинства других языков JVM ) и не страдать от снижения производительности (что исключает возможность написания на Ruby).
Ранние версии Mirah (тогда Duby) были сосредоточены в основном на математической производительности, тогда как языки динамического программирования часто платят самую высокую цену. С тех пор он превратился в полноценный язык JVM, и несколько пользователей и реальных приложений используют его для основных компонентов.
Дизайн
[ редактировать ]Mirah — это в основном подключаемый набор инструментов компилятора. Основными элементами цепочки являются:
- Парсер . , основанный на парсере JRuby, который создает абстрактное синтаксическое дерево Ruby (AST)
- Трансформатор, превращающий Ruby AST в Mirah AST.
- Средство вывода типа, которое украшает Mirah AST соответствующей информацией о типизации для целевого бэкэнда.
- Генератор внутреннего кода
Из этих этапов только два последних требуют конкретных знаний о возможной целевой платформе. Это делает Mirah подходящим для многих серверных частей, а также позволяет писать языковые плагины для этапа преобразования Mirah, которые будут одинаково применяться ко всем поддерживаемым серверным модулям.
Для простых фрагментов кода и серверной части байт-кода JVM компилятор Mirah выдает почти те же инструкции, что и стандартные компиляторы Javac .
Нет библиотеки времени выполнения
[ редактировать ]Поскольку Mirah — это всего лишь компилятор, он не включает в себя стандартную библиотеку . Цель состоит в том, чтобы пользователи Mirah сами выбирали, какие библиотеки они хотят использовать, возможно, писали плагины для компилятора Mirah для их поддержки, а компилятор сделал все остальное. Это явная цель проектирования: избегать введения требований к любой новой внешней библиотеке. Таким образом, стандартной библиотекой для Mirah является любая стандартная библиотека для текущего бэкэнда, и упор делается на написание плагинов компилятора, а не библиотек для расширения и улучшения языка.
Типовая система
[ редактировать ]Mirah не навязывает пользователям определенную систему типов, вместо этого полагаясь на то, что предоставляет целевой сервер. В JVM система типов во многом аналогична системе типов Java, а объявления типов относятся к классам, примитивам и интерфейсам JVM.
Mirah — это прежде всего статически типизированный язык, но в разработке находится поддержка и динамической типизации. Механизм аналогичен механизму, предусмотренному в C# 4, со специальным динамическим типом, указывающим, что все отправки по значению этой переменной должны выполняться динамически. Поддержка динамических типов в настоящее время запланирована только для Java 7 и выше с использованием нового invokedynamic
байт-код.
Синтаксис
[ редактировать ]Синтаксис Mirah во многом аналогичен синтаксису Ruby , но с некоторыми изменениями для поддержки статической типизации:
- Параметры метода обычно должны иметь объявленные типы:
def foo(a:String, b:int)
- Поскольку в цепочке инструментов компилятора Mirah происходит несколько преобразований, некоторые строки, являющиеся действительными идентификаторами в Ruby, обрабатываются в Mirah как ключевые слова, например слово
interface
используется для указания интерфейса в стиле JVM.
За исключением этих различий, код Mirah в целом выглядит как код Ruby:
def fib(a:int)
if a < 2
a
else
fib(a - 1) + fib(a - 2)
end
end
Статус
[ редактировать ]По состоянию на 2012 год [update], Mirah находится в стадии разработки, но некоторые разработчики используют Mirah для производственных приложений ограниченного масштаба.
Рамки
[ редактировать ]сомнительный
[ редактировать ]Dubious — проект для запуска Mirah на Google App Engine . Он предоставляет возможность создавать приложения в Mirah, используя соглашения, знакомые разработчикам, использующим Ruby on Rails и Sinatra . Поскольку все компилируется заранее , приложения Mirah не требуют затрат на инициализацию, связанных с JRuby. Dubious поддерживает ERuby (ERb) и имеет простой адаптер хранилища данных, использующий синтаксис, аналогичный Datamapper .
См. также
[ редактировать ]Ссылки
[ редактировать ]Внешние ссылки
[ редактировать ]- Официальный сайт
- Знакомство с Мирой Чарльза Наттера - доктора Добба, 25 марта 2011 г.
- Нарушая правила — развлекаемся от Java вместе с Мирой — Роя Бак, 20 марта 2011 г.
- Смесь Java и Ruby — язык Mirah — InfoQ, 27 июля 2010 г.
- Мира привносит тонкости Ruby в Java - InfoWorld. 23 июля 2010 г.
- «Mirah: переход производительности на новый уровень с помощью Java Ruby» - O'Reilly Media, июль 2010 г.
- Представляем Дуби, Райана Брауна
- «Презентация Ruby Mutants», Railsconf 2009 г.
- Сомнительный фреймворк
- Видеопрезентация: JRuby, Duby и Surinx: создание лучшего Ruby
- Видеообзор: Rails Underground 2009 - Чарльз Наттер о Чарльзе Наттере - Языки Duby и Juby
- Что предлагает Mirah по сравнению с JRuby, Groovy и Scala?