NekoVM
Oryginalni autorzy | Nicolas Cannasse |
---|---|
Deweloperzy | |
Pierwsze wydanie | 2005 |
Wersja stabilna | 2.3.0 / 24 października 2019
|
Magazyn | |
Napisane w | C |
System operacyjny | Windows , macOS , Linux |
Platforma | IA-32 , x86-64 |
Licencja | MIT |
Strona internetowa |
NekoVM to maszyna wirtualna opracowana przez Nicolasa Cannasse w ramach prac badawczo-rozwojowych (R&D) dwóch niezależnych twórców gier wideo w Bordeaux we Francji : najpierw w Motion Twin , a następnie w Shiro Games . Językiem ojczystym NekoVM jest kod bajtowy dla dynamicznego języka programowania wysokiego poziomu zwany Neko. To parowanie pozwala na bezpośrednie użycie Neko jako wbudowanego języka skryptowego lub kierowanie NekoVM poprzez kompilację innego języka (takiego jak Haxe ) do kodu bajtowego NekoVM.
Pojęcie
Neko ma kompilator i maszynę wirtualną (VM) z wyrzucaniem elementów bezużytecznych . Kompilator konwertuje źródłowy plik .neko na plik kodu bajtowego .n, który można wykonać za pomocą maszyny wirtualnej. Ponieważ Neko jest pisany dynamicznie bez ustalonych klas, programista musi tylko znaleźć odpowiednie mapowanie środowiska uruchomieniowego (w przeciwieństwie do mapowania typu), aby kod działał poprawnie. Jak podaje Neko FAQ : „... łatwiej jest napisać nowy lub istniejący język na NekoVM niż na CLR / JVM , ponieważ nie musisz mieć do czynienia z systemem typu wysokiego poziomu. Oznacza to również, że języki mogą łatwiej ze sobą współpracować, ponieważ muszą dzielić tylko te same struktury danych, a nie zawsze te same typy”.
Neko wymaga kompilacji przed wykonaniem, podobnie jak inne języki skryptowe, takie jak Apache Groovy . Ponieważ Neko nie musi być interpretowane w czasie wykonywania, działa szybciej. Język Haxe może kompilować się między innymi do kodu Neko.
Maszyna wirtualna
Maszyna wirtualna Neko służy do wykonywania pliku kodu bajtowego Neko, maszyna wirtualna ma również opcję konwersji pliku kodu bajtowego do pliku wykonywalnego (wyjście zmienia się w zależności od docelowego systemu operacyjnego).
Język
Paradygmat | Zorientowany obiektowo , ustrukturyzowany , oparty na prototypach , skrypty |
---|---|
Zaprojektowany przez | Nicolas Cannasse |
Deweloper | |
Po raz pierwszy pojawiły się | 2005 |
Wersja stabilna | 2.3.0 / 24 października 2019
|
Dyscyplina pisania | Dynamiczny |
Język implementacji | OCaml |
Platforma | NekoVM |
system operacyjny | Windows , macOS , Linux |
Licencja | MIT |
Rozszerzenia nazw plików | .neko .n |
Strona internetowa |
Witaj świecie
$print ( "Witaj świecie!" );
Konwersje typów
$int ( "67,87" ); // Konwertuje napis "67.87" na liczbę całkowitą 67 $float ( 12345 ); // Konwertuje liczbę całkowitą 12345 na liczbę zmiennoprzecinkową 12345.0000 $string ( $array ( 1 , 2 , 3 )); // Konwertuje tablicę [1,2,3] na ciąg znaków „[1,2,3]”
Obiekty
o = $nowy ( null ); // nowy pusty obiekt o2 = $new ( o ); // tworzy kopię o o2 = $new ( 33 ); // jeśli parametr nie jest obiektem, wyrzuć wyjątek o . pole = wartość ; //ustawia pole na wartość o . pole ; // zwraca wartość pola obiektu o
Metody
foo = funkcja () { $print ( this . x ); } o = $nowy ( null ); o . x = 3 ; o . słupek = funkcja () { foo (); }; o . słupek (); // drukuje 3
Zakres funkcji
zmienna x = 3 ; f = funkcja () { $print ( x ); } x = 4 ; fa (); //drukuj 3
Prototypy
var proto = $nowy ( null ); proto . foo = function () { $print ( this . msg ) } var o = $new ( null ); o . msg = "cześć" ; $objsetproto ( o , proto ); o . foo (); // drukuj "cześć"
$objsetproto ( o , null ); // usuń proto o . foo (); // wyjątek
Funkcjonalność internetowa
Neko zawiera moduły serwera Apache mod_neko dla języka Neko i mod_tora do hostowania serwera aplikacji NekoVM tora . W związku z tym może przetwarzać dane wprowadzane przez użytkownika za pomocą żądań GET i POST:
0
get_params = $loader . loadprim ( "mod_neko@get_params" , ); $print ( "PARAMY = " + get_params ());
Zobacz też
Linki zewnętrzne
- Oficjalna strona internetowa
- Archiwa list mailingowych w Wayback Machine (archiwum 2013-12-20)