Neko (programming language)

From Wikipedia, the free encyclopedia
Neko
Paradigm(s) Object-oriented, structured, classless, scripting
Appeared in 2005
Developer Nicolas Cannasse
Stable release 1.8.2 (September 10, 2011 (2011-09-10))
Typing discipline Dynamic
Major implementations Neko, Haxe
Implementation language C, OCaml
Website nekovm.org

    Neko is a high-level dynamically typed programming language developed by Nicolas Cannasse as part of R&D efforts at Motion-Twin.

    Concept

    Neko has a compiler and a virtual machine with garbage collection. The compiler converts a source .neko file into a bytecode .n file that can be executed with the virtual machine. Since Neko is dynamically typed with no fixed classes, a developer only has to find the proper runtime mapping (as opposed to type mapping) so that code executes correctly. As the Neko FAQ puts it: "...it is easier to write a new or existing language on the NekoVM than it is for the CLR / JVM, since you don’t have to deal with a highlevel type system. Also, this means that languages can interoperate more easily since they only need to share the same data structures and not always the same types."[1]

    Neko requires compilation before execution, like other scripting languages such as Groovy. Since Neko doesn't need to be interpreted at runtime, it executes faster. The Haxe programming language compiles to Neko code, among other targets.

    Virtual Machine

    The Neko virtual machine is used to execute a Neko bytecode file, the virtual machine also has the option to convert a bytecode file into a executable file(output changes depending on the targeted operating system).

    Examples

    Hello World

    $print("Hello World!");
    

    Type conversions

    $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]"
    

    Objects

    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
    

    Methods

    foo = function() {
    	$print(this.x);
    }
    o = $new(null);
    o.x = 3;
    o.bar = function() { 
    	foo(); 
    };
    o.bar(); // prints 3
    

    Function scope

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

    Prototypes

    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
    

    Web functionality

    Neko includes a mod_neko module for the Apache server. As such, it can process user input using GET and POST requests:

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

    See also

    References

    External links

    This article is issued from Wikipedia. The text is available under the Creative Commons Attribution/Share Alike; additional terms may apply for the media files.