Developper blog
Monday, December 22 2008
Le billet Native Client, la technologie révolutionnaire de Google qui risque de faire long feu m'a fait sourire à sa lecture. Fred Cavazza vient de perdre, à mes yeux, tout crédibilité technique. Ce qu'il dit sur le marketing, les interfaces riches, etc. est peut-être correct mais dorénavant, techniquement, je relirai à deux fois. Le geek qui someille en moi vient de se réveiller.
Si vous ne l'avez lu, je vous conseille de lire le billet avant de lire ma réponse. Ma réponse est probablement loin d'être complète et ne se veut pas nécessairement constructive.
Pour faire simple, Native Client est un… “truc” que vous installez sur votre ordinateur pour pouvoir exécuter au travers de votre navigateur des applications en ligne écrites en code natif (C ou C++).
Pour mémoire, qu'est-ce qu'un code natif, soit ni du C, ni du C++. Ces langages étant des langages de haut niveau.
Quand vous consultez une interface riche en Flash, celle-ci repose sur du code qui est interprété par le plug-in, par le navigateur, par le système d’exploitation et finalement par le processeur (qui ne comprend que l’assembleur).
Un processeur ne comprends pas l'assembleur mais bien le langage natif, résultat d'une conversion à partir de code assembleur. L'assembleur étant encore lisible par un être humain.
Si la promesse est belle (des performances sans commune mesure) et l’exploit technologie réel, il y a une contre-partie : les applications en ligne doivent être développées en C ou C++. Pourquoi ? Parce que ce sont des langages de bas niveau qui sont très proches de l’assembleur (donc des 0 et 1 puisque le processeur ne comprend rien d’autre).
On remarquera que Fred Cavazza se contredit lui-même, preuve d'un manque de compréhension à ce niveau d'un ordinateur. (Edit: notons également que le C et le C++ ne sont pas des langages de bas niveau)
Le problème c’est que nous sommes maintenant en 2009, que la ressource n’est plus un problème et que plus personne ne programme en C.
Cette phrase est tellement mythique qu'aucun commentaire ne peut l'accompagner. Les ressources informatiques restent un problème et risquent de le (re)devenir avec l'apparition des ordinateurs tels que EeePc, les smartphones, etc.
il permet aux éditeurs de ne développer qu’une seule version de leurs applications et de les distribuer via le web (en évitant les circuits de distribution classiques avec boîtes et DVD). Vous noterez au passage que cette solution n’a été rendu viable que depuis l’adoption d’une architecture commune (x86 sur processeur Intel) par les constructeurs et éditeurs de système d’exploitation (Microsoft / Windows, Apple / Mac OSX, Linux).
L'architecture commune facilite certes le portage d'applications mais ne permet toutefois pas de distribuer le même binaire à tout le monde (ou la même machine virtuelle dans le cas des langages interpretés).
Dans la réponse, on trouve aussi
Quand je dis que plus personne ne développe en C c’est une image. Bien évidement qu’il existe de nombreuses personnes qui connaissent le C, mais est-ce une réalité de marché ? Illustration : je n’ai aucun mal à trouver un bon développeur PHP sur Paris à 750 € la journée (500€/j. au Maroc et 250$/j. en Inde), peut-on en dire autant des développeurs C ?
Il était donc vrai que l'on mesure si le C est encore utilisé en regardant sur des sites d'emploi si l'on trouve un développeur à 750€ la journée. L'utilisation de cet argument tente de changer le "niveau" de la phrase. Techniquement, la phrase ne tiens pas, alors pourquoi ne pas la rattraper en retombant dans ce que l'on maitrise ? Même si l'on change le sens.
De plus, il y a bien longtemps que la filière informatique ne forme plus les étudiants au C de façon intensive, c’est un langage qui est étudié dans les premières années mais les formations se concentrent sur des langages qui offrent un maximum de débouchés aux jeunes diplômés (Java, PHP…).
Dans ce cas, je crois que je ne suis pas les mêmes cours que ceux des copains de Fred Cavazza.
En conclusion, je dirais simplement, contentez-vous de parler de ce que vous connaissez...