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.
|