Obligement - L'Amiga au maximum

Lundi 29 mai 2017 - 03:53  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

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


Trucs et astuces

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


Glossaire

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


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Soutien

N'hésitez pas à soutenir le projet Obligement



Contact

David Brunet

Courriel

 


Test de Lattice C++
(Article écrit par Cédric Beust et extrait d'A-News (Amiga News) - mars 1990)


Lattice avait fait sensation, il y a quelques mois, en sortant le premier compilateur pour C++ sur Amiga. Le progrès ne se limite pas à l'arrivée d'un nouveau langage sur notre ordinateur bien-aimé : le concept introduit par C++ est à lui seul une petite révolution. C++ n'est, en effet, pas un langage ordinaire, pas plus qu'il n'est du C amélioré, comme je l'ai maintes fois entendu. C'est un "Langage Orienté par les Objets" (LOO). Derrière cette appellation quelque peu inquiétante se cachent beaucoup de notions qui feront bientôt partie de la vie de tous les jours des programmeurs de demain.

Description succincte (sic)

La boîte contient deux disquettes et trois livres. La disquette 1 est dédiée au compilateur lui-même (cfront, cc et blink) et la disquette 2 contient tous les includes du C++ (ils sont bien entendu différents des includes du C).

Deux des trois livres sont consacrés au compilateur Amiga (Reference Manual et guide du langage) et le troisième est une introduction générale aux LOO avec pour support le C++. Notons que c'est une très bonne idée d'avoir inclus ce dernier car il présente le C++ d'une manière objective et portable, et ce pour n'importe quel ordinateur. C'est en fait le premier à lire par le néophyte n'ayant aucune expérience du C++ : les exemples y sont clairs et commentés.

Lattice C++

Une fois les notions de base du langage assimilées, l'utilisateur se reportera aux deux guides du compilateur afin de voir comment l'interfaçage C++/Amiga est réalisé. Mais avant d'aller plus loin, je vais essayer de décrire la notion de LOO afin de la comparer aux langages traditionnels tels C, Pascal ou Modula 2.

Qu'est-ce qu'un Langage Orienté par les Objets ?

La création des LOO a été motivée par la constatation que les "gros" (notion à relativiser) programmes étaient difficiles à entretenir et à mettre à jour par des personnes qui n'ont pas participé à leur élaboration. C'est là que l'idée d'objet a fait son apparition.

Qu'est-ce qu'un objet ? Il s'agit d'un ensemble de champs (appelé aussi classe) qui contient tout ce qui est nécessaire à la manipulation de cet objet : des simples valeurs (entiers, chaînes ou structures plus complexes) aux routines pour les traiter (les méthodes). Ainsi, l'utilisateur n'a pas besoin de savoir quelle est la représentation interne de telle ou telle structure : il n'a qu'à utiliser ce qui lui est fourni et ne peut donc pas faire de bêtises en modifiant des portions de code interdites.

L'avantage d'une telle méthode de procéder est immédiat : que ce soit du point de vue de l'utilisation ou de la maintenance. Prenons par exemple l'objet RastPort. Les routines offertes à l'utilisateur sont :

circle(rayon)
ellipse(r1 ,r2)
line(x1,y1)
delta(x2,y2)
text(chaîne)

L'utilisation d'un rastport se fait tout simplement de la manière suivante :

// Les commentaires C++ sont précédés des deux barres obliques

RastPort rp// Déclaration de l'objet
...
rp.circle(10)// Tracé d'un cercle de rayon 10

La lisibilité de programmes rédigés de cette façon se trouve indiscutablement accrue. Voici en vrac les traits marquants de C++ :

1. La présence du mot-clé "new" autorise la création d'objets très complexes en une seule instruction. Il est également possible de préciser explicitement comment se fait la désallocation de l'objet en fin de programme.

2. Un aspect qui ajoute à la programmation par objets une puissance énorme est la notion d'héritage. Rien ne vous empêche de prendre une classe déjà existante et d'y ajouter vos propres champs. Vous pourriez par exemple enrichir l'objet RastPort d'une routine traçant un rectangle, ou de n'importe quelle autre routine plus complexe. Vous pouvez également déclarer certaines parties de l'objet que vous créez private afin que personne sauf vous puisse y référer, et l'autre partie public, annonçant explicitement les méthodes que vous fournissez à l'utilisateur.

3. Une autre notion quelque peu déroutante est celle de polymorphisme, et elle est liée directement à l'héritage : si une classe A est parente de la classe B (par exemple : B hérite de A), n'importe quel objet b de B peut être utilisé à la place d'un objet de A. Autrement dit, il est possible qu'une fonction accepte des objets de types différents comme paramètre, et ce de façon tout à fait légale (attention : cela n'a rien à voir avec le laxisme de contrôle des types de C. C++ possède au contraire un contrôle des types plus poussé).

4. Une autre notion tout aussi importante (et je vais arrêter là pour cette description car je vois avec inquiétude la page s'agrandir) est l'existence de fonctions virtuelles (virtual functions). Il s'agit de fonctions qui peuvent être récrites par la classe fille, afin de l'enrichir, ou bien de l'adapter à l'objet qu'elle décrit. Les fonctions virtuelles vont de pair avec le polymorphisme.

Il y aurait encore beaucoup de choses à dire pour compléter ce rapide survol des caractéristiques de C++.

Implémentation sur l'Amiga

Le compilateur C++ n'est pas un vrai compilateur, dans la mesure où il ne produit pas directement du langage-machine mais du C. Le cheminement utilisé est le suivant :

Lattice C++

Ces deux opérations sont résumées dans la commande "cc". Le compilateur C++ inclut donc un compilateur C qui est la version 4.0 de "lc" (bien entendu, aucun problème si vous utilisez la version 5.0x).

Il est précisé dans l'introduction qu'un minimum de 1,5 Mo de mémoire et 10 Mo de disque dur sont requis pour travailler confortablement. L'évaluation de la place sur disque dur est largement surestimée (3 Mo suffisent, sauf si vous avez l'intention d'écrire de longs programmes, bien sûr) et il est certain que 1 Mo suffit tout juste pour compiler ne serait-ce que des petits programmes (à titre d'exemple, pour compiler un programme de taille finale 16 ko avec 800 ko de mémoire disponibles, j'ai dû fermer QEd afin de libérer 200 ko).

Il n'est pas trop surprenant de constater que les codes produits sont relativement plus gros que les programmes C équivalents mais cette différence s'atténue sûrement lors de la compilation de gros programmes. La compilation est également plus lente, surtout lors de l'exécution de cfront.

Il est important de garder à l'esprit que le C++ n'est pas destiné aux petits bidouilleurs qui s'amusent à économiser 3 ko en supprimant le startup c.o (mmmh, je me demande de qui il peut bien s'agir...). Seuls les développeurs intéressés pas la création de gros logiciels appelés à être mis à jour régulièrement verront dans l'achat de ce compilateur un investissement sûr garantissant un suivi correct du logiciel. Ces personnes-là ont sûrement à leur disposition suffisamment de fonds pour posséder la configuration minimale, et probablement beaucoup plus en fait.

La programmation sur Amiga

Avec un peu de recul, on constate que la façon dont l'Amiga est structuré se prête très bien à l'établissement d'objets héritant les uns des autres. Cela conduit à des listings parfois surprenants de simplicité, comparés aux équivalents en C ou en assembleur qui sont la plupart du temps précédés par une longue liste d'initialisations et de vérifications. Allez donc jeter un coup d'oeil au listing "console.cp".

La disquette 2 contient d'ailleurs une dizaine de programmes d'exemple explorant à peu près tous les sujets possibles sur Amiga. Ils sont suffisamment commentés pour fournir une base valable à des applications plus vastes. J'aurais cependant apprécié trouver dans la boîte un quatrième livre expliquant plus en détails l'interfaçage entre C++ et Amiga (le Reference Manual se contente d'énumérer les classes et leurs fonctions).

Conclusion

Il est véritablement impossible de donner une impression globale de C++ en quelques pages et j'ai donc volontairement laissé dans l'ombre beaucoup d'aspects tout aussi dignes d'intérêt. Disons pour conclure que l'existence d'un compilateur C++ sur un ordinateur est un fait rare et que cela va incontestablement contribuer à donner à l'Amiga ses lettres de noblesse en tant qu'ordinateur de développement de gros logiciels. On peut compter sur Lattice pour une mise à jour régulière du compilateur ce qui lui assure sans conteste un avenir brillant.

Nom : Lattice C++.
Éditeur : Lattice.
Genre : langage de programmation.
Date : 1988.
Configuration minimale : Amiga OCS, 68000, 1,5 Mo de mémoire.
Licence : commercial.


[Retour en haut] / [Retour aux articles]