- Neko (langage)
-
Neko est un langage de programmation de haut niveau typé dynamiquement, basé sur les prototypes, et développé par Nicolas Cannasse dans le cadre de la R&D au sein de la société Motion-Twin.
Sommaire
Concept
Neko possède un compilateur et une machine virtuelle (NekoVM) avec ramasse-miettes (Boehm GC en l'occurrence). Le compilateur convertit un fichier source .neko en fichier bytecode .n qui peut être exécuté sur la machine virtuelle. Neko étant typé dynamiquement, sans classe fixée (programmation par prototypes), afin d'exécuter correctement un code, il suffit d'utiliser le bon runtime mapping, plutôt que le bon type mapping. Neko favorise l'implémentation de langages sur sa machine virtuelle ; pour reprendre la FAQ du langage : "[...] il est plus facile d'implémenter un langage, nouveau ou pré-existant, sur la NekoVM que sur la CLR ou la JVM, étant donné qu'il n'est pas nécessaire de gérer un système de typage de haut niveau. Cela signifie également que différents langages peuvent inter-opérer plus facilement, puisqu'ils partagent uniquement les mêmes structures de données et non pas les mêmes types."[1].
Contrairement a la plupart des langages de script actuel, Neko nécessite d'être compilé avant exécution. En conséquence, comme il n'est pas interprété, il est souvent relativement rapide pour ce type de langage.
Exemples
Hello World
$print("Hello World!");
Conversions de type
$int("67.87"); // Convertit la chaine "67.87" en l'entier 67 $float(12345); // Convertit l'entier 12345 en le flottant 12345.0000 $string($array(1,2,3)); // Convertit le tableau [1,2,3] en la chaine "[1,2,3]"
Objets
o = $new(null); // nouvel objet vide o2 = $new(o); // crée une copie de o o2 = $new(33); // si le parametre n'est pas un objet, on lève une exception o.field = value; // affecte à l'attribut "field" la valeur "value" o.field; // renvoie la valeur de l'attribut "field" de l'objet o
Méthodes
foo = function() { $print(this.x); } o = $new(null); o.x = 3; o.bar = function() { foo(); }; o.bar(); // affiche 3
Portée des fonctions
var x = 3; f = function() { $print(x); } x = 4; f(); // affiche 3
Prototypes
var proto = $new(null); proto.foo = function() { $print(this.msg) } var o = $new(null); o.msg = "hello"; $objsetproto(o,proto); o.foo(); // affiche "hello" $objsetproto(o,null); // supprime proto o.foo(); // exception
Fonctionnalités web
Neko inclut un module mod_neko ([1]) pour le serveur web Apache. Il permet notamment d'utiliser les requêtes utilisateurs GET et POST :
get_params = $loader.loadprim("mod_neko@get_params",0); $print("PARAMS = "+get_params());
Voir aussi
Références
Articles connexes
Liens externes
- (en) Site officiel
- (en) Archive de la liste de diffusion de Neko
- haXe, un langage de programmation de haut niveau supporté par la machine virtuelle Neko
Catégories :- Langage de script
- Langage orienté objet
- Technologie web
Wikimedia Foundation. 2010.