The road to 42

You like the blog? Subscribe to the feed

Pourquoi ce que dit Fred Cavazza est techniquement faux ?

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...

Add a comment

HTML code is displayed as text and web addresses are automatically converted.

Antoine said on 10 January 2009

En fait, tout dépends de ce que l'on appelle haut et bas niveau.

Par haut niveau, on s'abstrait d'un ensemble de détails proche de la façon dont l'ordinateur va travailler (par exemple, gestion fine de la mémoire avec les registres, ordre des instructions, etc.) Il est plus facile d'écrire une grosse application dans un langage de haut niveau.

Par bas niveau on s'occupe de ce genre de détail. Les langages de bas niveau sont: le binaire (et oui), l'assembleur, etc.

Même si en C on s'occupe d'une partie de la gestion de la mémoire, cela reste un langage de haut niveau car bien des détails d'exécution sont cachés. On identifie toutefois des "niveaux" dans les langages de haut niveau. Par exemple, le java abstrait encore plus de détail que le C, etc.

Loic said on 9 January 2009

Bonjour,

Etant moi meme profane en programmation je ne vais cetainement pas émetre d'opinion concernant votre sujet de convesation.
Néanmois une chose m'interpelle: pour moi c et c++ on toujours été des langues de bas niveau (Low level programing) Ai-je tort?

Benoît Octave said on 6 January 2009

hello boys, loin de moi l'idée de commenter le charabia de sieur Fred Cavazza, ne maîtrisant moi-même aucunement ce sujet. En revanche, le même sieur Cavazza joue les prophètes éclairés sur http://www.mediassociaux.com/, un sujet que je maîtrise plutôt bien et force est de constater qu'il s'y emmèle quelque peu les pinceaux...

Conclusion: qui trop embrasse mal étreint.

En se targuant de connaître tout sur tout ou à peu près, la médiocrité est au rendez-vous, un jour ou l'autre... A bon entendeur, salut.

Antoine said on 23 December 2008

Au précédent commentateur, peux-tu expliciter? Vois-tu une mention de ce que tu dis dans ce que j'ai écrit ? Il serait bien d'étayer un minimum.

du risque de traiter quelqu'un di'gnorant said on 23 December 2008

euh hum le processeur ne comprend pas "l'assembleur" mais le langage machine (code binaire)...

Ploum said on 23 December 2008

Autant je suis pour la simplification et la vulgarisation, autant je suis d'accord pour dire que, sur le fond, Fred Cavazza se plante royalement.

Si il bossait un peu dans l'industrie (la vraie, celle qui sent la vapeur), il se rendrait compte que tout est en C/C++. Il n'y a que ça. Et du Cobol dans les banques. Actuellement, les plus aventureux font même des prototypes en Java mais beaucoup ne passent pas à Java pour des raisons... de performance, tiens c'est marrant ça.

Par contre, j'admet que c'est généralement stupide car le spaghetti de code C est tellement sous optimisé que le langage importe peu sur les performances et que c'est "une fausse excuse" mais je ne pense pas que F.C. pensait à cela.

Antoine said on 23 December 2008

C'est toute la problématique d'un raccourci... Doit-on faire des raccourcis quand on y introduit des erreurs? Le problème de la simplification à l'extrème est que l'on induit facilement le lecteur en erreur.

La simplification n'absout pas l'erreur, il est tantôt plus complexe de comprendre un raccourci erroné qu'une explication correcte plus longue. Sans ces (faux) détails techniques, le billet n'aurait rien perdu et n'aurait que gagné en crédibilité.

seynaeve said on 23 December 2008

Si je ne peu te contredire sur le fond, il faut bien admettre que tu chipote un peu.
Oui Fred Cavazza fait des raccourcis simplistes. Mais son blog est lu par des milliers de gens n’ayant pas de connaissances approfondies sur tous les sujets. Je ne pense pas qu’il faille lui en tenir rigueur de commettre quelques impers au service de la vulgarisation.
A sa décharge je rajouterai d’ailleurs qu’il est le seul à avoir su m’expliquer ce qu’était Nacl.

Antoine said on 22 December 2008
@mrik, je me fout d'etre référence correctement sur les mots-clés et traffic que génère Fred. Par ailleur, j'admire ta couardise quant a ton anonymat !
ali_o_kan said on 22 December 2008

Etre bien référencé est primordiale quand on tient un blog technique! ^^

mrik said on 22 December 2008

t'as raison, taper sur les bloggueurs bien référencés c une bonne manière pour récupérer du trafic

ps : tu devrais mettre des adwords !

ali_o_kan said on 22 December 2008

Je risque pas de te contredire, vu que c'est un sujet que je dois aussi bien connaître que F. Cavazza. ^^

Par contre, je suis à la recherche d'un bon cours (du soir) qui me permettrait de renforcer mes bases en dev "classique" sur Bruxelles.

Je suis autodidacte en dev multimédia (actionscript&co), pas de souci dans ce domaine, par contre je suis régulièrement confronté à mes limites quand il s'agit d'autre langages.

Ce que je cherche c'est un bon résumé pratique du fonctionnement, but, usages des différents langages qui tourne sur une machine.

Si vous avez des pistes à me proposer : laurent at geturl point net

++
Laurent

Michaël V. said on 22 December 2008

Ça résume ce que je pense aussi. T'as même vu des choses sur lesquelles je n'avais pas flashé.

Published on Monday, December 22 2008