НекоВМ
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Оригинальный автор(ы) | Николя Каннасс |
---|---|
Разработчик(и) |
|
Первоначальный выпуск | 2005 г |
Стабильная версия | 2.3.0
/ 24 октября 2019 г |
Репозиторий | |
Написано в | С |
Операционная система | Windows , macOS , Linux |
Платформа | ИА-32 , x86-64 |
Лицензия | С |
Веб-сайт | нековм |
NekoVM — это виртуальная машина , разработанная Николя Каннассом в рамках исследований и разработок двух независимых разработчиков видеоигр в Бордо , Франция : сначала в Motion Twin , а затем в Shiro Games . Родной язык NekoVM — это -код высокоуровневого байт динамически типизированного языка программирования под названием Neko. Это сочетание позволяет использовать Neko непосредственно в качестве встроенного языка сценариев или использовать NekoVM путем компиляции другого языка (например, Haxe ) в байт-код NekoVM.
Концепция
[ редактировать ]У Neko есть компилятор и виртуальная машина (ВМ) со сборкой мусора . Компилятор преобразует исходный файл .neko в файл .n с байт-кодом, который можно выполнить с помощью виртуальной машины. Поскольку Neko является динамически типизированным и не имеет фиксированных классов, разработчику нужно только найти правильное сопоставление времени выполнения (в отличие от сопоставления типов данных ), чтобы код выполнялся правильно. Как сказано в FAQ по Neko : «...на NekoVM легче написать новый или существующий язык, чем на CLR / JVM , поскольку вам не приходится иметь дело с системой типов высокого уровня. Кроме того, это означает, что языки могут легче взаимодействовать, поскольку им нужно использовать только одни и те же структуры данных, а не всегда одни и те же типы». [1]
Neko требует компиляции перед выполнением, как и другие языки сценариев, такие как Apache Groovy . Поскольку Neko не нужно интерпретировать во время выполнения, он выполняется быстрее. Язык Haxe , помимо прочего, может компилироваться в код Neko.
Виртуальная машина
[ редактировать ]Neko Виртуальная машина используется для выполнения файла байт-кода Neko. У виртуальной машины также есть возможность преобразовать файл байт-кода в исполняемый файл (выходные данные изменяются в зависимости от целевой операционной системы).
Язык
[ редактировать ]Парадигма | Мультипарадигмальность : объектно-ориентированная , структурированная , основанная на прототипах , скриптовая. |
---|---|
Разработано | Николя Каннасс |
Разработчик |
|
Впервые появился | 2005 г |
Стабильная версия | 2.3.0
/ 24 октября 2019 г |
Дисциплина набора текста | Динамический |
Язык реализации | OCaml |
Платформа | НекоВМ |
ТЫ | Windows , macOS , Linux |
Лицензия | С |
Расширения имен файлов | .неко .н |
Веб-сайт | нековм |
Привет, мир
[ редактировать ]$print("Hello World!");
Преобразования типов
[ редактировать ]$int("67.87"); // Converts string "67.87" to integer 67
$float(12345); // Converts integer 12345 to float 12345.0000
$string($array(1,2,3)); // Converts array [1,2,3] to string "[1,2,3]"
Объекты
[ редактировать ]o = $new(null); // new empty object
o2 = $new(o); // makes a copy of o
o2 = $new(33); // if parameter is not an object, throw an exception
o.field = value; //sets field to value
o.field; // returns "field" value of object o
Методы
[ редактировать ]foo = function() {
$print(this.x);
}
o = $new(null);
o.x = 3;
o.bar = function() {
foo();
};
o.bar(); // prints 3
Область действия функции
[ редактировать ]var x = 3;
f = function() {
$print(x);
}
x = 4;
f(); // print 3
Прототипы
[ редактировать ]var proto = $new(null);
proto.foo = function() {
$print(this.msg)
}
var o = $new(null);
o.msg = "hello";
$objsetproto(o,proto);
o.foo(); // print "hello"
$objsetproto(o,null); // remove proto
o.foo(); // exception
Веб-функциональность
[ редактировать ]Neko включает Apache серверные модули mod_neko для языка Neko и mod_tora для размещения сервера приложений NekoVM tora . Таким образом, он может обрабатывать пользовательский ввод с помощью запросов GET и POST:
get_params = $loader.loadprim("mod_neko@get_params",0);
$print("PARAMS = "+get_params());
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Чем Neko отличается от CLR .Net или JVM Java?» . ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ . НекоВМ . Проверено 28 марта 2021 г.
Внешние ссылки
[ редактировать ]- Официальный сайт
- Архив списка рассылки на Wayback Machine (архивировано 20 декабря 2013 г.)
- Динамически типизированные языки программирования
- Бесплатное программное обеспечение, написанное на C.
- Бесплатное программное обеспечение, написанное на OCaml.
- Объектно-ориентированные языки программирования
- Языки программирования на основе прототипов
- Программное обеспечение, использующее лицензию MIT
- Виртуальные машины на основе стека