Une question de langage (informatique)
Attention, billet technique!
Voici un billet magnifique concernant le prochain grand langage de programmation, découvert au hasard d’un surf sur le blog de Scoble. Amis développeurs ou passionnés d’informatique, lisez le jusqu’au bout, vous en tirerez plein d’enseignements.
Qui dit langage dit règles…
Tout d’abord une règle de vie qu’il vous semblera étrange de trouver sur ce blog: « Go ugly early ». Steve Yegge a raison. Dans tout domaine, si on veut aller au fond des choses, alors autant commencer par le plus répugnant. Cela permettra de contempler la beauté de choses qui nous aurons paru banales si nous les avions connues en premier.
Ensuite, une règle de base pour tout bon développeur qui se respecte: écrire son propre langage de programmation. A défaut, écrire son propre compilateur, au pire, écrire son propre interpréteur. Cela permet de comprendre réellement ce qui se passe une fois qu’on a séché l’encre de la dernière ligne de code et qu’on laisse agir le compilateur (ou l’interpréteur). On se rend compte alors que derrière le rideau, il s’en passe des choses. C’est comme dans le domaine de la photographie. Les meilleurs photographes argentiques, par le passé, savaient tous ce qui se passé dans la chambre noire.
Pour le reste, Steve Yegge rappelle quelques uns des « avantages acquis » des jeunes générations de programmeurs. De nos jours, un langage se doit, pour être reconnu, de proposer un certain nombre de caractéristiques:
- une syntaxe semblable à celle du C, voire du C++
- un typage dynamique (avec des options statiques)
- de bonnes performances
- des outils de programmation (un IDE)
- des outils standards, tels que (je ne traduis pas, trop long)
- Object-literal syntax for arrays and hashes
- Array slicing and other intelligent collection operators
- Perl 5 compatible regular expression literals
- Destructuring bind (e.g. x, y = returnTwoValues())
- Function literals and first-class, non-broken closures
- Standard OOP with classes, instances, interfaces, polymorphism, etc.
- Visibility quantifiers (public/private/protected)
- Iterators and generators
- List comprehensions
- Namespaces and packages
- Cross-platform GUI
- Operator overloading
- Keyword and rest parameters
- First-class parser and AST support
- Static typing and duck typing
- Type expressions and statically checkable semantics
- Solid string and collection libraries
- Strings and streams act like collections
- être multi-plateforme
Ce gars là a raison. Et il m’a donné un coup de blues, là, comme ça, à presque minuit.
Quels langages informatiques parlez-vous ?
Je me suis mis à penser à tous les langages de programmation que j’ai appris depuis que j’ai touché un ordinateur, à commencer par « l’assembleur » de la TI 57 que m’avais offert Andre Castro en 1979. Puis vinrent les premiers langages de programmation, les vrais:
- le Basic du Commodore VIC 20
- l’assembleur du même VIC 20
- l’assembleur du 8086
- le Forth, grace à Julien Galand
- Le Lisp, enseigné par Jérôme Chailloux sur les bancs de l’Ecole Polytechnique (Le Lisp de l’INRIA) puis approfondi en DEA IARFAG .
- le C, sur ATARI ST, avec l’aide de Frederic Brachfeld
- le GFA Basic, toujours sur ATARI ST
- Pascal, ou plutôt le Turbo Pascal, maitrisé sur les bancs de Telecom Paris pour mon premier projet 3D avec Nathalie Irvine et Thierry Podolak
- Le Lisp, en plus approfondi, avec un cours magistral sur l’évaluateur Lisp donné par un prof dont j’ai oublié le nom, en DEA aux Mines, et qui nous fit écrire un Lisp en Lisp…
- Caml, découvert lors du même DEA
- Prolog, qui me servit à écrire un outil de pronostics pour le championnat de foot saison 1988-1989
- SmallTalk, découvert en stage à l’INRIA aux cotés de Henry Borron, magnifique langage, à l’apprentissage rude, mais qu’on n’oublie jamais une fois qu’on y a touché
- TAL (Tandem Application Language), sorte de Pascal, appris lors de mon premier projet chez GFI
- Objective C, découvert au hasard de discussions avec Anne Guillais, ancienne collègue chez GFI, qui développait sur station Next
- FORTRAN, maitrisé à l’entrée chez Dassault Systemes (noblesse oblige, mais quel langage de daube…)
- ADA, qui servit de base au développement de CIRCE, développé par Cedric Hutt et Patrick Caressa, générateur de systèmes experts et ancêtre du knowledge de la V5
- C++, découvert chez Dassault Systemes, grace aux cours extraordinaires de Gael Renault
- Ksh, découvert à l’INRIA, mais réellement mis à profit en 1995 en développant le premier moteur de recherche sur l’intranet de Dassault Systemes, ainsi qu’un navigateur sur le source Fortran de la même société…
- HTML – mais est-ce un langage de programmation ? – si proche de DTML, dont j’ai écrit un compilateur en Fortran en 1990
- Java, premier langage auquel je me sois formé par la lecture avant tout
- PERL, qui m’q abondamment servi à développer les premières moutures du site Golfworld.
- JavaScript, utilisé pour l’IHM du même site, et qui, avec du recul, me semble le langage le plus étonnant et le plus souple. Sa richesse est sans limites.
- PHP, qui servit d’ossature aux pages les plus récentes de Golfworld
- C#, le plus beau à mon avis, qui présente les forces de Java sans en exhiber les faiblesses, mais qui a le défaut de ne pas être vraiment multi-plateforme
- Python, qui est vraiment très sympa au final (MAJ du 27 avril 2017)
En quelques vingt année, je crois avoir été exhaustif. En fait, les seuls langages qui m’ont échappé sont:
- Cobol, mais je crois que j’ai eu de la chance
Python, sur lequel j’hésite à me lancer(voir plus haut)- VB alias Visual Basic: je dois avouer ne jamais avoir éprouvé de plaisir de programmation avec les différentes moutures de Basic
- Ruby on rails
Découvrez d'autres articles sur ce thème...
Hervé Kabla, ancien patron d’agence de comm’, consultant très digital et cofondateur de la série des livres expliqués à mon boss.
Crédits photo : Yann Gourvennec