Kernelable Networking Industrial Forth-like Environment
PRESENTATION
Retour à l'accueil



Nife est un langage de programmation basé sur les principes du langage forth défini par Charles H. Moore dans les années 1960. Il ne reprend pas la totalité des fonctionnalités de forth, ce qui explique qu'il est considéré comme un langage « forth-like ».

Son ambition est d'offrir à des personnes qui ne sont pas des informaticiens, et qui ont besoin de faire des mesures, de contrôler des appareils distants, de surveiller des processus industriels, de manipuler des grandes collections de données, de faire des calculs, des filtrages, des statistiques, de pouvoir réaliser facilement leurs besoins, dans un environnement Linux à faible coût.
La simplicité de ce langage fait que n'importe qui peut en comprendre le fonctionnement en quelques minutes, et le maîtriser totalement en quelques heures voire une semaine tout au plus.
Il peut aussi être utilisé plus modestement comme une super calculatrice, pour faire simplement ses comptes ou des calculs d'inversion de matrice. Le public concerné est donc très large.

Il garde du forth les caractéristiques suivantes :
  • Fonctionnement en mode interprétation : comme un shell.
  • Chargement de fichiers source et compilation puis exécution.
  • Utilisation de piles (numérique, logique et caractères) obligeant l'utilisation de la notation dite « polonaise-inversée ».
  • La manière d'écrire de nouvelles fonctions.
  • Aspect « free-context » du langage permettant de la compilation de code à la volée (en cours d'exécution).

Il ajoute les possibilités suivantes :
  • Installation compatible sur tous les systèmes de type Unix et notamment Linux.
  • Facilité d'interfaçage de commandes supplémentaires permettant à un programme Nife d'utiliser un grand nombre des outils libres offerts dans un environnement Linux (par exemple gnuplot ou xgraph pour tracer des courbes).
  • Intégration d'une librairie mathématiques conséquente permettant d'effectuer facilement des calculs sur un nombre important de données.
  • Possibilité d'ajouter facilement d'autres fonctions à la librairie de base (statistiques par exemple).
  • Reconnaissance automatique des cartes ou périphériques compatibles avec la librairie COMEDI (http://www.comedi.org) permettant de faire de l'acquisition de données, du traitement de signal, du pilotage automatique. Il s'agit là de l'un de ses côtés « industriel ».
  • Définition de variable "dynamiques" (à géométrie variable pouvant contenir tour à tour un scalaire, un tableau de valeurs numériques, un booléen, une chaine de caractères …) et pouvant aussi devenir des variables exécutables (c'est à dire faisant référence à du code qui sera appelé lors de l'utilisation de la variable). Cet aspect donne à Nife le qualificatif de langage dynamique avec tout ce que cela implique (code compact et rapide, évolutif à l'exécution).
  • Une gestion de multitâches grâce à la commande task qui permet de lancer des exécutions parallèles de fonctions, de les contrôler (savoir si elle sont terminées, consulter les consoles, les supprimer, etc.),
  • Les programmes Nife peuvent communiquer entre eux via les outils de communications classiques offerts par Unix, de manière interne (à l'intérieur d'un même système) ou externe en s'appuyant sur l'interface TCP/IP. Pour cela, il possède son propre protocole STSP (stack to stack protocol) qui permet d'échanger des données directement de pile à pile. C'est l'un de ses aspects « Networking ».
  • Il est un des premiers langages à offrir le RPC dynamique.
  • L'ouverture possible vers l'utilisation d'autres périphériques grâce à l'intégration de drivers spécifiques.

Une extension de Nife lui permet de pouvoir être directement chargé sur de petites ou moyennes unités de calcul, que l'on appelle aussi « systèmes embarqués ». Pour cela, on lui associe un noyau « bootable » et il devient Knife : Kernelable Nife.

Dans ce cas, il devient un outil puissant pour coder dans des environnements où la place mémoire est denrée rare, et où le côté « langage dynamique » va permettre de résoudre des problèmes là où d'autres langages vont échouer.


Communauté Francophone
Ressources SourceForge
Repertoire Git
S.E.R.I.A.N.E.