NetRexx, une approche différente pour un language de programmation

Orienté objet et fonctionnant sur la JVM, ce langage de script est original dans sa conception, et même étrange.

Le language Rexx (REstructured eXtended eXecutor) a été créé par Mike Colishaw en 1970 pour IBM, et implémenté sur l'IBM 370. Il était utilisé comme outil de scripting sur OS/2. Il avait pour but de fournir une syntaxe claire et structurée
NetRexx est une version orientée objet, qui a été écrite en 1997, et qui se compile en bytecode Java pour tourner sur les machines virtuelles Java (JVM).
La dernière version date de 2013.

Langage de programmation Rexx
Une carte de roi (rex en latin) est quelquefois
utilisée pour illustrer le langage.

Pourquoi utiliser NetRexx?

On parle assez peu de NetRexx de nos jours. Il est en fait peu utilisé en dehors de l'environnement IBM.
REXX s'adressait à l'utilisateur néophyte, plutôt qu'au programmeur professionnel. Il pouvait convenir au calcul scientifique mais de nos jours est largement supplanté par Julia et Python dans ce domaine.

NetRexx est conçu pour remplacer Java avec une syntaxe plus simple et a été le premier langage autre que Java à être porté sur la JVM. Il permet aussi de faire des applets en utilisant les API de Java.
C'est un moyen d'utiliser un même langage pour le scripting et les applications, mais de nombreux autres langages offrent la même possibilité. En effet, il est devenu courant de porter un langage sur la JVM (Jython, JRuby, etc...), ce qui rend Netrexx inutile pour une utilisation pratique car il est moins complet.
Son principal intérêt est pour l'étude d'une approche différente dans les langages de programmation et les simplifications dans la syntaxe qu'il apporte.

Des structures de contrôle évoluées

Le langage allie la simplicité de la syntaxe avec la complexité des constructs.

Un programme NetRexx peut être soit compilé en bytecode, ou directement interprété. Dans le premier cas il est compatible avec l'API Java et ses classes.

Même si le langage apporte de nombreuses simplifications qui rendent l'écriture d'un script plus rapide, sa conception semble fantaisiste et était perfectible. C'est un langage puissant mais qui n'apporte rien de particulier en terme de fonctionnalités.

Exemples de code provenant du manuel de NetRexx...

 -- Demo: Attente d'une réponse
           
loop label prompt forever 
    reply=ask 
    select
          when reply.datatype('n') then say reply**3
          when reply='Quit' then leave prompt 
          otherwise say 'eh?' 
    end 
end prompt 
         
say 'Done.' 

Une applette qui affiche "Salut le Monde!":

class HelloApplet extends Applet 
    method init 
        resize(200, 40)
         
    method paint(g=Graphics) 
        g.drawString("Salut le Monde!", 50, 30)

L'applette est chargée avec ce code HTML:

 <applet code="HelloApplet.class" width=200 height=40>  </applet> 

Voir aussi...