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
|
|
|
|
Test de P2C
(Article écrit par Cédric Beust et extrait d'A-News (Amiga News) - juillet 1990)
|
|
Pour les allergiques au C
Voici un traducteur de programmes Pascal en C. C'est bien pensé, pas vrai ? Ainsi donc, comme son
nom l'indique, P2C (prenez l'accent yankee et prononcez "pitouci") prend un programme Pascal et le transforme
en son équivalent en C. Les programmes obtenus sont cent pour cent fonctionnels et le source est très lisible,
étant donné que P2C a été écrit avec pour but principal de donner une base de travail raisonnable aux personnes
désireuses de récrire leurs programmes en C.
Il faut préciser que ce programme sort un peu des DP ordinaires. Pas de panique, il est entièrement DP mais ce
que je veux dire est qu'il ne s'agit pas là d'un utilitaire écrit à la va-vite par un passionné. P2C existe
depuis quelques années déjà sur Unix, et a été porté très récemment sur Amiga. L'effet Unix est le suivant :
étant donné que des milliers de gens travaillent sous cet environnement, on peut assurer avec très peu de chances
de se tromper que les programmes qui y tournent sont intégralement dépourvus de bogues.
P2C n'échappe pas à la règle : c'est un traducteur qui a déjà fait ses preuves et qui est rodé à la perfection
(bon, d'accord, un programme sans bogue, ça n'existe pas. Disons que vous aurez du mal à les trouver, quoi.
Ce qui revient au même).
Le tour du propriétaire
P2C comprend un nombre impressionnant de dialectes Pascal. Citons en vrac HP Pascal, Turbo/UCSD Pascal, DEC VAX
Pascal, Oregon Software Pascal/2, Macintosh Programmer's Workshop Pascal et Sun/Berkeley Pascal. La
syntaxe de Modula-2 est également autorisée. Il possède pour chacun des Pascal cités des directives de traduction
particulières afin de produire un code le plus proche possible de l'original.
Bien, me direz-vous, mais si P2C a été initialement conçu dans un environnement Unix, dans quelle mesure peut-on
l'utiliser sur Amiga ? Bien entendu, P2C n'est pas vraiment capable de comprendre ce qu'il traduit. S'il rencontre
quelque chose de bizarre, il le signale dans le code produit mais n'en fait pas une maladie pour autant. Par exemple,
sur le programme suivant qui a largement de quoi rendre perplexe n'importe quel compilateur :
program idiot;
begin IntuitionBase := OpenLibrary ("intuition.library",0);
CloseLibrary(IntuitionBase);
end.
|
P2C ne se démonte pas et, après vous avoir averti des quelques erreurs qui traînent, vous pond le programme C suivant :
Vous remarquerez au passage que P2C émaille son oeuvre des erreurs et avertissements qu'il a détectés au cours de sa
compilation. Cela rend la mise au point de syntaxes ambiguës très aisée. Il a d'autre part pris la liberté de déclarer
lui-même la variable que j'avais un peu volontairement oubliée...
Vous n'arriverez pas à piéger P2C sur les points-clés de Pascal qui ne peuvent être traduits tels quels en C :
les procédures emboîtées. Rappelons qu'en Pascal, il est possible d'emboîter des procédures et que les procédures les
plus emboîtées ont toujours accès aux variables locales et paramètres des procédures emboîtantes (respirez un bon
coup et relisez calmement).
En C, les choses sont beaucoup plus simples, et il faut donc respecter scrupuleusement cette sémantique, certaines
variables pouvant en cacher d'autres (sic). Je n'entrerai pas dans les détails de l'élégante solution utilisée par
P2C, mais je me contenterai de vous dire que celle-ci reste très lisible pour peu que vous ayez certaines notions
de liens statiques et autres petites joyeusetés de la science de la compilation (dans le cas contraire, n'utilisez
pas de procédures emboîtées, je pense que cela apporte beaucoup plus de problèmes que cela n'en résout).
D'autre part, la sémantique de Pascal est tellement confuse que les quelques erreurs que P2C commet parfois peuvent
être largement ignorées (par exemple, saviez-vous qu'en Pascal, un "for i := 1 to 0" ne change pas la valeur de
la variable "i" ? C'est-à-dire qu'elle n'est pas initialisée à "1" si on ne rentre pas dans la boucle).
Autre point très intéressant de cette excellente distribution, les sources sont intégralement livrés. Pour être plus
précis, l'archive (du type .Lzh) fait 750 ko et occupe deux Mo une fois désarchivée... D'autre part, P2C
accepte d'être paramétré au cas où un nouvel idiome Pascal viendrait à faire son apparition (on peut cauchemarder).
Bref
On a affaire à excellent DP qui aidera sans aucun doute les indécis à évoluer vers un langage qui,
s'il n'est pas forcément meilleur, est incontestablement plus fonctionnel que Pascal.
Nom : P2C.
Développeur : Dave Gillespie, portage Amiga par G. R. Walter.
Genre : outil de programmation.
Date : 1990.
Configuration minimale : Amiga OCS, 68000, 512 ko de mémoire.
Licence : gratuiciel.
Téléchargement : Aminet.
|
|