Pour aller plus loin

Tout d'abord terminons-en avec les fonctionnalités de Neon.


I - Le mot-clé import :

Souvent, lorsque vous écrivez de gros programmes de plusieurs milliers de lignes, vous avez envie de diviser tout votre programme en plusieurs fichiers pour mieux vous y retrouver. Je vais vous montrer comment c'est possible en Neon.

Imaginons que vous avez deux fichiers : module.ne et main.ne, et que vous voulez définir des fonctions dans module.ne et les utiliser dans main.ne. D'abord, écrivez quelque chose ressemblant à ceci dans module.ne :

# fichier de module

function f(x) do

    return ( x**2 + 7*x - 2 )

end


afficher = print # on crée une copie de print qui s'appelle afficher


print("Le fichier a bien ete execute")

Maintenant, écrivez dans main.ne :

# fichier principal

import ("module")


nombre = 25

nombre2 = f(nombre)

afficher(nombre2)

De cette manière import peut être utilisé avec un nombre illimité de modules :

import("module", "fichier", "truc", "machin") # il ne faut pas oublier que les fichiers de module doivent avoir comme extension .ne, et que vous ne devez pas l'écrire dans le import

II - Arguments du programme :

Quand on exécute des programmes dans une console/un terminal, on a la possibilité de leur envoyer des arguments. Par exemple, pour exécuter un fichier Neon, on peut taper dans la console :

neon programme.ne

neon (ou neon.exe) est le nom du fichier exécutable, et tous les mots séparés par des espaces sont les arguments envoyés au programme. Dans notre cas, il n'y a qu'un argument envoyé : c'est le nom du fichier programme.ne.

Quand on double-clique sur un fichier en général et qu'il s'ouvre avec le logiciel approprié (par exemple un fichier LibreOffice), c'est parce que :

1- Windows se souvient que les fichiers dont le nom finit par .odt doivent être ouverts avec LibreOffice

2- Windows envoie en argument au programme swriter.exe (l'exécutable principal de LibreOffice) le nom du fichier sur lequel vous avez double-cliqué. Ainsi, LibreOffice va ouvrir votre fichier et l'afficher.

Vous avez donc vu que pour plein de raisons il est intéressant de pouvoir envoyer des arguments à des programmes. Je vais vous montrer comment on envoie des arguments à des programmes Neon (en ligne de commande).

Pour envoyer les arguments, rien de plus simple, vous écrivez d'abord la ligne de commande comme si vous vouliez juste exécuter votre programme Neon : neon programme.ne

Puis directement après, ajoutez les arguments que vous voulez envoyer à votre programme Neon ; ça donne donc :

neon programme.ne arg1 arg2 ... argn

C'est bien beau tout ça, mais comment puis-je accéder aux arguments depuis le programme ??

Pour ça, rien de plus simple : Lorsque vous exécutez un fichier Neon, une liste contenant tous les arguments est automatiquement créée. Vous pouvez y accéder sous le nom _ _args_ _ :  deux tirets du bas à chaque fois, sans espace bien sûr.

Exemple :

main.c :

print(__args__)

III - Le référencement/déréférencement :

Je vais maintenant vous présenter une notion très utile, mais assez spécifique, qui va vous donner davantage de liberté dans vos programmes.

Les mots référencement/déréférencement viennent tout droit du C et même s'ils n'expriment pas rigoureusement la même chose en Neon qu'en C, l'idée est la même.

Référencer une variable, en Neon, consiste tout simplement à récupérer son nom dans une chaine de caractères. Le référencement se fait avec l'opérateur & :

Le déréférencement quant à lui est l'opération contraire du référencement. A partir d'une chaine de caractère représentant une variable, on récupère la valeur de la variable. L'opérateur de déréférencement est l'opérateur '@'

Pour finir il manque un dernier opérateur : l'opérateur qui permet d'affecter une valeur à une variable, mais en connaissant uniquement le nom de la variable. Pour cela, on va utiliser l'opérateur '<-' :

Et on peut tout de suite faire des choses intéressantes :

IV - Les variables prédéfinies

Au même titre que __args__, il existe en Neon 3 autres variables prédéfinies : __name__, __platform__ et __version__.

1. La variable __name__

La variable __name__ contient ce que l'on pourrait appeler le "nom du programme". Cette variable sert à dire au programme qui s'exécute s'il est exécuté en tant que fichier principal, ou bien s'il est importé par un autre fichier.

Si vous ouvrez un terminal Neon vide, ou bien que vous exécutez un fichier à l'aide de la commande neon fichier.ne,  la variable __name__ aura pour valeur "__main__". Dans tous les cas le type de __name__ est "String".

Sinon, si vous faites import("fichier") depuis la console ou un autre fichier, la valeur de __name__ dans le programme importé sera le nom de ce fichier importé.

Je vous conseille de tester en affichant la valeur de __name__ avant de l'utiliser dans un programme pour savoir de quoi il en retourne.

Aux dernières nouvelles, la variable __name__ souffre d'un bug lors d'appel récursif à import().


2. La variable __version__

La variable __version__ contient dans une chaîne de caractères la version de Neon exécutée. Cela peut-être utile pour tester la version de l'interpréteur avant d'utiliser des fonctionnalités récentes.


3. La variable __platform__

Comme vous le savez, Neon peut être exécuté sur différentes plateformes : Linux, Windows 10 et 11, TI-83 Premium CE / Edition Python, et dans un environnement JavaScript appelé Web Assembly. En fonction de la plateforme sur laquelle est exécuté Neon, la variable __platform__ prend différentes valeurs. Voici les valeurs qu'elle prend :

Windows 10 : "windows10"

Windows 11 : "windows11"

Linux : "linux"

Web Assembly : "wasm"

TI-83 Premium CE / Edition Python : "ti83pce"