Ce site se verra mieux dans un navigateur qui supporte web standards, mais il est accessible à tous les navigateurs et terminaux Internet.

Je Bosse Sur CityDesk : (3)

[ Nav : Accueil > Traductions/JeBossesurCityDesk-4.html]

Joel Spolsky

17 octobre 2001

Une pièce (partie) de ....A part of Joel on Software, http://www.joelonsoftware.com

Seul le lien original fait référence

Comme tous les bons hackers, j'ai commencé à programmer jeune, en utilisant le compte de mon papa à l'Université du Nouveau Mexique [Image] sur un mainframe IBM 360. Mais j'ai suivi mon premier vrai cours d'informatique pendant ma première année d'études à l'Université. Les cours portaient sur le C et l'assembleur. Il y avait des centaines d'étudiants, la plupart d'entre eux, ayant comme moi touché au Pascal ou au Basic dès leur plus jeune âge.

Le cours se déroulait allègrement jusqu'au jour où le professeur aborda les pointeurs.

A rock in Bandelier Park, New Mexico

Catastrophe.

Brusquement, la majorité des étudiants de la classe furent perdus. Pour une raison inexpliquée, quelques-uns ne semblaient plus être capables d'écrire du code avec les pointeurs. Je suppose qu'ils étaient nés sans la partie du cerveau qui s'occupe de l'indirection.

Depuis, j'ai mentalement divisé le monde en 3 groupes. Le groupe le plus important est celui de ceux qui ne peuvent pas programmer du tout. Il y en a un autre, plus petit, de ceux qui peuvent programmer, mais sans pointeurs. Et il y a un tout petit groupe d'individus qui peuvent programmer, même avec des pointeurs. Cette fine fleur peut même comprendre ce que Cstring*& signifie en C++.

Mon premier boulot chez Microsoft était d'intégrer un langage de script valable dans Excel. Même s'il m'était donné totale liberté pour implémenter tout langage qui me semblerait approprié, nous nous sommes orienté vers le Basic pour plusieurs raisons. (1) Nous avions une équipe bossant sur un compilateur Basic dans la boîte. (2) Vous n'avez pas besoin de pointeurs, ce qui veut dire que (3) plus de personnes sont plus à l'aise en utilisant du Basic qu'avec n'importe quel autre langage. En fait, Visual Basic est le langage le plus vendu de tous les temps.

Visual Basic est un outil extrêmement productif pour écrire du code, tout particulièrement le code de l'IHM (ndt GUI?). Vous voulez du texte en gras sur une boîte de dialogue ? Cela se fait en un clic avec VB ? Maintenant essayez de le faire avec les MFC. Vous devez créer un contrôle de sous-classe, un sacré bordel, vous devez tout connaître sur les LOGFONTS, les sous-classes Windows et un paquet d'autres choses et vous aurez besoin d'environ 3 lignes de codes une fois que vous aurez trouvé la classe pile-poil.

Mais il y a beaucoup de code spaghetti dans les programmes VB, soit parce qu'ils sont développés "vite fait mal fait", soit parce qu'ils sont écrits par des hackers sans formation à la programmation orientée objet, ou même à la programmation structurée.

Ce que je me demandais c'était ce qu'il se passerait si l'on prenait l'élite des programmeurs C++ qui rêve en pointeurs et qu'on les fasse coder en VB. Ce que j'ai découvert chez Fog Creek c'est qu'ils deviennent des machines à coder super-efficaces. Leur code est de très belle qualité, il est orienté objet et robuste, mais vous ne perdez pas de temps à utiliser des outils surdimensionnés par rapport à vos besoins. J'ai passé des années à écrire du code pour C++/MFC et des années à écrire du code en Visual Basic, et permettez-moi de vous dire que VB est tout bonnement beaucoup, beaucoup plus productif. Michael et moi avons bien ri aujourd'hui en découvrant que depuis 3 mois quelqu'un vendait un produit pour reporter les erreurs dans la bêta à 5000 $ que Michael a mis 2 jours à implémenter dans CityDesk. (Et en fait nous implémentons une bonne partie du nôtre en C++/ATL). Et je vous garantis aussi que notre code Visual Basic dans CityDesk a un meilleur aspect que la plupart du code que vous trouverez écrit dans les langages machos (ndt de mecs, de durs ?) comme le C++, parce que nous sommes de bons programmeurs, et nous écrivons des commentaires, et nos noms de variables sont bien choisis, et nous faisons les choses simplement, pas de manière ultra-sophistiquée (ndt amphigourique ?), et ainsi de suite...

Je vais être un peu polémique. Durant mes années d'expérience, j'ai vu beaucoup de langages et de modes de programmation apparaître et disparaître. Mais je n'ai jamais vu qu'UNE, c'est la réalité, UNE seule caractéristique de langage qui améliore vraiment votre productivité de manière significative. Non, ce n'est pas la programmation orientée objet ; non ce n'est pas de la programmation par intention ou les assertions ou la programmation par l'exemple ou CASE ou UML ou XML ou Java. La seule chose qui améliore votre productivité de programmeur est d'utiliser du "code managé" - ce qui veut dire, utiliser un langage dans lequel la gestion de la mémoire est automatique. Java et les langages .NET font cela avec leur ramasse-miettes ; VB le fait à travers son comptage de référence ; ça ne m'intéresse pas de savoir comment c'est fait, je veux seulement pouvoir concaténer des chaînes sans avoir à m'inquiéter de où sera stockée la chaîne.

