Neko (programming language)

Neko

Paradigm| Object-oriented, structured, prototype-based, scripting
Designed by| Nicolas Cannasse
Developer| Motion Twin, Shiro Games
First appeared| 2005; 21 years ago (2005)
Stable release|

2.2.0 / December 19, 2017; 8 years ago (2017-12-19)

Typing discipline| Dynamic
Implementation language| C, OCaml
Platform| IA-32, x86-64
OS| Windows, macOS, Linux
License| MIT
Filename extensions| .neko .n
Website| nekovm.org
Major implementations
Neko, Haxe

Neko is a high-level dynamically typed programming language developed by Nicolas Cannasse as part of research and development (R&D) efforts at two indie video game firms in Bordeaux, France : first at Motion Twin and then at Shiro Games.

## Contents

* 1 Concept
* 2 Virtual machine
* 3 Examples
* 3.1 Hello World
* 3.2 Type conversions
* 3.3 Objects
* 3.4 Methods
* 3.5 Function scope
* 3.6 Prototypes
* 3.7 Web functionality
* 4 See also
* 5 References
* 6 External links

## Concept

Neko has a compiler and a virtual machine (VM) with garbage collection. The compiler converts a source .neko file into a bytecode .n file that can be executed with the VM. Since Neko is dynamically typed with no fixed classes, a developer only needs to find the proper runtime mapping (in contrast 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 compiling before executing, like other scripting languages such as Apache Groovy. Since Neko need not 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 VM also has the option to convert a bytecode file into an executable file (output changes depending on the target 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

* Haxe
* OpenFL

## References

1. ↑ "How is Neko different from .Net's CLR or the Java's JVM ?". Neko FAQ. http://nekovm.org/faq#how_is_neko_different_from_.net_s_clr_or_the_java_s_jvm.

## External links

* Mailing list archives

0.00

(0 votes)

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Neko_(programming_language)&oldid=270029"