October 10, 2008

Le Delphi nouveau est arrivé - Delphi 2009

Ca y est: je me décide à écrire cet article pour parler de la nouvelle version de Delphi à savoir l'excellent cru Delphi 2009.

Cela fait maintenant quelques semaines que je travaille avec le produit et je dois dire que je suis plutôt satisfait du résultat ! Au départ j'avais quelques craintes à cause de l'unicode. Mais finalement après avoir converti des dizaines de milliers de lignes de code, je suis content: fort peu de choses sont à modifier dans les applications normales. Et les choses à modifier sont finalement liées à un mauvais usage que je faisais des chaînes de caractères.

Avec de l'unicode (caractères sur 16 bits), il faut bien faire attention à distinguer SizeOf et Length. SizeOf indique le nombre de bytes nécessaires et length le nombre de caractères. Avec des caractères sur un seul byte, il n'y pas pas vraiment de différence. Mais avec des caractères sur 16 bits, c'est tout différent.

Vous allez me demander à quoi l'unicode peut bien servir !? Et bien tout simplement à étendre l'ensemble des caractères que votre application est capable de traiter sans rien de spécial. Delphi 2009 permet de faire des applications qui parlent aussi bien le français que - par exemple - les langues des pays de l'est ou le japonais.

Mis à part l'unicode - qui est une avancée majeure dans le produit - on peut épingler deux autres nouveautés majeures: Les génériques et les méthodes anonymes.

Ces deux améliorations du langage ne vont pas révolutionner votre vie du jour au lendemain. Et pourtant, ce sont deux fonctionnalités qui ouvrent de nouveaux horizons. Cela vaut vraiment la peine de les étudier afin de pouvoir en profiter pleinement.

En deux mots: Les génériques permettent d'écrire du code indépendant du type de données auquel il s'applique. Et les méthodes anonymes permettent de créer des fonctions qui n'ont pas de nom.

L'exemple ultra classique et simple à comprendre concernant les génériques est celui des listes. Pour gérer une liste de quelque chose, on fait toujours les mêmes opération quel que soit le type de chose. Il faut toujours ajouter, supprimer, rechercher les éléments. Sans les génériques, il faut pratiquement écrire les routines autant de fois q'on a de types différents. Un fois pour une liste d'entier, une autre fois pour une liste de chaînes et une troisième fois pour une liste d'objets. Avec les génériques, vous pouvez écrire du code qui s'applique à un type de donnée variable. C'est au moment de l'utilisation que vous indiquer le type effectif. Le compilateur s'occupe du reste. Vraiment puissant dès lors que l'on comprend comment s'en servir pour des choses moins triviales qu'une liste d'items.

Quant aux méthodes anonymes, elles correspondent à des blocs d'instructions qui ne sont pas associés à un nom mais directement utilisés pour être assignés à des variables ou passés en argument à d'autre méthode.

Outre ces amélioration du langage, il y a toute une séries d'améliorations dans l'IDE et la VCL. Un de ces jours j'écrirai peut-être un article sur le sujet. En attendant, jettez un oeil ici.