Delphi, Visual Basic, C++, FoxPro, PowerBuilder. La liste est longue.
Les éditeurs de logiciels rivalisent darguments pour vanter la simplicité et la puissance des produits quils proposent. Les forums informatiques se font lécho de remarques plus ou moins flatteuses (ou plus ou moins critiques) à légard de tel ou tel produit.
Alors y a-t-il de bons et de mauvais produits ?
Je suis consultant indépendant. Jinterviens sur Delphi, Visual Basic, et Foxpro. Janime sur ces deux derniers des réunions de formation. Mes missions seffectuent chez le client en équipe avec ses propres collaborateurs.
Il ma semblé intéressant de marquer un temps dans les développements et de réfléchir à ce quapporte véritablement chacun de ces outils. Mon but nest pas de dresser ici un tableau comparatif des fonctionnalités de chacun mais plutôt de les replacer par rapport au besoin final et au contexte commercial.
Autant de projets, autant de personnages
Lentretien avait duré une demi-heure avec le responsable du service Immobilier. Il supervisait une quinzaine de rédacteurs et de négociateurs.
Pour linstant il était debout près de lordinateur dune secrétaire et me regardait en souriant comme un qui va en raconter une bien bonne.
– Ce que je vais vous montrer Monsieur ma demandé des semaines de travail. Des soirées entières. Visual Basic est un produit très facile, très souple et jen ai tiré le meilleur parti. Ainsi jai défini mes variables au fil de leau, à chaque fois que jen avais besoin. Jai défini une option Implicit et voilà. Vous connaissez loption Implicit ?
– Oui mais ce nest pas très rigoureux comme méthode.
– Ca cest votre problème. Si cela ne vous plaît pas vous modifierez. Mais ce que jai fait fonctionne parfaitement.
Il cliqua sur une icône et un message derreur barra lécran : Fatal error. File Not found.
Pour le coup il sassit en maugréant.
– Evidemment ils ne sont pas techniciens. Ils cassent tout.
Finalement le logiciel se lança. Cétait des écrans avec des objets énormes de toutes les couleurs. Régulièrement des messages conversationnels apparaissaient et simulaient un dialogue avec lutilisateur : Cest parfait ! Etes-vous sûr(e) de ce chiffre ? Alors bravo !
La mission dura trois mois. Jai synthétisé en un seul écran une vingtaine de petits formulaires plus ou moins semblables. Surtout jai structuré le code pour aboutir à une réécriture quasi complète. Pourtant une chose était certaine : le logiciel renfermait au niveau des formules de calcul et des algorithmes un savoir-faire et une connaissance parfaite du métier de limmobilier.
Le métier de consultant est riche de contrastes. Jai déjeuné lautre jour avec un spécialiste Delphi. Le repas durant il me décrivit la puissance de larchitecture objet quil avait mise en place.
De temps à autre, pour limiter sans doute le côté doctoral (ou simplement pour faire jeune) il émaillait dabrégés ou de mots dargot.
– Nous avons pensé une architecture trois tiers. Bien sûr je me suis attaché au polymorphisme. Jai fait la démo avant la mise en dév. Ils étaient cassés les mecs.
– Et le logiciel ? Quelle est sa fonction ?
– Des suivis de tab financiers. Du moins je crois
Ce qui résulte de ces deux anecdotes cest que la valeur de chaque logiciel va être fonction de sa capacité à répondre à la fois aux attentes dun super technicien et en même temps à la faculté dadaptation dun homme de terrain.
[pagebreak]
Les IHM : Interfaces Homme-Machine
Jai connu la micro informatique au début des années 80. A cette époque lécriture de plusieurs dizaines de lignes de code étaient nécessaire avant dafficher le moindre écran. Qui ne disposait pas de suffisamment de connaissances ne voyait donc jamais son logiciel se lancer.
Aujourdhui nous disposons de RAD (Rapid Application Development). Delphi, Visual Basic, FoxPro, PowerBuilder etc
sont des RAD. Quelques clics de souris et le futur écran saffiche déjà.
Encore quelques lignes de code (parfois grapillées sur Internet) et cela fonctionne tant bien que mal.
La palette des objets graphiques permettant la réalisation des écrans diffère très peu dun environnement Delphi à un environnement Visual Basic.
Outre les classiques Libellés ou Champs de saisie les objets de Liste, Listes déroulantes (combobox) sont quasiment identiques. Les objets de grille sont aussi en standard.
Bien sûr il existe des variantes : Visual FoxPro propose par exemple des Listes déroulantes à plusieurs colonnes.
Cependant globalement pour lutilisateur final la convivialité du logiciel qui sera livré sera identique quel que soit loutil employé pour son développement et lon peut même parvenir au prix dun peu de peine à ce quil ne sache même pas ce qui a été utilisé.
Les choses seront peut-être différentes pour le concepteur.
Visual Basic par exemple permet en valorisant à True la propriété multiline dun champ de saisie de gérer la saisie dun texte libre sans imposer comme Delphi ou Fox le remplacement par un objet spécifique.
Le fait denfermer dans un cadre graphique plusieurs objets attachés à une même fonctionnalité (les éléments dune adresse par exemple) nauront sur Delphi ou Visual Basic aucune incidence sur le code informatique.
Ce sera différent pour FoxPro car chaque élément aura alors le cadre pour parent et non plus lécran lui-même.
Plus importante est la notion de classe pour la réalisation dobjets métier. Sous Visual Basic il va sagir dActiveX. Ce sont des éléments autonomes que lon place le plus souvent dans le répertoire Windows et que lon inscrit en base de registre. Un même ActiveX peut être appelé par différents logiciels.
Sous FoxPro sous le nom de Classe depuis sa version 3 en 1995 et sous Delphi sous le nom de Cadre depuis sa version 5 trois ans après ces éléments son inclus dans le projet lui même.
Cela présente deux avantages : tout tient dans lexécutable livré à lutilisateur final. Oubliées les copies dans le répertoire de Windows et linscription en base de registre.
Surtout le programmeur qui utilise un objet de Cadre ou de Classe peut, dans son projet, en modifier la présentation en déplaçant les objets qui le composent, en neutralisant certains évènements.
Enfin autre aspect déterminant pour le concepteur : lassistance du compilateur.
Quasiment inexistante sous FoxPro qui se contente de modifier la couleur des mots réservés elle consiste sous Delphi ou Visual Basic à proposer demblée, dès la saisie du point après un nom dobjet, lensemble de ses propriétés et de ses méthodes.
Visual Basic pousse même jusquà la rectification de la casse des mots réservés et des noms de variables.
Il est ainsi possible de limiter au maximum les erreurs liées à la compilation. Le débutant (ou linformaticien confirmé en panne de mémoire) voit safficher, dès la saisie du nom dune fonction la liste des paramètres qui lui sont nécessaires. La règle vaut aussi pour les fonctions et les procédures du projet lui-même.
Le debuggage diffère sensiblement dun environnement à lautre.
Lorsque lon sest lassé des messages de Delphi indiquant que loptimisation du code ne permet pas laffichage de certains espions on apprécie à sa juste valeur celui de Visual Basic. Sa souplesse va jusquà permettre la modification du code pendant lanalyse et de déplacer lindicateur de ligne de traitement en cours. Ainsi en cas derreur, une fois la correction apportée, lexécution est reprise à lendroit même de linterruption ou quelques lignes plus en amont. Cette fonctionnalité représente des heures déconomie sur le global de temps de développement dun projet.
[pagebreak]
La connexion aux données
La grande majorité des outils de développement est prévue pour fonctionner dans un contexte de client-serveur et se connecter à une base de données comme Oracle ou SQL Serveur.
Même Access ou FoxPro qui disposent de leur propre moteur de données sont dotés de ces moyens dinterface : ADO (Access Data Object) pour Visual Basic ou Access, ADO ou DB-Express pour Delphi, SqlConnect pour FoxPro.
Ces environnements proposent en outre des moyens dexploiter au mieux les sélections denregistrements qui ont été effectuées : déplacement dans le jeu denregistrements, localisation, mise à jour, etc
En synthèse donc ni linterface graphique ni la connexion aux données ne peuvent constituer un argument valable pour retenir tel ou tel outil de développement.
Il sagit pourtant dun aspect essentiel mais le choix se situera à un autre niveau : formation ? déploiement ?
Le déploiement dune application
Windows a révolu le temps ou la livraison dun logiciel se limitait à la copie de quelques fichiers que lon apportait sur une disquette. Le CD Rom est devenu désormais lunité de valeur.
Parallèlement à lexécutable lui-même est jointe une série de fichiers qui va en permettre le fonctionnement.
Cest à ce niveau que vont se situer les principales différences :
– Sous Delphi
Lexécutable est autonome. Il est sensiblement plus volumineux que pour dautres environnements. Les DLL ne seront nécessaires que pour laccès aux données.
Ainsi un programme qui ne gérerait pas dautres données que des fichiers (ASCII ou propriétaires) se limiterait à un simple EXE.
Le fait de connecter une base de données va nécessiter lajout de plusieurs DLL dont la nature sera fonction du moteur employé.
– Sous FOX
Lexécutable bien que suffixé .EXE nest pas autonome et nécessite un runtime. Cest ce qui justifie la liste des fichiers jointe lors de la génération du kit de déploiement.
– Sous Visual Basic
Cest la pire situation. Lexécutable nest pas autonome et il nécessite en outre dy joindre les ActiveX qui auront pu être ajoutés à la version standard (grilles, champs formatés, calendriers).
Lemploi dune base de données, que ce soit Access ou Oracle implique la diffusion de MDAC.exe, compression de plusieurs drivers et qui pèse environ six MO.
Le kit de déploiement peut être réalisé à partir dutilitaires vendus dans le commerce. Chaque éditeur propose avec sa version de compilateur un outil permettant la construction du kit.
Delphi utilise une version allégée dInstallShield. VB et FoxPro utilisent des outils propriétaires.
A ce niveau on comprend que le choix dun outil de développement présente plusieurs implications.
Le fait de copier des ActiveX et des DLL dans le répertoire de Windows et de les inscrire parallèlement en base de registre est indispensable pour assurer le fonctionnement du logiciel que lon est en train dinstaller mais nest peut-être pas sans effet sur des applications existantes.
Cela est sous entendu dans le message diffusé lors de linstallation : un fichier plus récent a été trouvé sur le disque. Voulez-vous le remplacer ?.
Certaines sociétés disposant dun parc important dordinateurs pré-installent les composants.
Le développeur intervenant sous Visual Basic dispose dune liste de composants répertoriés quil peut utiliser. Linstallation de son logiciel se limite aux quelques fichiers quil a réalisés.
Voici comment nous avons traité le problème sur un site fonctionnant sous Visual Basic et pour lequel nous devions disposer dun outil pour envoyer des mails.
Nous avons créé avec Delphi un petit programme avec le composant SMTP. Le programme reçoit en paramètre tout ce qui est nécessaire au composant et place les informations reçues dans ses propriétés.
La livraison inclut un exécutable qui est ensuite appelé avec un ordre Shell :
CCommande = MD_Internet.exe
CCommande = CCommande + MAIL «
CCommande = CCommande + smtp.wanadoo.fr-
CCommande = CCommande + cMailDestin + -
CCommande = CCommande + cNomDestin + -
CCommande = CCommande + cFichierJoint + -
CCommande = CCommande + cTexte + -
CCommande = CCommande + cMailEmetteur + -
Shell Ccommande
Une variante aurait été de compiler ce petit exécutable en un ActiveX ou une DLL mais le résultat aurait été sensiblement le même.
Les difficultés liées aux envois de mails avec Visual Basic (dans sa version 6 du moins) sont ainsi évitées mais le client dispose de toute la puissance dInternet
[pagebreak]
Le niveau technique
Cest peut-être là que se situe la véritable différence.
Jai choisi volontairement au début de cet article deux profils type. En fait beaucoup dentre nous connaissent ce genre de situations et les intervenants dont elles dépendent. Ils savent comme moi que nous ne pouvons négliger ni un profil ni un autre.
Des langages comme Visual Basic sont très tolérants, Foxpro lest encore plus. Delphi, directement issu du Pascal en a conservé toute sa rigueur et sa structure.
La notion des variables très (voire trop) souple dun côté est donc intransigeante de lautre.
Si lon considère que le langage Pascal est issu de lUniversité on comprend sa démarche pédagogique. On peut alors programmer en respectant ses règles de rigueur même dans des environnements de développement plus tolérants. Un code Visual Basic où chaque procédure ou chaque fonction commencera avec la déclaration des variables locales qui y sont employées gagnera en clarté et en réputation de lauteur.
Toutefois un utilisateur lambda peut se voir faciliter laccès à un langage informatique et formuler son savoir-faire de façon plus concrète quun cahier de charge.
Une ligne
Update BASE_Clients
Set Clients_Type = S
Where Clients.CP Like 94%
Est plus facilement exploitable que le littéral
Pour des raisons internes il faudra passer systématiquement à S le type de tous les clients du Val de Marne
Deux conséquences découlent de cet état de fait
Dune part le coût. Un développeur Delphi est réputé plus professionnel et acheté sur le marché plus cher que son équivalent en Visual Basic.
La règle est encore plus injuste quand on voit un développeur ACCESS (donc en fait un développeur Visual Basic) être payé au prix dun utilisateur de bureautique.
Limpact budgétaire devient donc significatif dans la réalisation dun projet dès que lon varie dun environnement à lautre.
Dautre part la valeur de lexpérience. Un développeur Delphi étant plus recherché et mieux rémunéré que son équivalent en Visual Basic, cela engendre une attirance naturelle de beaucoup de jeunes informaticiens vers un outil quils savent mieux considéré. Il suffit de consulter certains forum pour sen convaincre.
Cest profondément injuste si lon considère que la valeur dun logiciel tient plus à sa fonctionnalité et à son ergonomie quà la pureté de son style décriture mais le marché est ainsi fait.
Parallèlement à mes missions je réalise en interne certains logiciels qui sont ensuite exploités notamment en gestion de fichier. Ils me servent aussi de vitrine et jécarte demblée des compilateurs que pourtant japprécie parce que je les sais moins reconnus. Certaines Sociétés font de même au même titre quOracle sera plus côté que SQL Serveur, SQL Serveur plus que FOXPRO et FOXPRO plus quACCESS. Pourtant pour des bases de données petites ou moyennes aucun de ces outils ne démérite.
La conclusion tient donc au fait que lon dispose actuellement sur le marché de produits complémentaires. Les uns dapproche très simple mais qui se révèlent plus lourds à déployer et moins rigoureux.
Les autres dun abord moins intuitif mais qui fournissent un ensemble technique plus cohérent.
Chacun trouve sa place. Des non-informaticiens ont ainsi accès à des outils leur permettant de concrétiser leur métier et leur savoir-faire dans des logiciels maison. Des techniciens peuvent à leur tour produire des logiciels structurés et robustes en utilisant en point de départ ce que les premiers leur proposent.
Visual Basic aidera les premiers. Delphi donnera aux seconds le moyen dun produit fini et professionnel.
Une alternance aurait été une interface de programmation capable de produire en sortie des codes informatiques différents. Ce produit a existé et sest appelé NSDK puis NatStar. Il permet de produire indifféremment du code C, Cobol ou Pascal.
Il na malheureusement pas connu le succès quil méritait.
Visual Basic jusqualors reconnu pour sa simplicité connaît avec sa version .Net un tournant définitif vers des horizons nettement moins évidents.
Faut-il alors considérer comme terminée lépoque où des non-techniciens pouvaient réaliser leurs propres outils et la micro informatique, de moins en moins micro, va-t-elle impliquer un alourdissement des connaissances comme elle a déjà entraîné celui de nos disques durs ?