Какие виртуальные машины приложений написаны на языках высокого уровня? - PullRequest
0 голосов
/ 24 апреля 2010

Какие виртуальные машины приложений существуют на языках более высокого уровня? C / C ++ выглядит как языки выбора (по понятным причинам).

То, что я нашел в Google, это как минимум два написанных на Java (оба мета-циркуляра): JikesRVM и Максин.

Что-нибудь еще, что вы нашли?

Ответы [ 2 ]

1 голос
/ 24 апреля 2010
  • Многие реализации Схемы написаны на Схеме, и хотя многие из них являются компиляторами или интерпретаторами, некоторые из них являются виртуальными машинами,
  • некоторые реализации CommonLisp написаны на CommonLisp, и хотя многие из них являются компиляторами или интерпретаторами, некоторые из них являются виртуальными машинами,
  • Виртуальная машина PyPy написана на RPython, который является подмножеством Python с «синтаксисом и семантикой Python, скоростью C, ограничениями сообщений об ошибках Java и компилятора, такими же проницаемыми, как MUMPS»,
  • Squeak Smalltalk VM написан на сленге (подмножество Squeak Smalltalk) и
  • Метациркулярная Клейна В.М. полностью написана на Себе.

Из них наиболее интересными являются Кляйн и Максин (дизайн которых фактически основан на Кляйне). Реализации Metacircular Lisp и Scheme обычно предполагают существование некоторых базовых примитивных специальных форм, которые затем должны быть реализованы на ассемблере, C или ограниченном подмножестве языка в низкоуровневом стиле. Squeak и PyPy используют ограниченное подмножество языка. Джайкс использует "магические" методы и стиль низкого уровня.

Идея Кляйна и Максин заключается в том, что все написано в высокоуровневом, объектно-ориентированном, выразительном, идиоматическом стиле. В текущей версии Klein есть только два крошечных места, где стилю препятствуют некоторые ограничения: при реализации отправки сообщений вы не можете отправлять сообщения, а при реализации клонирования объектов вы не можете клонировать любые объекты. Однако текущий компилятор может фактически встроить или даже полностью оптимизировать клонирование объектов и отправку сообщений, поэтому эти два места можно переписать в обычном стиле OO Self & ndash; просто никто еще этого не сделал.

Все это были просто метациркулярные виртуальные машины. Также есть другие виртуальные машины, написанные на языках высокого уровня:

  • HotRuby - это виртуальная машина Ruby (фактически, виртуальная машина YARV), написанная на JavaScript,
  • Red Sun - это виртуальная машина Ruby (фактически, YARV VM), написанная на ActionScript,
  • Rava - виртуальная машина, подобная JVM, написанная в Ruby Коаси "ko1" Sasada, автором YARV и
  • Ruva - виртуальная машина в стиле JVM, написанная на Ruby
0 голосов
/ 02 декабря 2010

Еще несколько реализаций VM представлены в TCL (язык команд инструмента) и lua (иногда называемый java), а некоторые написаны на ассемблере. Другие варианты написаны на языке системного программирования аппаратного обеспечения компьютера производителя.

...