Les développeurs et les langages de programmation

C’est une question qui tourne souvent dans les discussions avec des néophytes ou des débutants. D’ailleurs cette réponse est inspirée de ma réponse sur Quora. Effectivement, je pense que lorsque l’on débute et que l’on est face à l’énormité de la masse des technologies logicielles, et du nombre de langages de programmation, il y a de quoi être impressionné. Il est difficile de faire une réponse générale, parce que d’une part il faudrait préciser ce que signifie connaitre et ensuite qu’est-ce qu’un programmeur conventionnel ?

Connaitre

Première chose à clarifier, connaitre. Il y a plusieurs niveaux de « connaissance » d’un langage de programmation.

  1. On peut avoir entendu parler d’un langage de programmation, voire l’avoir croisé régulièrement dans des discussions sans jamais l’avoir pratiqué.
  2. On peut avoir essayé un langage de programmation pour un projet personnel ou professionnel et finalement l’avoir laissé tomber.
  3. On peut avoir longtemps pratiqué un langage de programmation et puis l’avoir laissé tomber. On pourrait imagine plusieurs sous-catégories à celui ci :
    1. Trop difficile.
    2. Trop simple.
    3. Plus utilisé.
  4. Et enfin, le ou les langages de programmation que l’on utilise quotidiennement.

Programmeur

Si un programmeur conventionnel c’est quelqu’un qui gagne sa vie en codant des logiciels de 9h à 18h, cela va nous faire négliger pas mal de gens qui codent régulièrement, voire très régulièrement.

  1. Les passionnés, ou « hobbyist« . Qui codent pour résoudre des petits problèmes de leur vie quotidienne.
  2. Les ingénieurs système qui codent pour faciliter leur travail quotidien de surveillance et de mise à jour des systèmes.
  3. Les ingénieurs ou techniciens qui codent pour résoudre des problèmes posés par leur discipline et aussi parce qu’aujourd’hui tout se code.
  4. J’en oublie… Les commentaires sont les bienvenus pour allonger cette liste…

Combien ?

Je ne suis pas vraiment programmeur, mais ça fait un bout de temps que je code, pour différentes raisons énumérées précédemment, de conventionnel à Hobbyist. Du coup, pour répondre à la question, c’est relativement simple, il me suffit de refaire le chemin de mon parcours logiciel et de noter au passage ce que j’ai utilisé.

Le temps de l’initiation

Je ne suis plus très sûr du premier langage de programmation que j’ai connu au sens du 1), ni même du 2). J’hésite pour cela entre FORTRAN et BASIC. Ce dont je suis sur c’est d’avoir commencé par du FORTRAN dans mon école d’ingénieur, donc pour faire des programmes « sérieux » et d’un autre côté c’était bien sur du BASIC comme ça se faisait à l’époque sur nos ordinateurs personnels. Il y en avait plusieurs versions de Basic, relativement similaires mais de l’Oric 1 à l’HP85 il y a avait quand même un (grand) écart assez remarquable. Sans négliger le fait qu’il faudrait mettre Visual Basic à part, et que sur Atari cela s’appelait GFA Basic. Bien entendu, pour explorer plus avant ce qu’il était possible de faire avec un simple ordinateur personnel (je vous rappelle que nous sommes avant le PC) et essayer de faire des programmes plus rapides, je me suis mis à l’Assembleur 6502. Ce qui me permet de faire une parenthèse avec ma première vraie rencontre avec la programmation, c’était sur une TI-58 et un langage qui n’existait que sur ces calculatrices, une espèce d’assembleur amélioré.

Cela fait déjà au moins 3.

Au boulot, le mainframe

Enfin professionnellement, ma rencontre avec IBM m’a conduit vers le PL/S, un ersatz du PL/1 qui avait servi à coder le CICS sur lequel je travaillais côté système. C’était un langage de haut niveau, qui une fois compilé permettait de produire un code assembleur (version grand système IBM) relativement lisible, ce qui était particulièrement utile pour débugger.  Au passage j’ai découvert les langages de script CLIST de TSO/ISPF et REXX de VM et aussi le COBOL et le SQL qui étaient utilisés par les applicatifs. J’ai failli oublié le JCL ! Le langage qui sert à décrire des jobs batch, je ne suis pas sûr que ça vaille vraiment la peine de le compter parce qu’il est un peu à part mais ce n’est pas pour cela qu’il est simple.

Cela en fait 6 ou 7 de plus, suivant le sort que l’ont réserve à l’assembleur Grand Système.

Partout, des ordinateurs personnels

Et puis avec l’arrivée d’ordinateurs personnels plus puissants, il m’a été possible voire nécessaire de faire connaissance avec de nouveaux langages. Du Forth parce que c’est un langage un peu ésotérique à base de pile et de notation polonaise inversée. C’était plutôt amusant à maitriser. Du C et du C++ parce qu’il faut tout de même rester sérieux, et du Java aussi, depuis les applets aux applications, on ne pensait pas un jour le trouver dans les téléphones portables (Android…). J’ai failli oublier Pascal, qui avec la version Turbo Pascal de Borland était devenu tellement incontournable que l’éducation nationale avait essayé de s’y mettre, ou du moins d’y mettre les élèves.

Si je compte bien, cela fait 5 de plus, ce qui fait au moins 14 depuis le début.

Internet et le Web

Avec le Web sont apparus HTML et CSS qui ne sont pas des langages de programmation stricto sensu mais de la description de document, comme XHTML et XML. En revanche, côté serveur j’ai découvert PHP, et trouvé une nouvelle opportunité de pratiquer le SQL. Et aussi un peu de Javascript du côté client. J’ai croisé bien entendu le Flash Macromedia, mais je me suis refusé à y faire appel pour des raison de pureté de pages Web HTML, de norme et d’accessibilité. Que Steve Jobs soit ici officiellement remercié de m’avoir soutenu dans cette démarche.

C’est alors que ma route a croisé Python et je crois que je vais arrêter là… parce que je n’ai jamais réellement utilisé Objective-C même si j’ai un peu essayé d’y toucher.

Sans Flash ni objective-C, cela ajoute 7 nouveaux venus qui nous font 21 au total.

Cette liste à la Prévert n’est pas une exhibition, je n’ai jamais essayé de collectionner le plus grand nombre de langage possible, d’ailleurs je ne les avais jamais comptés.

Ça s’est fait au fil de l’eau, en fonction de mes besoins personnels ou professionnels et beaucoup sont très semblables, passer de C à C++, à Java, PHP ou à Python ne demande pas un énorme effort conceptuel, c’est surtout un effort de mémoriser une nouvelle syntaxe. Je dirais qu’en fait cela fait 4 grandes familles :

  1. Langages procéduraux
  2. Langages objets
  3. SQL
  4. Langage de description de documents

Les professionnels auront remarqué qu’il y a un énorme manque, les langages fonctionnels. Promis, je vais me mettre sur Haskell.

En guise de conclusion

Ce qui fait la différence entre un bon et un mauvais développeur, ce n’est pas le nombre de langages qu’il maitrise mais sa capacité à trouver la solution à un problème et à la transformer en un algorithme clair et simple en mettre en œuvre.

Et si on parlait de Design Patterns…. Une prochaine fois !