1. Avant-propos d'Andrei Alexandrescu ▲
Ceux qui, parmi nous, connaissent Ali peuvent remarquer que son livre sur le D est imprégné de sa personnalité : direct, patient, et sympathique sans donner dans la flatterie.
Il y a un but dans chaque phrase et, avec chacune d'elles, un pas en avant ; ni trop rapide, ni trop lent. « Notez que opApply() elle-même est implémentée avec une boucle foreach. Ainsi, la boucle foreach dans main() finit par faire un usage indirect de foreach sur le membre points ». Et ainsi de suite, avec juste le nombre de mots nécessaires. Et dans le bon ordre, aussi ; Ali fait un travail remarquable pour présenter les concepts du langage — qui, surtout pour un débutant, arrivent « en parallèle » de manière écrasante — de façon séquentielle.
Mais il y a aussi quelque chose que j'aime beaucoup avec Programmer en D : il s'agit d'un bon livre pour apprendre la programmation en général. Vous voyez, un bon livre introductif sur Haskell enseigne la programmation fonctionnelle en cours de route, de façon implicite ; un sur le C vient avec des notions de programmation système ; un sur le Python avec du scripting, et ainsi de suite. Qu'enseignerait, alors, un bon texte introductif au D ? Idéalement, la Programmation avec un P majuscule.
D encourage une attitude du style « utiliser le bon outil pour la tâche à réaliser » et permet à son utilisateur de taper dans une grande étendue de techniques de programmation, sans mettre trop de particularités en travers du chemin. La manière la plus amusante d'appréhender la programmation en D est de le faire avec un esprit ouvert, parce que pour chaque façon de concevoir qui devient non naturelle, il y a la possibilité de la retravailler pour obtenir la bonne architecture en choisissant une implémentation, une approche, un paradigme différents. Pour choisir au mieux ce qui correspond le mieux, l'ingénieur doit connaître l'étendue des possibles — et Programmer en D est un excellent moyen de munir quelqu'un de cette connaissance. L'assimiler n'aide pas seulement à écrire un bon code en D, mais écrire un bon code tout court.
Il y a de bons conseils stratégiques, aussi, qui agrémentent l'enseignement de la programmation et des concepts du langage. Enseignement intemporel sur éviter la duplication de code, choisir de bons noms, rechercher la bonne décomposition des étapes et plus — tout est là, des bidouilles rapides et grossières progressivement transformées en solutions robustes, exactement comme elles devraient l'être dans la pratique. Au lieu de tomber dans le piège du « fait rapidement », Programmer en D se concentre sur le « fait proprement », au plus grand bénéfice de son lecteur.
J'ai longtemps pensé que le D est un bon premier langage de programmation à apprendre. Il expose ses utilisateurs à une variété de concepts — systèmes, fonctionnel, orienté objet, généricité, génératif — honnêtement, simplement et sans prétention. Tout comme le livre d'Ali, qui, pour moi, représente une excellente occasion de le faire.
Andrei Alexandrescu
San Francisco, Mai 2015