Agena 3.13.0

Agena est un langage de programmation qui utilise un type de syntaxe comparable à Algol 68, tout en comprenant également des caractéristiques de LUA, SQL ou Maple. Il fonctionne comme un langage impératif, ce qui signifie qu'il exige la saisie de chaque étape qu'une application doit franchir pour atteindre un état ou produire un résultat.

Ce langage de programmation est principalement destiné à des usages scientifiques, linguistiques et éducatifs, mais il peut même être utilisé pour la création de scripts, selon les intentions et les exigences de ses utilisateurs. Il offre une vitesse de traitement satisfaisante pour les opérations mathématiques et graphiques réelles et complexes.

Agena supporte une variété de fonctions de base spécifiques à ce type de langage de programmation, telles que les affectations, les conditions ('If', 'Then', 'Elif', 'OnSuccess', 'Else'), les boucles ('For', 'In', 'While', 'Do / As', 'Do / Until'), les procédures et bien d'autres.

Ce langage peut travailler avec plusieurs types de données, allant des nombres complexes et rationnels aux booléens, en passant par les valeurs nulles, les vecteurs, les threads, dont les plus basiques sont intégrés dans son noyau pour des raisons de performance. En même temps, le logiciel Agena supporte les procédures avec une portée lexicale complète.

Agena propose diverses fonctions de contrôle de flux, telles que :
- Les conditions if/then/elif/onsuccess/else.
- Des conditions case of/onsuccess/else similaires aux instructions switch/case du C.
- Opérateur if pour renvoyer des valeurs alternatives.
- Boucles numériques for/from/to/by où les valeurs de départ, d'arrêt et de pas sont facultatives, et correction automatique des erreurs d'arrondi des variables d'itération.
- Les boucles numériques for/from/downto/by où les valeurs de pas sont facultatives,
les boucles numériques combinées for/while.
- Les boucles for/in sur des chaînes de caractères et des structures de données complexes.
- Des boucles while, do/as et do/until identiques aux itérateurs while et repeat/until not() de Modula.
- Une instruction skip pour déclencher prématurément l'itération suivante d'une boucle.
- Une instruction break pour quitter prématurément une boucle.
- Une instruction redo pour redémarrer l'itération actuelle d'une boucle.
- Une instruction relaunch pour redémarrer une boucle depuis le début.
- Try/catch pour gérer les exceptions.
- Les nombres rationnels et complexes, avec des extensions telles que l'infini et l'indéfini.
- Les chaînes de caractères.
- Les booléens tels que true, false et fail.
- La valeur null qui signifie "rien".
- Des tableaux polyvalents implémentés sous forme de tableaux associatifs pour contenir tout type de données, tirés de Lua.
- Les ensembles de Cantor en tant que collections d'éléments uniques.
- Des séquences, c'est-à-dire des vecteurs, pour stocker en interne des éléments dans un ordre séquentiel strict.
- Les paires pour contenir deux valeurs ou passer des arguments dans n'importe quel ordre aux procédures.
- Des registres, autrement dit des vecteurs de taille fixe qui peuvent également contenir des données grâce à leur pointeur vers le sommet.
- Des types définis pour les séquences, les tableaux, les registres et les paires afin de permettre des manipulations spécifiques.
- La validation des types de données à l'aide des opérateurs : : et :- et la possibilité d'utiliser les deux-points dans les listes de paramètres.
- Les threads, userdata et lightuserdata hérités de Lua.
- Les multisets (sacs), les listes à liaison simple, simple, non enroulée et double, les tas, les cartes bidirectionnelles et les nombres doubles.

avec un scoping lexical complet sont aussi supportés, et fournissent les extensions suivantes :
- La syntaxe << (args) -> expression >> pour définir facilement des fonctions simples.
- Des tables de mémorisation pour effectuer une récursion à grande vitesse et à faible consommation de mémoire, pour se souvenir des résultats déjà calculés, et pour utiliser des résultats prédéfinis.
- Des types définis par l'utilisateur.
- La variable système nargs qui contient le nombre d'arguments réellement passés à une procédure.
- Des métaméthodes héritées à l'origine de Lua pour définir des opérations pour les tables, les ensembles, les séquences, les registres, les paires et les données utilisateur.
- Des méthodes de style OOP pour les tables.
- Des opérateurs binaires auto-définis.


Nouveautés & Corrections
Version 3.9.0 du 04/01/2024
- When indexing a table with a range `t[a to b]`, and the lower bound a greater than the upper bound b, then Agena now returns an empty table instead of throwing an error. Thus, Agena now behaves like Maple in this situation, making porting code much easier.
- The same behaviour has been implemented for sequences and registers, in the latter case a register with 16 `null` values will be returned which is equal to the `reg()` expression.
- When indexing a table with a range, such like `t[a to b]`, Agena now tries to put the subtable elements into the array part instead of the hash part of the subtable, making internal traversal easier, especially for `tables.reshuffle` which sometimes put elements in the wrong order.


Mis à jour le : 02.04.24

Capture d'ecran du logiciel Agena 3.13.0


Informations & Téléchargements
 Système :
XP/Vista/7/8/8.1/10/11
 Version :
3.13.0
 Licence :
Open-Source
 Limitation :
Aucune
 Taille du Fichier :
8,5 MB
 Langue :
Anglais
 Téléchargé(s) :
118 fois
 Editeur :
 Prix :
Gratuit
 Note : 
Note pour le logiciel Agena 3.13.0 (0 votes)
Bouton pour Noter Agena 3.13.0
 Commentaire :




A découvrir également ...


 
Les commentaires appartiennent à leurs auteurs. Nous ne sommes pas responsables de leur contenu.
Posté Commentaire en débat
Déposer un commentaire
Règles des commentaires*
Tous les commentaires doivent être approuvés par un Administrateur
Titre*
Nom*
Courriel*
Site internet*
Message*
Code de Confirmation*
7 + 9 = ?  
Entrez le résultat de l'expression
Maximum de tentatives que vous pouvez essayer : 10
Publicités