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.

Evolution des langages de programmation

On peut utiliser Scriptol:

Une nouvelle version du langage, Scriptol 2, apparaît en 2014 avec un compilateur en JavaScript.

Caractéristiques de Scriptol

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

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