Le programmeur n'est pas un alien !
Un langage informatique, c'est quoi ?
Le programmeur est souvent vu comme une sorte de magicien omnipotent. Même si cette situation peut paraître enviable, elle est souvent source de conflit entre le programmeur et le profane. Par exemple, le programmeur est souvent sollicité pour résoudre des situations sans lien avec sa spécialité ou ses responsabilités et le tout pour une reconnaissance proche de celle que reçoit le ramasseur de poubelles :
C'est ton truc les ordis, non ? Alors répare-moi cette machine qui est visiblement cassée, j'ai du vrai boulot à faire moi.
En fait, il n'en est rien. Le programmeur est juste un homme comme un autre qui a appris à faire au moins une chose dans sa vie. En cela, il n'a rien de plus exceptionnel que quelqu'un qui a appris à faire de la poterie. Et pour bien comprendre ce dont on parle, le vase en terre cuite du programmeur, c'est le programme informatique(1).
Mais qu'est-ce qu'un programmeur a appris de bien particulier pour fabriquer des choses aussi merveilleuses ? Eh bien il a appris à « parler » à l'ordinateur. Littéralement. Il utilise d'ailleurs pour cela ce qu'on appelle un « langage informatique ». Des langages informatiques, il en existe beaucoup de différents ayant chacun des situations privilégiées dans lesquelles ils sont les plus efficaces. Il en existe des vieux pratiqués par des irréductibles. Il en existe des récents plus largement répandus. Il existe des effets de mode. Bref, tout se passe comme si on parlait de différentes écoles de poterie.
Bien sûr, les différents langages informatiques qui existent sont un peu particuliers comme langages. Pour commencer, ils ont été créés rationnellement(2) par un nombre restreint de personnes. En outre, ces langages sont simplifiés(3) et orientés vers le but unique de donner des ordres à l'ordinateur(4). C'est ce qui permet au programmeur de connaître un grand nombre de langages : ils sont plus faciles à apprendre que l'anglais ou le mandarin.
Ainsi, tout le travail du programmeur, est de savoir décomposer la tâche qu'il veut réaliser en instructions simples qu'il va pouvoir traduire pour l'ordinateur. Et c'est à peu près tout ce qu'il fait. Il décompose chaque action en instructions élémentaires que la machine va pouvoir comprendre et exécuter. Tous les programmeurs sont ainsi capables de décomposer virtuellement n'importe quelle tâche. Cependant, les programmeurs se distinguent dans la qualité et la rapidité de leur traduction. Un bon programmeur atteindra l'objectif en un temps réduit(5), décomposera le problème d'une façon intelligente qui fait que vous n'aurez pas besoin d'aller vous chercher un café en attendant que la machine finisse son travail(6), et aura une traduction suffisamment limpide pour que n'importe quel autre programmeur puisse comprendre rapidement la solution rien qu'en la parcourant afin de la réutiliser ou de l'améliorer(7).
C'est tout ! Un programmeur n'est rien de plus que quelqu'un qui a appris comment dire quelques bricoles à un ordinateur. Encore qu'à mon avis, le programmeur a acquis ou possède de manière innée un petit quelque chose en plus que certains profanes : il n'a pas peur de réfléchir ou de chercher à comprendre quand il ne sait pas(8). Dans la plupart des cas, le programmeur ne sait pas comment résoudre un problème et il va tester des solutions ou faire de la recherche pour le résoudre. Son travail est une inlassable expérimentation et un apprentissage sans fin de nouvelles techniques pour se perfectionner et se moderniser, tout comme le potier participerait à des conférences de poterie avec des grands maîtres. Et c'est, je pense, le manque d'ouverture d'esprit chez certains profanes dédaigneux qui signe le conflit exposé en introduction. En effet, il n'est pas très agréable de recevoir des requêtes toutes affaires cessantes pour des problèmes que l'utilisateur aurait pu résoudre seul s'il s'était intéressé un tant soit peu à l'outil de travail qu'il utilise tous les jours. Pour reprendre la métaphore maintenant filée du potier, qui a sacrifié des années de sa vie pour apprendre à réaliser de magnifiques vases, sa formation lui sert évidemment à savoir qu'on peut réparer une bête assiette cassée avec un peu de colle, mais finalement n'importe qui pourrait le savoir sans être lui-même un grand potier, simplement parce qu'il utilise des assiettes tous les jours.
- (1) ↑ C'est à dire qu'il fabrique tout ce que vous utilisez sur un ordinateur tels que Microsoft Word, Google ou iOS.
- (2) ↑ Un peu comme l'espéranto.
- (3) ↑ Le vocabulaire est très limité, de l'ordre de la dizaine de mots.
- (4) ↑ Pas la peine d'espérer faire de la poésie. Encore que…
- (5) ↑ Et même pour les meilleurs, c'est long de programmer. Très long.
- (6) ↑ C'est la partie la plus complexe. Celle pour laquelle les talents du programmeur et sa compréhension de la machine sont vraiment mis à profit.
- (7) ↑ C'est presque la partie la plus importante. Si cette étape est négligée, le travail effectué peut très vite être abandonné en perdant par là tous les avantages de l'accumulation d'expérience.
- (8) ↑ Bien que le programmeur n'ait pas le monopole là-dessus, je conçois difficilement un programmeur sans cette qualité.