Toute notre technologie repose sur une série de lettres et de symboles qui la font fonctionner. Que vous soyez un programmeur professionnel ou que vous ayez juste tâté du HTML sur votre page Myspace, vous savez que sous une interface utilisateur élégante se cache un tas de langages de programmation. Ces langages sont des outils incontournables pour concevoir le monde numérique, mais leur nom soulève une question intéressante : les langages de programmation peuvent-ils être considérés comme des langues à part entière ?
À première vue, cette question peut sembler futile. La réponse n’est cependant pas aussi évidente qu’il n’y paraît. La nature insaisissable du « langage » et le statut en constante évolution de l’intelligence artificielle brouillent les cartes de ce qu’est et peut être la communication humaine. Présenter les arguments pour et contre les langages de programmation comme langue peut ouvrir des perspectives fascinantes sur notre monde numérique.
Hypothèse #1: les langages de programmation ne sont pas comparables aux langues « classiques »
Commençons par les arguments contre, parce que c’est le plus facile à faire. À première vue, les langages de programmation semblent très différents des langues officielles. Nous allons passer en revue quelques-unes des principales différences entre les langages de programmation et ce que nous considérons généralement comme une langue. Bien que cette liste ne soit pas exhaustive, elle aborde les points les plus importants.
❌ Ils n’existent que sous forme écrite
Une langue n’a pas besoin d’être parlée pour être considérée comme une langue : les différentes langues de signes existent, bien sûr, mais il est assez rare qu’une langue existe uniquement sous forme écrite. L’un des seuls autres exemples de langage sans langue de référence parlée ou signée est le bliss, une langue composée de symboles qui se veulent aussi simples que possible. Ce fait ne disqualifie pas à lui seul les langages de programmation, mais il est notable.
❌ Ils n’évoluent pas naturellement
Si les langages de programmation sont une langue, c’est une langue construite. Plutôt que d’être la formation naturelle d’humains se parlant entre eux, les langues construites sont conçues par une personne ou un groupe, qui en fait la grammaire et le vocabulaire. Si une langue construite est reprise par une communauté et utilisée au fil du temps, elle continuera d’évoluer, car la seule constante de la langue est le changement. L’espéranto, par exemple, est une langue construite très contraignante – elle est conçue pour être simple, et ses locuteurs s’investissent pour préserver cette simplicité – mais même cette langue a évolué de manière organique depuis sa création dans les années 1800.
Les langages informatiques, cependant, ne sont pas flexibles de cette manière. Oui, ils peuvent être modifiés, mais cela doit être fait consciemment par le créateur de la langue ou par toute autre personne qui en est responsable. La plupart des langues changent parce que les gens inventent un nouveau mot ou que quelque chose perçu comme une « erreur » est accepté par un grand nombre de personnes – utiliser « littéralement » pas littéralement, prononcer « cot » et « caught » de la même façon – mais une erreur ou un nouveau terme non défini dans un langage de programmation casserait quelque chose. Aucun autre type de langue n’est aussi limité par un ensemble restreint de grammaire et de vocabulaire.
❌ Ils ne sont pas utilisés pour la communication entre humains
Le langage est-il un phénomène purement humain ? C’est une question qui divise. Les chercheurs étudient toujours la manière dont les dauphins, les oiseaux et d’autres créatures intelligentes peuvent communiquer. Cependant, si on limite les « langues » à celles utilisées par les humains pour communiquer, les langages de programmation ne remplissent pas nécessairement cette condition.
On pourrait arguer que les langages informatiques facilitent la communication dans une certaine mesure. Un programmeur peut envoyer un code à une autre personne et celle-ci peut être en mesure de lire et de comprendre ce que fait le programme. Il ne s’agit toutefois pas d’une communication sans faille, et les programmeurs facilitent généralement la compréhension du code en ajoutant des commentaires en langage clair décrivant ce que le code peut faire.
Pour compléter ce point, il y a le fait que vous ne pouvez pas traduire les langages de programmation dans d’autres langues. Alors qu’un texte en espagnol peut être transformé en anglais sans trop de difficultés, vous aurez du mal à le transformer en CSS ou en Java. Peut-on dire « je t’aime » dans un langage de programmation ? En soi, cela suffit à faire croire que les langages de programmation sont complètement différents.
Hypothèse #2 : les langages de programmation sont des langues à part entière
Les arguments en faveur de la comptabilisation des langages de programmation en tant que langue tendent à exiger une extension de la définition du langage. Cela dit, la « langue » est loin d’être un concept stable, et la linguistique découvre constamment de nouvelles façons de fonctionner. Examinons donc certaines des façons dont les langages de programmation se chevauchent avec d’autres langues.
✅ Ce sont des symboles qui créent du sens
Commençons très simplement. Si la langue n’est composée que de sons, de signes ou de symboles utilisés pour transmettre des informations, les langages de programmation répondent à cette définition. Cet aspect peut facilement tomber dans un débat sémantique inutile – nous pouvons simplement choisir la définition de la langue qui convient le mieux à notre argument – mais il convient de noter qu’au fond, les langues et les lignes de code ont ceci en commun.
✅ Ils sont infiniment génératifs
Chaque langue humaine possède un vocabulaire limité, mais un nombre infini de façons de combiner ce vocabulaire pour former des pensées et des idées. C’est l’un des faits les plus remarquables de la langue, vraiment : un enfant peut apprendre à créer un nombre hypothétiquement infini de phrases à partir d’une quantité finie d’informations. Le linguiste Noam Chomsky a défendu l’idée qu’un langage infiniment génératif est au cœur même de ce qui définit la langue, et cette idée constitue la base de la compréhension de la langue en linguistique aujourd’hui.
Les langages de programmation, eux aussi, sont potentiellement infinis. Une personne peut apprendre les règles d’une langue et les répéter à l’infini. Le langage de programmation Python, par exemple, a été utilisé pour créer Instagram, Google et Netflix, et il ne s’agit là que d’une poignée d’exemples. Bien que chaque langage de programmation ait ses limites – comme tous les autres langages, d’ailleurs – il permet de faire un nombre infini de choses.
✅ Ils sont utilisés pour communiquer, mais pas entre humains
Les humains utilisent la langue pour transmettre leurs pensées. Si les humains peuvent organiser leurs pensées avec la langue, ce n’est pas la même chose. La langue est le moyen imparfait par lequel nous essayons tous de nous exprimer, mais il n’existe aucun moyen de montrer à une personne ce que font les synapses de notre cerveau.
Si le fonctionnement d’un ordinateur est techniquement équivalent au fonctionnement d’un cerveau humain, alors les langages de programmation ont davantage le droit d’être des langues. C’est un gros « si », cependant. Nous comparons les ordinateurs au cerveau humain depuis que les ordinateurs existent. Le mathématicien Alan Turing a théorisé sur ce que cela signifierait pour un ordinateur de véritablement « penser ». À mesure que l’intelligence artificielle s’améliore, la frontière entre une personne pensante et une machine pensante devient de plus en plus floue.
Même si les ordinateurs n’ont pas le même niveau de complexité que le cerveau humain, on peut voir comment les langages de programmation fonctionnent dans un sens humain-ordinateur de façon analogue à la façon dont d’autres langages fonctionnent dans un sens humain-humain. Les langages de programmation sont l’intermédiaire entre le cerveau d’un humain et les uns et les zéros binaires d’un ordinateur. Les êtres humains ne peuvent pas vraiment s’immiscer dans les rouages d’un superordinateur, et les ordinateurs ne peuvent pas lire dans nos pensées mieux que les autres humains. Les langages de programmation sont donc une méthode de communication, même si les ordinateurs ne sont pas nécessairement de charmants interlocuteurs.
Alors, verdict ?
Vous pouvez argumenter pour ou contre simplement en déterminant votre définition de la « langue ». Si vous déclarez que les langues doivent être parlées par des humains, à des humains, alors rien ne vous donnera tort. Il existe clairement des différences entre les langages de programmation et les autres langues, mais la question est simplement de savoir quel degré de disparité vous êtes prêt à accepter. Les mathématiques sont-elles une langue ? Qu’en est-il de la musique ? Ces définitions glissantes font qu’il est impossible de répondre à la question au cœur de cet article d’une manière qui puisse satisfaire tout le monde.
Il est peut-être préférable, alors, de réfléchir à ce que signifierait réellement pour un langage de programmation d’être une langue. L’un des effets négatifs de cet amalgame est qu’il peut conduire à des résultats étranges, comme ceux d’une enquête menée en 2015 au Royaume-Uni, qui a révélé que six parents sur dix préféreraient que leurs enfants apprennent le langage Python plutôt que le français. Bien que l’option « soit l’un, soit l’autre » semble être une prémisse absurde, les « langages de programmation » et les « langues du monde » sont souvent mis dans le même panier simplement à cause de leur nom. Pourtant, les résultats différents d’un élève apprenant le français et d’un élève apprenant Python sont faciles à imaginer. Mettre les deux sur un pied d’égalité, à un niveau pratique, est probablement stupide. Les implications les plus fascinantes pour les langages de programmation par rapport aux autres langues restent sûrement encore à découvrir. Déjà, la plupart des profanes interagissent avec les ordinateurs grâce à des langages non programmés. Nous parlons à nos assistants robotiques et effectuons des recherches sur Internet avec le langage humain, converti en langage informatique tel qu’il a été désigné par les langages de programmation. Si les chercheurs parviennent un jour à concevoir une intelligence artificielle capable de comprendre réellement le langage humain, les frontières entre ces modes de communication distincts pourraient commencer à s’effacer complètement.