//De <Guide du développeur Delphi 5>
1.2 Qu'est-ce que Delphes ?
Nous posons souvent des questions telles que : « Qu'est-ce qui rend Delphi si performant ? » et « Pourquoi est-ce que je préfère Delphi aux autres outils de programmation ? » Au fil des années, nous avons trouvé deux réponses, une longue et une courte, à des questions comme celles-ci. La réponse courte est : l’efficacité. Pour créer des applications Windows, utiliser Delphi est le moyen le plus simple que nous puissions trouver. Bien entendu, certaines personnes (patrons et futurs clients) ne sont pas satisfaites de cette réponse. Par conséquent, nous devons présenter notre réponse détaillée, qui illustre la combinaison de facteurs qui rendent Delphi si efficace. Nous résumons les facteurs qui déterminent l’efficacité d’un outil de développement logiciel dans les cinq points suivants :
• Performance de l’environnement de développement visuel.
• La vitesse du compilateur et l’efficacité du code compilé.
• Les capacités des langages de programmation et leur complexité.
• Flexibilité et évolutivité de la structure de la base de données.
• Extensions du framework aux modèles de conception et d’utilisation.
Bien que de nombreux autres facteurs doivent être inclus, tels que la configuration, la documentation, le support tiers, etc., nous avons constaté que c'est le moyen le plus précis et le plus simple d'expliquer aux gens pourquoi nous avons choisi Delphi. Bien entendu, les cinq points ci-dessus peuvent également inclure certains facteurs subjectifs, mais la clé est la suivante : dans quelle mesure pouvez-vous être efficace lorsque vous utilisez un outil de développement spécifique ? Comme le montre la figure 1-1, tous les aspects des performances d'un outil sont évalués et quantifiés (entre 1 et 5) et marqués sur chaque axe de la figure 1-1. Enfin, un pentagone peut être obtenu. Plus la surface du pentagone est grande, plus cet outil est efficace.
Inutile de vous dire quelles réponses nous avons obtenues grâce à cette méthode : vous le découvrirez par vous-même une fois que vous l'aurez essayée ! Examinons de plus près les performances de Delphi dans ces domaines et comparons-les avec d'autres outils de développement Windows.
1.2.1 Environnement de développement visuel
Un environnement de développement visuel est généralement divisé en trois composants : éditeur, débogueur et concepteur de formulaires. Comme la plupart des outils RAD (développement rapide d'applications) modernes, ces trois parties fonctionnent ensemble. Lorsque vous travaillez dans le concepteur de formulaire, Delphi génère automatiquement du code en arrière-plan pour les contrôles que vous manipulez sur le formulaire. Vous pouvez également ajouter du code vous-même dans l'éditeur pour définir le comportement de l'application, et vous pouvez également déboguer le programme en définissant des points d'arrêt et des points de surveillance dans le même éditeur.
En général, l'éditeur de Delphi est similaire aux éditeurs d'autres outils, mais sa technologie Code Insight permet d'économiser beaucoup de travail de saisie. Cette technologie est basée sur les informations du compilateur plutôt que sur des bibliothèques de types comme Visual Basic, elle offre donc une gamme d'applications plus large. Bien que l'éditeur de Delphi dispose également de nombreuses options de configuration intéressantes, je pense que l'éditeur de Visual Studio a plus de place pour la configuration. Dans la version 5, la fonction de débogueur de Delphi a enfin rattrapé le débogueur de Visual Studio, avec de nombreuses fonctionnalités avancées, telles que le débogage à distance, l'association de processus, le débogage de DLL et de packages, la surveillance locale automatique et les fenêtres CPU. Delphi prend également en charge le placement et l'ancrage aléatoires des fenêtres lors du débogage et de l'enregistrement de cet état en tant que paramètre de bureau d'une commande. En conséquence, l'EDI de Delphi a obtenu un bon support pour les fonctions de débogage.
Comme on le voit souvent dans certains environnements intégrés (comme VB et certains outils Java), l'avantage d'un débogueur très complet est que lorsque l'application est déboguée, elle peut modifier son code, changeant ainsi son comportement. Malheureusement, cette fonctionnalité n'est pas supportée par Delphi car elle est trop complexe à implémenter une fois compilée en code natif.
Pour les outils RAD (tels que Delphi, Visual Basic, C++Builder et PowerBilder, etc.), le concepteur de formulaires est une fonctionnalité unique. Certains environnements de développement les plus classiques, tels que VC++ et BC++, proposent des éditeurs conversationnels, mais n'intègrent pas le concepteur de formulaires dans le processus de développement. Comme le montre le tableau d'efficacité de la figure 1-1, l'absence d'un concepteur de formulaire réduira l'efficacité globale de l'outil de développement. Au cours des dernières années, Delphi et Visual Basic se sont livrés une concurrence féroce pour améliorer les fonctionnalités du concepteur de formulaires. Chacune de leurs nouvelles versions a de meilleures fonctionnalités que la précédente. Ce qui rend le concepteur de formulaires Delphi unique, c'est que Delphi est construit sur un véritable framework orienté objet. De cette façon, les modifications que vous apportez à la classe de base seront propagées à toutes les classes dérivées. L'une des technologies clés impliquées ici est le VFI (héritage de formulaire visuel), qui est l'héritage de formulaire visuel. La technologie VFI vous permet d'hériter dynamiquement de tout autre formulaire du projet ou de la bibliothèque d'objets en cours. Chaque fois que le formulaire de base change, le formulaire dérivé est immédiatement mis à jour. Cette fonctionnalité importante est expliquée en détail dans le chapitre 4, « Cadre et conception de l'application ».
1.2.2 Vitesse du compilateur et efficacité du code compilé
Un compilateur rapide vous permet de développer un logiciel étape par étape, en modifiant fréquemment le code source, en recompilant, en testant, en modifiant à nouveau, en compilant à nouveau, en testant à nouveau... formant un si bon cycle de développement. Si la vitesse de compilation est très lente, les développeurs devront modifier le code par lots, en effectuant plusieurs modifications avant chaque compilation pour s'adapter à un processus de boucle inefficace. Il améliore l'efficacité de l'exécution, économise du temps d'exécution et génère des codes binaires plus courts. Sa supériorité est évidente.
La caractéristique la plus connue du compilateur Pascal est peut-être sa vitesse, et Delphi est construit sur ce compilateur. En fait, il s’agit peut-être du compilateur de code natif de langage de haut niveau le plus rapide pour Windows. Les compilateurs C++ qui étaient autrefois lents ont fait de grands progrès ces dernières années, en ajoutant des stratégies de liaison et de mise en cache, notamment dans Visual C++ et C++Builder. Mais même ainsi, le compilateur C++ est encore plusieurs fois plus lent que celui de Delphi.
La vitesse de compilation est-elle nécessairement proportionnelle à l’efficacité d’exécution ? Bien sûr que non. Delphi et C++Builder partagent le même backend de compilateur, le code généré est donc équivalent à celui produit par un bon compilateur C++. Selon les dernières normes d'évaluation fiables, Visual C++ est considéré à plusieurs reprises comme le plus efficace en termes de vitesse de compilation et de longueur de code généré, grâce à des mesures d'optimisation extrêmement puissantes. Bien que ces petits avantages soient difficiles à remarquer pour le développement d'applications classiques, ils peuvent entrer en jeu si vous écrivez du code informatique complexe.
La technologie de compilation de Visual Basic est un peu particulière. Pendant le développement, VB fonctionne de manière intégrée et est assez réactif. Ce compilateur est plus lent et le code exécutable généré est bien moins efficace que les outils Delphi et C++.
Java est un autre langage intéressant. Les derniers langages d'outils basés sur Java, JB Builder et Visual J++, affirment que leur vitesse de compilation peut correspondre
C'est comparable à Delphi, mais l'efficacité d'exécution du code généré n'est pas satisfaisante car Java est un langage intégré. Bien que Java progresse régulièrement, sa vitesse d'exécution est encore loin derrière Delphi et C++ dans la plupart des situations.
1.2.3 Fonctionnalité et complexité des langages de programmation
La fonctionnalité et la complexité d’une langue sont aux yeux du spectateur et font l’objet de nombreux débats. Ce qui est simple pour une personne peut être difficile pour une autre ; ce qui peut être d’une fonctionnalité limitée pour une personne peut être parfait pour une autre. Par conséquent, les points suivants sont uniquement basés sur l’expérience et la compréhension personnelles de l’auteur.
L’assembly est fondamentalement le langage le plus puissant. Vous pouvez faire presque tout avec. Cependant, développer même l’application la plus simple en matière d’assemblage est très difficile et peut n’aboutir à rien. De plus, il est parfois tout simplement impossible de conserver un morceau de code assembleur dans un environnement de développement de groupe pendant une période prolongée. Au fur et à mesure que le code est transmis d'une personne à l'autre, puis à la personne suivante, les idées et les intentions de conception deviennent de plus en plus floues, jusqu'à ce que le code ressemble à un livre venu du ciel. En conséquence, nous accordons une note très faible à l’assemblage, car il est puissant mais trop complexe pour presque tous les développeurs.
C++ est un autre langage extrêmement puissant. Avec l'aide de ses fonctionnalités potentielles (telles que les macros de préprocesseur, les modèles, le chargement des opérateurs, etc.), vous pouvez presque concevoir votre propre langage en utilisant C++. Tant que vous utilisez correctement ses riches options fonctionnelles, vous pouvez développer un code concis, intuitif et facile à maintenir. Le problème, cependant, est que de nombreux développeurs abusent de ces fonctionnalités, ce qui peut facilement conduire à des erreurs majeures. En fait, il est plus facile d’écrire du mauvais code C++ que d’écrire du bon code C++. Parce que le langage lui-même n’évoluera pas dans le sens d’une bonne conception – cela dépend des développeurs.
Object Pascal et Java nous ressemblent beaucoup car ils saisissent très bien l'équilibre entre complexité et fonctionnalité. Ils adoptent tous l'approche consistant à limiter leurs fonctionnalités disponibles pour améliorer la conception logique du développeur. Par exemple, les deux évitent le concept d’héritage multiple entièrement orienté objet mais facilement abusé et implémentent à la place une classe unique qui exécute les fonctionnalités de plusieurs interfaces. Ni l’un ni l’autre ne prend en charge un chargement opérateur beau mais dangereux. Les deux disposent de fonctionnalités puissantes, telles que la gestion des exceptions, les informations de type d'exécution (RT TI) et la mémoire à vie des chaînes autogérées. Dans le même temps, aucune des deux langues n’est écrite par un comité de rédaction dédié, mais provient d’individus ou de groupes au sein d’une même organisation qui partagent une compréhension commune de la langue.
Visual Basic a été conçu à l'origine pour permettre aux débutants de démarrer plus facilement et de progresser plus rapidement (d'où son nom). Mais en tant que langage, VB doit constamment apprendre de ses points forts et compenser ses points faibles, ce qui le rend de plus en plus complexe ces dernières années. Afin de cacher ces détails aux développeurs, VB conserve toujours certains assistants pour créer des projets complexes.
1.2.4 Flexibilité et évolutivité de la structure de la base de données
Comme Borland ne dispose pas d'un système de base de données, Delphi conserve ce que nous considérons comme la structure de base de données la plus flexible de tous les outils. BDE est très puissant pour la plupart des applications basées sur des plateformes de bases de données locales, client/serveur et ODBC. Si cela ne vous satisfait pas, vous pouvez éviter d'utiliser BDE au profit des nouveaux composants natifs ADO. Si ADO n'est pas installé, vous pouvez créer vos propres classes d'accès aux données ou acheter une solution d'accès aux données tierce. De plus, MIDAS facilite la mise en œuvre d’un accès à plusieurs niveaux aux sources de données. Les outils de Microsoft (ODBC, OLE DB ou autres) ont logiquement tendance à prendre en charge les propres bases de données et solutions d'accès aux données de Microsoft.
1.2.5 Extensions du framework aux modèles de conception et d'utilisation
Il s'agit d'une fonctionnalité importante qui est souvent négligée par d'autres outils de conception de logiciels. La VCL est le composant le plus important de Delphi. La capacité de manipuler des composants au moment de la conception, de créer des composants et d'utiliser la technologie OO (orientée objet) pour hériter du comportement d'autres composants sont des facteurs clés qui déterminent l'efficacité de Delphi. Dans de nombreux cas, les composants VCL sont écrits à l'aide d'une approche de conception OO fixe. En comparaison, d’autres cadres basés sur des composants sont souvent trop rigides ou complexes. Par exemple, les contrôles Active X ont les mêmes fonctionnalités au moment du design que les contrôles VCL, mais ne peuvent pas être hérités pour créer une nouvelle classe avec des comportements différents. Les frameworks de classes traditionnels, tels que OWL et MFC, nécessitent que vous ayez une grande connaissance de la structure interne, et sans la prise en charge des outils RAD au moment de la conception, leurs fonctionnalités seront inhibées. Un outil qui peut rivaliser avec les fonctionnalités de VCL à l'avenir est le WFC (Windows Foundation Classes) de Visual J++, qui est la classe Windows Foundation. Mais avec le procès de Sun Microsystems concernant les problèmes de Java toujours en cours, l'avenir de Visual J++ n'est pas clair.