Neko (programming language)
From Wikipedia, the free encyclopedia
| Neko | |
|---|---|
![]() |
|
| Paradigm | object-oriented, structured, classless, scripting |
| Appeared in | 2005 |
| Developer | Nicolas Cannasse |
| Latest release | 1.6.0/ July 4, 2006 |
| Typing discipline | dynamic |
| Major implementations | Neko, haXe |
| OS | Cross platform |
| 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.
Contents |
[edit] 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, unlike its scripting language contemporaries. Since Neko doesn't need to be interpreted at runtime, it executes faster.
[edit] Examples
[edit] Hello World
$print("Hello World!");
[edit] 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]"
[edit] 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
[edit] Methods
foo = function() { $print(this.x); } o = $new(null); o.x = 3; o.bar = function() { foo(); }; o.bar(); // prints 3
[edit] Function Scope
var x = 3; f = function() { $print(x); } x = 4; f(); // print 3
[edit] 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
[edit] 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());
[edit] External links
- Neko home page
- Neko mailing list archives
- haXe, a high-level language that can compile to the Neko VM