Un des trucs en ce qui concerne Visual Basic est qu'il ne vous permet toujours pas d'accéder à l'ensemble des gadgets de Windows dont vous avez besoin pour faire une application qui pète. Mais ce qu'il fait, presque mieux que n'importe quel autre environnement de programmation, c'est de laisser une porte ouverte vers le C++ (ou d'appeler des API écrites en C) quand vous êtes coincé ou quand vous avez besoin de mettre le turbo. Par exemple, vous pouvez obtenir le  HWND d'un contrôle et le manipuler en natif, ce qui n'est pas le cas de Java. Autre exemple, beaucoup de code hors IHM de CityDesk, des boucles où la vitesse est importante, comme le compteur de mots, est en fait implémenté en C ou C++ pour la rapidité. Cette capacité nous rassure quant à l'utilisation de Visual Basic même s'il ne peut tout faire et qu'il a tendance à être lent en gestion des chaînes. Mais puisque nous sommes tous des développeurs C++, nous ne craignons pas de créer une DLL ou un OCX pour compter les mots ou analyser un script, ou appeler une API de Windows. Ainsi environ 5% de CityDesk tourne véritablement en C ou C++, et nous migrerons probablement un peu plus de code vers C+ pour accélerer encore un peu les boucles internes.

Bien sûr, Visual Basic n'est pas le langage parfait pour programmer. Il est suffisamment orienté objet mais il y a des petites choses que vous ne pouvez pas faire avec, comme avoir des classes de base réutilisables par implémentation. Il est limité à Windows. Et le pire en ce qui concerne le codage en VB est que les gens pensent que vous n'êtes pas cool parce que votre code n'a pas de { et }. Je peux vivre avec cette honte si cela signifie que je suis plus productif.

Philosophiquement, je pense que C# a un brillant avenir dans le monde de la programmation d'IHM sous Windows. Il n'est pas aussi embarrassant que VB, et il utilise la forme de syntaxe appréciée des développeurs C/C++/Java. Les développeurs VB envisageant de migrer à VB.NET ne pourront pas le faire sans mal, parce qu'il y a tant de différences majeures dans l'environnement de programmation. Même Microsoft admet que vous ne pouvez pas passer de VB à VB.NET, vous devez réécrire. Et c'est suffisamment compliqué pour qu'un grand nombre de développeurs profite de cette opportunité pour s'intéresser à ce qui existe ailleurs. Je pense que nombre d'entre eux choisiront C#, parce que virtuellement il s'agit du même langage que VB.NET avec de légères différences de syntaxe et carrément moins de casseroles derrière lui.

Et Java ? Oui, j'ai utilisé Java de façon intensive, mais malheureusement le langage, les librairies de code, et particulièrement les librairies d'IHM sont tout simplement trop rustiques pour une application bureautique commerciale. J'aime le langage et j'apprécie le bénéfice qu'apporte le "write-once-run-anywhere", mais franchement peu de logiciels de bureautique sont vendus sur Sun Solaris et je pense que WORA profite plus à Sun qu'aux développeurs de logiciels, et je ne veux pas écrire une application qui se comporte moins bien sur les ordinateurs de 95% de mes clients pour satisfaire 5% des plates-formes folkloriques. Chaque application Java RESSEMBLE à une application Java, met une éternité à se lancer, et ne paraît pas être native. Puisque l'ambition de CityDesk par rapport à ses concurrents est d'être pourvu d'une excellente IHM, c'est un point que je refuse de sacrifier.

Je suis quasiment certain que je vais maintenant recevoir un million de méls des amoureux de tcl/tk, ou Delphi, ou C++ Builder, ou NextStep, ou Cocoa, ou perl, ou Python, ou RealBASIC, ou tout autre environnement de programmation qui convient ou non pour créer une IHM Windows. C'est bien. Je ne veux réellement pas entrer dans la polémique sur les caractéristiques des langages de programmation ou de leur environnement de programmation. J'essaie juste d'expliquer pourquoi nous avons décidé d'utiliser VB pour la partie IHM et C++ pour les portions de code sensibles à la vitesse. Si vous tenez vraiment à jouer à la guerre de religions à propos des langages de programmations, s'il vous plaît faites le sur le groupe de discussion !

Je Bosse sur CityDesk : 1 2 3 4 5 

The contents of these pages represent the opinions of one person.
All contents Copyright 1999-2002 by Joel Spolsky. All Rights Reserved.

Valid HTML 4.01!
Human To Human

Ce site sera plus agréable avec un navigateur supportant les standards du web, mais il est quand même accessible par tous les navigateurs.


via FreeFind
[page faite avec CityDesk] site meter