Jump to content

Мира (язык программирования)

Mirah
Парадигмы Объектно-ориентированный , императивный
Разработано Чарльз Оливер Наттер
Стабильная версия
0.2.1 / 26 сентября 2016 г .; 7 лет назад ( 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 — это в основном подключаемый набор инструментов компилятора. Основными элементами цепочки являются:

  1. Парсер . , основанный на парсере JRuby, который создает абстрактное синтаксическое дерево Ruby (AST)
  2. Трансформатор, превращающий Ruby AST в Mirah AST.
  3. Средство вывода типа, которое украшает Mirah AST соответствующей информацией о типизации для целевого бэкэнда.
  4. Генератор внутреннего кода

Из этих этапов только два последних требуют конкретных знаний о возможной целевой платформе. Это делает 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 год , Mirah находится в стадии разработки, но некоторые разработчики используют Mirah для производственных приложений ограниченного масштаба.

сомнительный

[ редактировать ]

Dubious — проект для запуска Mirah на Google App Engine . Он предоставляет возможность создавать приложения в Mirah, используя соглашения, знакомые разработчикам, использующим Ruby on Rails и Sinatra . Поскольку все компилируется заранее , приложения Mirah не требуют затрат на инициализацию, связанных с JRuby. Dubious поддерживает ERuby (ERb) и имеет простой адаптер хранилища данных, использующий синтаксис, аналогичный Datamapper .

См. также

[ редактировать ]
  1. ^ Duby: Ruby-подобный язык JVM с выводом типов
  2. ^ «Язык программирования Mirah» .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 41f3099b66c398c125baa33b9b1d18ae__1704863160
URL1:https://arc.ask3.ru/arc/aa/41/ae/41f3099b66c398c125baa33b9b1d18ae.html
Заголовок, (Title) документа по адресу, URL1:
Mirah (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)