Scriptol, pour la robotique et applications utilisant les standards du Web
Le langage Scriptol a été conçu en 2001 par Denis Sureau. et défini selon 7 règles:
simplicité, sécurité, conformance aux standards,
objectivité, orientations multiples, portabilité, apprentissage
facile.
Le code scriptol est interprété ou compilé
en code JavaScript, PHP ou C++, un programme scriptol peut être compilé en exécutable
binaire.
Les structures de contrôle sont différentes et plus
puissantes que dans les langages classiques, permettant notamment le
pattern-matching et les automates. La sécurité est un
des objectifs du langage, dans ce but notamment les variables sont typées.
Scriptol est un langage universel pour la robotique, la réalisation
d'applications web, les scripts, le prototypage et les applications
à interface utilisateur HTML 5. Il permet d'intégrer XML dans le code source.
Plusieurs innovations de Scriptol ont été reprises par les langages créés depuis 2001. C'est le premier langage à utiliser des variables réactives, combinant ainsi programmation réactive et impérative.
On peut utiliser Scriptol:
- Pour programmer des pages web: Scriptol peut être compilé en PHP, donc il est portable. La compilation détecte les erreurs avant de lancer le programme.
- Pour faire des scripts: C'est un langage clair et puissant, très intuitif.
- Pour le prototypage: tester des sources avec l'interpréteur et produire du code C++ intégrable dans un plus large projet.
- Pour programmer vite et réaliser des applications portable sans passer par PHP ou JavaScript.
- Pour réaliser des robots intelligents.
Une nouvelle version du langage, Scriptol 2, apparaît en 2014 avec un compilateur en JavaScript.
Caractéristiques de Scriptol
- Variables typées.
- Orienté objet en mode application, mais peut fonctionner en mode script ou en mode web. Mêmes les primitives et les constantes ont des méthodes.
- Orienté XML: c'est une structure de données du langage.
- Constructs plus sûrs while .. let, for .. in, etc...
- Pattern-matching avec le DO..CASE et automates.
- Les règles sont facilement appliquées grâce au if composite.
- Le compilateur joint automatiquement les lignes fractionnées.
- Assignements multiples. Une fonction peut retourner plusieurs valeurs.
- Tableaux indexés et associatifs.
- Text, number, integer, real sont les autres types.
- Programmation réactive. On peut mixer des variables réactives avec du code impératif.
- Peut utiliser les APIs de PHP, JavaScript ou C++.
La syntaxe:
Les instructions sont terminées par la fin de ligne.
Termineurs proches de XML: /if, /for, etc...
Chaque opérateur n'a qu'une seule fonction, contrairement au
C qui les réutilise différemment selon le contexte.
Les types sont ceux de la vie réelle: number, text, real, ...
Les assignements composés ont la forme:
x + 1 // signifie: x = x + 1
Scructures de données:
Scalaires, xml, class.Structures de contrôle:
- if ... else, if composite
- for ... in ... step
- while ... let
- do case ... while, do case ... until
- switch ... case
- break, continue, return
If composite:
On peut mixer différents types de comparaisons et comparer des types de données différents d'un test à l'autre.
if a
= 10: print "égal"
< 10: print "moins"
else
print "plus"
/if
While:
La structure while a plusieurs formes, et le mot de fermeture let protège contre les boucles infinies.
while x < 10
print x
/while // boucle infinie
while x < 10
print x
let x + 1
Définition d'une fonction:
L'en-tête est similaire à celle du C mais avec plusieurs types retournés éventuellement. Le code de fin est l'instruction return, non suivi d'une valeur si la fonction n'en retourne aucune.
int, text funcname(... arguments...)
...instructions...
return a, b
Commande print simple:
La commande print fait un retour à la ligne après le texte. La commande echo n'en fait pas.
print "Hello world!"
Scanner deux tableaux :
On additionne le contenu de deux listes.
var list1=[1,2,3]
var list2=[10,20,30]
for i, v in list1
print v + list2[i]
/for
Doit afficher: 11 22 33.
Imbriquer du code dans une page HTML:
Le code scriptol est converti en PHP par le compilateur solp.
<?sol
print "code imbriqué en page html"
?>
Utiliser des variables réactives
Cela permet de programmer par formules, sans avoir à écrire de code pour mettre à jour les variables.
react v1
react v2
react sum = v1 + v2
sum.output = 'document.getElementById("sum").value = this.value;'
Les variables v1 et v2 sont assignées par l'interface HTML. L'élément HTML dont l'id est "sum" sera mis à jour chaque fois que le contenu des variables v1 ou v2 sera modifié.
Scriptol 2
Avec l'apparition d'un compilateur produisant du code JavaScript, le langage a été adapté pour un nouveau public. Créé à l'origine comme front-end à PHP 4, le langage originel rendait la programation plus simple avec classes et héritage, foreach et autres structures manquant à PHP à l'époque. PHP 5 a fait perdre à Scriptol une partie de son intérêt, et en outre le langage Hack qui ajoute des variables typées, confirme encore cette tendance. Le langage devait s'adapter pour un nouvel environnement.
Le syntaxe s'est rapprochée de la norme qui s'est instaurée au cours du temps, là ou une syntaxe différente n'a pas d'intérêt en soi:
- Dyn est remplacé par var.
- Un tableau littéral est placé entre crochet: [], ce qui est le cas de JavaScript et de nombreux autres langages.
- Méthodes de tableau et dictionnaire et fonctions prédéfinies ont évolué pour se distancer de PHP.
Scriptol 2 requiert l'édition des programmes existants par simples remplacements, sans changement grammatical.
Scriptol 3
La version 3 du langage, qui génère uniquement du code JavaScript, implémente les concept de programmation réactive et de but. Le langage est aussi simplifié pour le débarasser de fonction utile uniquement pour le code cible PHP.
Un but est est une condition représentée par une expression à laquelle on associe un groupe d'instructions, qui est exécuté en boucle jusqu'à ce que la condition soit satisfaite. Comme il est possible de faire dépendre un but d'autre but, on peut transposer plus intuitivement des traitements complexes qu'avec la programmation procédurale. Et comme les buts peuvent être asynchrones, il est aussi facile de programmer un robot.
Outil et documents
- Description et compilateur
Scriptol et PHP avec un compilateur. Outils et scripts pour les applications Web 2.0.