Мира (язык программирования) - Mirah (programming language) - Wikipedia
Парадигмы | Объектно-ориентированный, императив |
---|---|
Разработано | Чарльз Оливер Наттер |
Стабильный выпуск | 0.2.1 / 26 сентября 2016 г. |
Печатная дисциплина | статический, с динамическими характеристиками, сильный, предполагаемый |
Платформа | Виртуальная машина Java |
Операционные системы | Кроссплатформенность |
Лицензия | Лицензия Apache 2.0 |
Интернет сайт | www |
Под влиянием | |
Рубин, Ява, Бу |
Мира (ранее Дуби) это язык программирования на основе Рубин синтаксис языка, местный вывод типа, гибрид статико-динамический система типов, а подключаемый компилятор набор инструментов. Mirah был создан Чарльзом Оливером Наттером как «Ruby-подобный» язык, вероятно, подмножество синтаксиса Ruby, который [мог] компилироваться в надежный, быстрый, идиоматический JVM байт-код."[1] Слово Мира относится к драгоценному камню Рубин в Яванский язык, игра на концепции Ruby в Java.[2]
История
Чтобы способствовать более широкому участию в JRuby проект от членов сообщества Ruby, Наттер начал исследовать возможность представления синтаксиса Ruby, но с статический тип модель и прямая компиляция. В этом контексте "родной" означал в основном Виртуальная машина Java (JVM), но Mirah был разработан с учетом возможности наличия альтернативы бэкэнды для других объектно-ориентированных сред выполнения, таких как общеязыковая среда выполнения (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 во многом такой же, как синтаксис Рубин, но с некоторыми изменениями для поддержки статической типизации:
- Для параметров метода обычно необходимо указывать их типы:
def фу(а:Нить, б:int)
- Поскольку в цепочке инструментов компилятора Mirah происходит несколько преобразований, некоторые строки, которые являются действительными идентификаторами в Ruby, обрабатываются в Mirah как ключевые слова, например слово
интерфейс
используется для указания интерфейса в стиле JVM.
За исключением этих различий, код Mirah обычно выглядит как код Ruby:
def выдумать(а:int) если а < 2 а еще выдумать(а - 1) + выдумать(а - 2) конецконец
Положение дел
По состоянию на 2012 год[Обновить], Mirah находится в стадии разработки, но некоторые разработчики используют Mirah для производства Приложения ограниченного объема.
Каркасы
Сомнительный
Dubious - это проект для запуска Mirah на Google App Engine. Он обеспечивает способ создания приложений в Mirah с использованием соглашений, знакомых разработчикам, использующим Рубин на рельсах и Sinatra. Поскольку все составлен заранее, В приложениях Mirah нет инициализация расходы, связанные с JRuby. Сомнительные опоры ERuby (ERb) и имеет простой адаптер хранилища данных, использующий синтаксис, аналогичный Datamapper.
Смотрите также
Рекомендации
внешняя ссылка
- Официальный веб-сайт
- Введение в Mirah Чарльза Наттера - Доктор Добб, 25 марта 2011 г.
- Нарушение правил - развлечение Java с помощью Mirah - Роя Бак, 20 марта 2011 г.
- Смесь Java и Ruby - язык Mirah - InfoQ, 27 июля 2010 г.
- Mirah привносит Ruby-тонкости в Java - InfoWorld. 23 июля 2010 г.
- "Mirah: вывод производительности на новый уровень с помощью Java Ruby" - O'Reilly Media, июль 2010 г.
- Представляем Дуби, Райан Браун
- «Презентация Ruby Mutants», Railsconf 2009
- Сомнительный фреймворк
- Видео-презентация: JRuby, Duby и Surinx: создание лучшего Ruby
- Видео Lightning talk: Rails Underground 2009 - Чарльз Наттер о Чарльзе Наттере - Duby and Juby Languages
- Что предлагает Mirah по сравнению с JRuby, Groovy и Scala?