Suivez-nous sur X
|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Point de vue : Le langage REBOL
(Article écrit par Brice Fromentin et extrait d'Amiga News - juin 1997)
|
|
LAVA n'est pas Java mais REBOL
Anciennement appelé LAVA et après une longue discussion sur le nom, Carl Sassenrath, auteur de ce nouveau langage, a rebaptisé
sa création afin de mettre un terme à la confusion possible avec Java. Après avoir résumé sa motivation à créer ce langage de
programmation (Cf. cet article), M. Sassenrath
commence à nous détailler les rouages de son bébé.
REBOL, pourquoi faire ?
Profitant de sa documentation, M. Sassenrath nous rappelle les champs d'actions de REBOL :
- Scripts Shell, connu de nous tous...
- Petites applications, comme les gestionnaires de fichiers, présentation multimédia...
- Configuration et démarrage système.
- Mini bases de données.
- Préférences.
- IPC et messages.
- Communication réseau.
- Interfaces de commandes personnalisées.
- GUI.
- Couper, copier et coller.
Ainsi que les objectifs choisis par Carl Sassenrath pour REBOL :
- Productif.
- Conséquent.
- Compact.
- Puissant.
- Portable.
- Ouvert.
- Rapide.
Inutile de trop détailler, voyons plutôt les solutions offertes
Une multitude de types de données. Le plus choquant dans REBOL est le nombre de types de données qu'il gère. On trouve les types
standard comme les "integer", "decimal" et "string" mais aussi des plus exotiques comme les "pair", "quad", "time", "date",
"money", "word", "email", "file", "URL", "block". Ce qui est important dans ces types, c'est qu'ils semblent tous indépendants
de la machine sur laquelle REBOL sera hébergé, mais le type de données va poser un problème. En effet, un type de données
est écrit "%/System:Prefs/date" par exemple, donc du coup, soit REBOL possède un système interne pour gérer les chemins et sur
les systèmes Microsoft, on perdra alors le naturel auquel l'utilisateur est habitué sur son OS, ou pire... Les programmes ne
seront pas portables dès qu'il s'agira d'accéder aux fichiers de façon complexe, comme l'exemple cité.
Pour expliquer le concept de simplicité de REBOL, M. Sassenrath explique que l'exécution du programme n'est qu'une suite
d'évaluations de nouvelles valeurs. S'il est vrai qu'expliquer comme cela, tout paraît simple, n'oublions pas aussi et surtout
que la majorité des langages que nous connaissons peuvent s'exprimer ainsi dans leur grammaire. Rien à redire par contre sur
la variété des types de données et leur expressivité qui est simple à souhait. Notons quand même que les décimaux gèrent
le point ou la virgule, ce qui augmente le naturel pour nous par exemple... Précisons tout de même que les "word" sont des
représentants de valeur en quelque sorte, des noms de variables... et que la notion de "block" qui reste au demeurant très
simple permet une gestion avancée de données complexes. En effet, le block est considéré comme étant soit exécutable ou
contenant des données. Ces dernières seront liées dans leur ordre d'apparition. Bien que REBOL s'en cache, derrière toutes les
belles phrases descriptives, on voit se profiler des listes chaînées probablement indexées.
Dissimuler aussi habilement ces
mécanismes qui peuvent se révéler complexes à assimiler pour le débutant est une bonne chose. Cependant, n'oublions pas que le
programmeur en herbe va vite grandir et que s'il échappe à ces concepts au départ, il se pourrait que cela soit à ses dépens.
Cette remarquable façon de faire accéder aux "blocks" de données est d'une simplicité extrême ce qui permettra facilement d'organiser
les informations que vont traiter les futurs programmes REBOL...
Et si on voyait un exemple
numbers: [ 1 12 123 1234 12345]
until [
print first numbers
numbers: next numbers
(first numbers) < 2000
|
Que fait ce programme ? Il affiche le nombre du block "numbers" actuel jusqu'à ce que le suivant soit supérieur à 2000. Il est
vrai que ce programme est très expressif, à un détail cependant... La construction "first numbers" est-elle réellement naturelle ?
Effectivement, dans ce cas précis, on se déplace à travers le block avec la ligne "numbers: next numbers" mais est-il pour autant
justifié que l'on désigne par "first" le premier élément à partir de la position courante dans le block... Enfin, on en arrive
vraiment au vrai problème que REBOL soulève : peut-on tout simplifier afin que le programmeur, ici, perde complètement de vue
ou ne voit jamais certains fondements importants qui ont mis des années à aboutir ?
D'ailleurs, à ce niveau, la répartie de M. Sassenrath est sans équivoque, REBOL est simple pour résoudre des problèmes simples.
Ainsi, REBOL ne répondra certainement pas à l'attente des programmeurs "experts" qui sont figés dans leur méthode de travail.
On peut aussi se demander pourquoi créer un langage de programmation comme REBOL alors que l'excellent "Click & Create" a les
mêmes objectifs, sans pour autant taper des listings...
Et l'avenir dans tout ça ?
Simplifier les complexes mécanismes de la programmation est une noble intention. Avec ce que REBOL nous laisse entrevoir, il est
certainement sur la bonne voie.
Les problèmes que j'ai soulevés volontairement sont pour montrer que la notion d'expressivité est d'une grande subjectivité et
qu'il ne faut pas penser que REBOL sera la solution idéale pour la meilleure raison du monde : la subjectivité. Ne soyons pas
si pessimistes car pour tout langage il faut en apprendre les règles et REBOL n'y échappe pas évidemment, mais cela ne va
certainement pas en faire un monstre de complexité pour autant.
A mon sens, REBOL, comme le préconise M. Sassenrath, serait le complément idéal d'un OS car ne nous leurrons pas, la concurrence
est très rude pour ce qui est des solutions orientées vers l'utilisateur ou "comment faire des jolis programmes le plus simplement
du monde". En effet, REBOL devra se doter d'un véritable environnement de développement qui pourrait même supprimer la notion
de "taper le programme" grâce à une approche différente comme "Click & Create" ou grâce à des "Wizard" comme dans le Storm C.
Imaginez, par exemple, un OS qui grâce à REBOL nous offrirait des services "portables" ce qui permettrait de résoudre une
multitude de problèmes dans la standardisation des protocoles utilisés dans l'établissement de certaines solutions.
Il est clair que plus REBOL avance, plus on s'aperçoit que derrière sa candeur se cache une solution à beaucoup de problèmes,
voire, dans sa version réseau, il pourra simplifier la maintenance de mécanisme complexe...
|