jouvenot.com

Et si un langage informatique devenait la langue universelle ?

Le volume des communications entre les machines vient de dépasser celui des communications entre les êtres humains. Mais dans quel langage les machines communiquent-elles au juste ? Descente au cœur d’un nouvel operating system.

Pour commencer, un examen rapide de la brève histoire des langages informatiques conduit rapidement à quelques constats :

  • Les langages informatiques sont, sommes toute, assez récents. Ils ont moins de cinquante ans.
  • L’univers des langages informatiques a finalement assez peu évolué au regard de la vitesse du changement et de la mutation de ce qui n’existerait pas sans eux : l’informatique, le digital, les objets connectés, l’intelligence artificielle, les algorithmes, les robots, etc.
  • Les langages informatiques ont subi la loi de Darwin et comme les espèces, certains d’entre eux ont pour ainsi dire disparu après avoir été dominants : le langage C, le C++, le Pascal
  • Le langage dominant d’aujourd’hui est très ancien. Java soufflera bientôt ses 20 ans.
  • Internet a stimulé la création de nouveaux langages : Python, Ruby, Perl, Go.
  • Des tentatives de création de métalangages ont émergé : Lisp.
  • La philosophie de l’open source favorisant l’apprentissage des langages par les développeurs, avec l’accès aux codes sources, a fait à ses débuts l’objet d’une censure. La plus part des pionniers du web qui lisaient les codes sources des programmes, les lurent dans des photocopies interdites à la circulation du livre culte de John Lion, qui bien qu’écrit en 1977 ne fut autorisé à la publication qu’en 1996 : Lion’s Commentary on Unix.
  • Le phénomène open source a conduit les développeurs à prendre en considération deux populations distinctes : les utilisateurs (du programme développé) et les lecteurs des codes sources du programme (les autres développeurs).
  • Les progrès des langages passent par la case hacking.
  • Les langages se sont sagement ordonnancés en familles : machine langage, assembly langage, high-level langage (Fortran, Lisp, Cobol, Basic, Pascal, Smalltak, C++, Java, Perl, Python), open source langages, etc.
  • Les langages permettent le plus souvent à d’autres que leurs inventeurs de devenir très riches, tout comme Philo Farnsworth qui inventa la télévision mais ne sut pas en tirer profit laissant l’entreprise RCA s’enrichir. L’un des pères des applications web-based, Paul Graham est peut-être l’exception puis qu’il dévelopa Viaweb dans le langage qu’il inventa, Lisp, avant de revendre son site e-commerce à Yahoo !.
  • Les disruptions des langages reposent sur des réactions à des systèmes dominants. Les deux Steve d’Apple (Steve Wozniak et Steve Jobs ) développèrent leur système en réaction à IBM. Le système Multics arriva dans la foulée pour les même raisons. Et les fondateurs de l’open source baptisèrent leur système Unix avec humour et en référence à Multics.
  • Le digital a permis l’éclosion de site de partage de codes tel que Git Hub.
  • Certains langages très en vogue depuis quelques années, comme Ruby, airaient été qualifiés de dialectes il y 25 ans.
  • Les langages comptent, mais les développeurs comptent encore plus. Comme en littérature, la langue compte, mais le génie provient de l’auteur… et les développeurs sont un peu comme des essayistes.
  • Les systèmes web-based, inventé il y a vingt ans, sont devenus le point de passage le plus fréquentés par les utilisateurs du fait de l’explosion du mode SAAS.
  • Le HTML (HyperText Markup Language), un simple langage de balisage, a connu un destin universel et fulgurant malgré ses faibles ambitions initiales.
  • Le langage rêvé n’existe pas.
  • Les développeurs écrivent de très bons livres comme Frederick P. Brooks avec The Mythical Man-Month, Paul Graham avec Hackers & Painters, Eric Ramond avec son célébrissime Bazaar and the Cathedral, Andrew Hunt et David Thomas et leur Pragmatic Programmer ou encore Jason Fried et David Heinemeier Hansson de 37 Signals et leur Getting Real.
  • Personnes ne sait dire quel langage dominera dans 25 ans.
  • Certains conjecturent que les langages humains se conjugueront avec des langages informatiques afin de pouvoir développer des applications, des fonctionnalités et des programmes par le biais d’un système de reconnaissance et de commande vocale où tout un chacun pourrait dicter avec ses mot à lui ce qui doit être immédiatement programmé. Exemple : « Ajouter la possibilité de choisir une devise autres que l’Euro dans cette page permettant de commander un produit en ligne ».

Nos langues (l’anglais, le chinois, le français, l’italien…) vont elles alors peu à peu se diluer dans ce nouveau langage homme machine qui deviendra ainsi un langage universel ?

Par-delà ces considérations, l’essor du digital est au cœur de la plupart de tous ces constats et appelle quelques questions nouvelles et plus prosaïques :

  1. Arriverons-nous un jour dans une ère où les développeurs informatiques seront également évaluées sur leur capacité à faire un plus ou moins bon usage des langages ?
  2. Quand allons nous prendre conscience pour de bon que les développeurs informatiques vont devenir, du fait de leur métiers, une population professionnelle à traiter spécifiquement et à observer avec le plus grand soin ?
  3. A quand l’entretien d’embauche 360° d’un développeur, par une start up au cours duquel les fondateurs, eux-mêmes bien rompus aux codes et à la culture Internet, interrogeront le candidat pour déterminer tout à la fois des points très précis, touchant à la pratique de son métier et des points touchant cette fois-ci à des évolutions bien plus profondes et fondamentales pour nous tous :
  • Ce qu’il pense de l’arrivée probable de ce langage universel homme machine ?
  • Si ses pairs le considèrent comme un ninja (pour reprendre leur jargon) ?
  • S’il est hacker et quels sont ses faits d’armes ?
  • Quelles sont ses contributions à Linux et ses implications dans l’open source ?
  • Quels sont ses langages de prédilection ?
  • Que manque-t-il aux langages informatiques aujourd’hui selon lui ?
  • Comment s’y prend-t-il pour raccourcir le code ?
  • Quelles méthodes utilisent-ils pour repérer et éviter les feature loops ?
  • A quel moment considère-t-il qu’il est préférable de résoudre un bug ?
  • Quelle est la qualité de sa communication écrite via instant messaging avec les autres interlocuteurs d’un projet et dans les outils de ticketing comme Jira ?
  • Quelle est sa capacité a estimé le temps nécessaire à la réalisation d’une tâche, du développement d’une fonctionnalité, de la livraison d’un lot ?
  • Quelle est la pire des RFC qu’il a reçu ?
  • A partir de combien de fois il accepte de développer ce que demande l’utilisateur, considérant pour de bon que cela doit être important ?
  • Quel est le dernier code source qui l’a impressionné ?
  • Quel livre publié chez O’Reilly a-t-il lu en dernier ?
  • Quelle importance accorde-t-il à l’UX ?
  • Quel bilan fait-il des premières années du développement agile ?
  • A quoi ressemblerait le langage informatique qu’il aurait imaginé s’il en créait un ?
  • Que fera-il le jour ou l’utilisateur pourra générer un programme par simple commande vocale ?
  • Que pense t’il du hacking ?
  • Que pense-t-il de cet article ?

Et vous qui n’êtes pas nécessairement développeurs, mais de plus en plus concernés malgré tout, que pensez-vous de cet article ?