NekoVM

Виртуальная машина и язык программирования с открытым исходным кодом
NekoVM
Оригинальный автор(ы)Николя Каннасс
Разработчик(и)
Первоначальный выпуск2005 ; 20 лет назад (2005)
Стабильный релиз
2.3.0 / 24 октября 2019 г. ; 5 лет назад (2019-10-24)
Репозиторий
  • github.com/HaxeFoundation/neko
Написано вС
Операционная системаWindows , MacOS , Linux
ПлатформаIA-32 , x86-64
ЛицензияМассачусетский технологический институт
Веб-сайтnekovm.org/doc/vm

NekoVM — это виртуальная машина , разработанная Николя Каннассом в рамках научно-исследовательских и опытно-конструкторских работ (НИОКР) двух независимых разработчиков видеоигр в Бордо , Франция : сначала в Motion Twin , а затем в Shiro Games . Родным языком NekoVM является байт-код для высокоуровневого динамически типизированного языка программирования под названием Neko. Такое сочетание позволяет использовать Neko напрямую как встроенный скриптовый язык или нацеливаться на NekoVM, компилируя другой язык (например, Haxe ) в байт-код NekoVM.

Концепция

Neko имеет компилятор и виртуальную машину (VM) со сборкой мусора . Компилятор преобразует исходный файл .neko в файл байт-кода .n, который может быть выполнен с помощью VM. Поскольку Neko динамически типизирован без фиксированных классов, разработчику нужно только найти правильное сопоставление времени выполнения (в отличие от сопоставления типов данных ), чтобы код выполнялся правильно. Как говорится в Neko FAQ : "...на NekoVM проще написать новый или существующий язык, чем для CLR / JVM , поскольку вам не нужно иметь дело с высокоуровневой системой типов. Кроме того, это означает, что языки могут взаимодействовать легче, поскольку им нужно только совместно использовать одни и те же структуры данных, а не всегда одни и те же типы". [1]

Neko требует компиляции перед выполнением, как и другие языки сценариев, такие как Apache Groovy . Поскольку Neko не нужно интерпретировать во время выполнения, он выполняется быстрее. Язык Haxe может компилироваться в код Neko, среди других целей.

Виртуальная машина

Виртуальная машина Neko используется для выполнения файла байт-кода Neko, виртуальная машина также имеет возможность преобразовывать файл байт-кода в исполняемый файл (выходные данные различаются в зависимости от целевой операционной системы).

Язык

Неко
Логотип NekoVM
ПарадигмаМультипарадигмальный : объектно-ориентированный , структурированный , основанный на прототипах , скриптовый
РазработаноНиколя Каннасс
Разработчик
Впервые появился2005 ; 20 лет назад (2005)
Стабильный релиз
2.3.0 / 24 октября 2019 г. ; 5 лет назад (2019-10-24)
Дисциплина печатиДинамичный
Язык реализацииOCaml
ПлатформаNekoVM
ОСWindows , MacOS , Linux
ЛицензияМассачусетский технологический институт
Расширения имени файла.неко .н
Веб-сайтnekovm.org/specs/синтаксис

Привет, мир

$print ( "Привет, мир!" );

Преобразования типов

$ int ( "67.87" ); // Преобразует строку "67.87" в целое число 67 $float ( 12345 ); // Преобразует целое число 12345 в число с плавающей точкой 12345.0000 $ string ( $array ( 1,2,3 )); // Преобразует массив [1,2,3] в строку "[1,2,3 ] "   

Объекты

o = $new ( null ); // новый пустой объект o2 = $new ( o ); // создает копию o o2 = $new ( 33 ); // если параметр не является объектом, выбрасывается исключение o . field = value ; // устанавливает поле в значение o . field ; // возвращает значение "field" объекта o             

Методы

foo = function () { $print ( this . x ); } o = $new ( null ); o . x = 3 ; o . bar = function () { foo (); }; o . bar (); // печатает 3           

Область действия функции

var  x = 3 ; f = function () { $print ( x ); } x = 4 ; f (); // print 3        

Прототипы

var  proto = $new ( null ); proto . foo = function () { $print ( this . msg ) }      вар  о = $новый ( ноль ); о . сообщение = «Привет» ; $objsetproto ( о , прото ); о . Фу (); // печатаем «привет»     $ objsetproto ( o , null ); // удалить proto o.foo ( ); // исключение  

Веб-функциональность

Neko включает в себя модули сервера Apache mod_neko для языка Neko и mod_tora для хостинга сервера приложений NekoVM tora. Таким образом, он может обрабатывать пользовательский ввод с помощью запросов GET и POST:

get_params = $ loader.loadprim ( " mod_neko @get_params" , 0 ); $print ( "PARAMS=" + get_params ());  

Смотрите также

Ссылки

  1. ^ "Чем Neko отличается от CLR .Net или JVM Java?". FAQ . NekoVM . Получено 28.03.2021 .
  • Официальный сайт
  • Архивы списков рассылки на Wayback Machine (архив 2013-12-20)
Retrieved from "https://en.wikipedia.org/w/index.php?title=NekoVM&oldid=1151327667"