Neko (programming language)

From Seo Wiki - Search Engine Optimization and Programming Languages
Jump to navigationJump to search
Neko
File:NekoLogo.png
Paradigm object-oriented, structured, classless, scripting
Appeared in 2005
Developer Nicolas Cannasse
Stable release 1.8.0 (October 10, 2008)
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.

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.

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());

External links

fr:Neko (langage) ru:NekoVM