Comparison PB - EB (in french)
Posted in 1996
Voici ci-dessous le commentaire d'un developpeur francais connaissant deja Eclipse Builder et qui nous a envoye ce message concernant sont point de vue apres plus de 3 semaines de travail sur PowerBuilder. --------------- De l'utilisation de PowerBuilder (PB) quand on connait EclipseBuilder (EB)* Ca fait maintenant trois semaines que je travaille dessus (PB), je commence donc a avoir quelqu'*opinions sur l'environnement de developpement en architecture client-serveur le plus prise a l'heure actuelle, si j'en juge par le contenu des annonces d'offre d'emploi. Je completerai cette note d'informations plus tard n'ayant en effet pas la pretention de dominer un tel AGL en si peux de temps. Ma premiere impression est : ayant deja une certaine experience du Client-Serveur et du developpement evenementiel, je n'imaginais pas que la prise en main de PowerBuilder me poserait autant de problemes (honnetement, je ne pense pas avoir mis autant de temps a demarrer avec Eclipse Builder). En fait, j'etais perturbe par le fait de ne pas retrouver ce que je connaissais dans EclipseBuilder : si on trouve dans les deux produits les memes 'modules' (administration de la base de donnees, traitements serveur et traitements clients) ils sont de par leur concept completement differents : avec PowerBuilder, c'est l'apologie du developpement objet avec tout ce que cela comporte, a savoir hierarchie, heritage, avantages et inconvenients (les inconvenients residants dans la delicatesse de la definition des classes d'objets et surtout dans leur maintenance, les avantages etant bien sur la limitation du code source). La seconde grosse difference reside dans le fait que la notion de 'message-path' n'existe pas dans PowerBuilder. Il m'a donc fallu completement faire abstraction des techniques que je connaissais pour ne retenir que les concepts lies au CS et a l'evenementiel afin de pouvoir commencer a decoller. Pour ce qui concerne l'administration des bases de donnees, je suis en territoire connu : EB et PB proposent les memes fonctionalites avec par contre plus de securite (ce qui est souvent handicapant en phase de developpement) du cote de PB. Par exemple on ne peut plus toucher a la definition physique des tables des qu'elles contiennent des donnees, que se soit le typage des colonnes, la longueur des colonnes char ou varchar, la propriete NOT NULL. En fait on ne peut plus qu'ajouter des nouvelles colonnes. La gestion des liens est tres efficace mais sa representation graphique est plutot brouillonne. Un avantage serieux pour EB : la notion de 'context' que je n'ai pas trouvee dans PB (a moins que j'ai mal cherche). Un autre mauvais point pour PB : pour pouvoir visualiser la totalite des definitions, parametres ou proprietes d'un meme element de la base, on est oblige de se deplacer dans diverses fenetres ou boites a onglets dont beaucoup sont modaux. On apprecie, et c'est une constante de ce produit que je qualifierai donc de pas intuitif pour deux ronds. En conclusion sur ce chapitre je donne un avantage a EB. J'en viens au developpement de l'interface. PB propose a la creation de toute nouvelle application la creation d'un squelette comportant entre autre un menu standard (Fichier, Edition, Aide), une fenetre MDI propre a Windows (Multi Document Interface) plus quelques autres objets. Comme on nous en a deconseille l'utilisation, je n'ai pas insiste. Une grosse difference par rapport a EB : on ne peut pas decouper une application en differents modules ou projets pour reprendre la terminologie d'EB. De plus, une application contient imperativement une bibliotheque situee dans le meme fichier que l'appli elle-meme*!! Apres, on peut en ajouter autant que l'on veut. Pour l'interface, PB propose 4 types d'objets : des barres de menu, des fenetres, des controles (equivalents aux boutons d'EB) et des datawindow. Ce sont ces derniers qui assurent le lien entre la base de donnees et l'interface graphiques (voir plus loin). La similarite entre EB et PB pour les fenetres et les controles reside dans le fait que l'on retrouve pratiquement les memes attributs modifiables par scripts. Un point negatif pour PB : si l'on peut donner la possibilite a une fenetre d'etre 'resizable', il n'existe pas les attributs suivants : - pour les fenetres : 'largeur maxi', 'largeur mini', 'hauteur maxi', 'hauteur mini' et 'memorisation des user's changes'. - pour les controles : 'accrocher en haut', 'accrocher en bas', 'accrocher a droite' et 'accrocher a gauche'. S'il veut gerer ces proprietes, le developpeur se doit de les scripter (cas des dimensions mini-maxi et des boites d'ancrage) et de stocker les dernieres coordonnees de chaque fenetre dans une table prevue a cet effet ou dans le fichier '.INI'. Bien sur, avec la notion d'heritage entre objets, on a relativement vite fait une fois pour toute de creer les objets et fonctions necessaires a la gestion d'un tel comportement. Mais bon, il faut les creer ! Dans la colonne 'avantage a PB' par contre, on peut attacher n'importe quelle barre de menu a chaque fenetre, creer des fenetres MDI, filles de MDI, modales * Pour terminer (mais j'en oublie peut-etre encore), il est possible de creer des 'window functions' et des 'instances variables' qui sont donc des caracteristiques propres aux fenetres pour lesquelles on les a declarees. Pour le reste des objets classiques, il n'y a pas vraiment de difference entre PB et EB. A part une peut-etre mais qui est plus liee a Windows : ON PEUT ABSOLUMENT TOUT FAIRE AU CLAVIER MEME SANS RACCOURCI CLAVIER ; a savoir que par tabulation on peut amener le focus sur tous les types de controles : il suffit alors de taper <enter> pour simuler un clic sur un bouton commande, <espace> pour changer l'etat des boites a cocher et les fleches de direction pour les groupes de boutons radio. De plus, <alt> t'envoie dans les menus pilotables par les touches de direction et <alt> + <tab> permet de changer de fenetre active. Par contre je ne sais pas si on retrouve ces fonctionnalites dans la version Mac de PB (et oui, il parait que ca existe). J'en arrive maintenant a un objet particulier de PB, les 'DataWindows'. Ce sont elles qui permettent le dialogue avec la base de donnees. Elles permettent avec plus de possibilites de faire ce que fait EB par l'intermediaire des cluster et sql-list (avec ou sans curseur). Ce sont en fait des sources de donnees dynamiques. Le developpeur construit des requetes parametrees ou non et la visualisation du resultat de la requete dans le meme objet. Ensuite, il creera dans ses fenetres des controles de type datawindow et etablira un lien entre le controle datawindow et l'objet datawindow. Ce lien peut etre modifier par script, tout comme le parametrage des objets datawindow. Le premier interet est bien sur la garantie d'une interface standardisee. Mais ce n'est pas tout : il n'y a pas de notion 'cursor list' ou non (PB se charge de gerer tout seul les listes volumineuses, et c'est transparent pour l'utilisateur et le developpeur), les possibilites offertes pour visualiser les donnees sont tres variees (on retrouve bien sur les listes et ecran de saisie classiques, mais aussi entre autre les listes de type 'grid' ou tableur, d'ou la possibilite de redimensionner et/ou changer l'ordre des colonnes, tous les types de g