Google lance son langage de programmation pour brouiller les pistes

Grosse surprise ce matin en découvrant cette annonce singulière, Google lance son propre langage de programmation open source : Go. Une annonce qui tombe comme un cheveux dans la soupe dans la mesure où la semaine a été chargée (rachats de Admob et Gizmo5, lancement des Dashboards personnels, Wi-Fi gratuit dans les aéroports US pendant les vacances de fin d’année, baisse des prix du stockage en ligne, historique des déplacement avec Lattitude…). Bref, c’est un véritable déluge d’annonces et là… “à au fait, nous lançons notre langage de programmation“.

Je ne suis pas un expert mais voici dans les grandes lignes la description de ce Go :

  • C’est un langage compilé (donc pas comme javascript) très proche du C mais intégrant une notion d’héritage (donc concurrent du C++) ;
  • Il est censé répondre à une demande croissante de développeurs qui sont coincés entre la rigueur de Java et le manque de sophistication / puissance de PHP ;
  • Il correspond mieux à la réalité de l’informatique en 2009 (parralel computing, processeurs multi-coeurs…) ;
  • Il va permettre de diminuer le temps de programmation et de compilation (le contraire m’aurait étonné) ;
  • Il propose une syntaxe très particulière mais révolutionnaire (merci de me donner votre feedback là-dessus) ;
  • Il est proposé en open source sous licence BSD.

Pour en savoir plus ça se passe ici : Google Launches Its Own Programming Language et Go: new open source programming language from Google. Et voici la vidéo de présentation :

Dans la mesure où ce n’est pas mon métier je ne peux pas me prononcer sur les qualités ou le potentiel de ce nouveau langage. Mais en tout cas il y a plusieurs choses que je sais :

  1. Go n’est pas un projet d’entreprise mais un projet issu des 20% de R&D accordé à chaque employé ;
  2. Go a nécessité deux ans de développement mais n’est utilisé dans aucune application de chez Google (les équipes utilisent surtout C++ et Python) ;
  3. Go n’est pas supporté par le Google App Engine ;
  4. Nous sommes toujours en attente de nouveautés concernant d’autres initiatives maison comme Native Client ou O3D.

Bref, oserais-je dire que Google se disperse ? Non je n’oserais pas, ma paranoïa me pousserait plus à dire que Google fait du bruit pour brouiller les pistes et garder un maximum d’opacité sur ses projets d’envergure. En d’autres termes, Go est un des arbres qui cache la forêt.

Quelle forêt ? Hum… il y a en fait plusieurs grands axes stratégiques sur lesquels Google travaille :

Les équipes de Google risquent-elles de s’essouffler avec un tel rythme de diversification ? Non pas réellement dans la mesure où totu ceci est contrôlé (pas plus de 20% du temps des employés) et qu’ils peuvent se permettre de faire des erreurs (cf. Les acquisitions ratées de Google).

Je peux me tromper mais je suis persuadé que tout ceci (les annonces) cache un plan beaucoup plus ambitieux.

47 commentaires sur “Google lance son langage de programmation pour brouiller les pistes

  1. Léger, puissant mais très jeune. C’est ce que j’en pense après avoir vu la vidéo de présentation de Go.

    L’avenir est clairement dans le dev distribué (multi-coeur, cloud…) et c’est ce qu’essaye de résoudre Go en repartant de zéro pour obtenir un langage simple.
    L’avenir est clairement dans le dev multi-plateforme et exécution dans un machine virtuelle (dans le sens JVM ou CLR) et c’est ici le cas avec une compilation très rapide, nécessaire pour générer les binaires lors de l’installation sur la machine cible.

    C’est intéressant car Go propose des services habituellement fournis par l’OS (communication au sens large, nécessaire sur l’aspect multi-coeur)

    Je dirais que cela semble plus facile d’approche que C#, Java et surtout C++ mais j’ai des doutes sur la gestion/maintenabilité de gros projets.

    Après si on se projette dans le cloud computing, Go est le candidat idéal pour une exécution dans une machine virtuelle simplifiée.

    A suivre du coin de l’œil, Microsoft travaille exactement dans la même direction avec .NET et offre déjà le hosting d’application .NET dans Azure. Il y a aussi le projet Singularity = OS 100% .NET

    Comparer avec Java ? Je ne pratique pas, je ne peux en parler.

  2. @RefSchool : l’innovation n’est pas un objectif, mais un moyen de faire du profit en faisant feu dans toutes les directions.

  3. Je suis d’accord avec @rthomas.

    Go semble débarquer pour remettre sur la table le côté “serveur side” des développements internet un peu oublié parce que la mode en ce moment est de parler surtout de développement et d’outils orienté client.

    En effet, on lit beaucoup à propos d’outils RIA, de Silverlight, Flash, jQuery, des différentes technologies Ajax, WPF, d’expérience utilisateur, de navigateurs avec de nouveaux moteurs Javascript compilé en juste à temps…

    Avec l’essor de ce qu’on appelle le Cloud computing, il est bon de rappeler que le côté serveur d’un développement n’est pas à négliger, que “performance is a feature”, et qu’un site internet a haute disponibilité nécessite une attention particulière non seulement pour l’infrastructure, mais aussi de l’applicatif côté serveur. Je pense que Go a un rôle à jouer en développant plus d’attrait autour des problèmes du Server Side development, qui n’ont rien de nouveau, mais qui ne sont que peu connus.

    Je pense surtout aux décideurs qui lisent beaucoup et qui s’interressent surtout à l’aspect, au look and feel, à l’utilisabilité, toutes ces choses un peu sexy et “à la mode”, mais indispensable. et c’est tout à fait normal :)
    Mais ont ils conscience de l’investissement et l’attention nécessaire à la réalisation de cette partie serveur invisible, mais présente ? C’est tout de même l’horrible salle des machines et sa cargaison de charbon qui font avancer le paquebot :)

    Voici un petit article qui résume plutôt bien le malaise :
    http://www.codinghorror.com/blog/archives/001296.html

    J’espère que Go va faire parler de lui, et susciter de l’intérêt pour le dévelopment “Server Side”.

  4. Pour revenir sur ce que disait Frédéric, je ne pense pas que cette annonce soit l’arbre qui cache la forêt, même si je pense aussi que Google nous prépare de grandes choses comme par exemple, de devenir Hébergeur de boutique en ligne et ainsi croqué dans l’énorme pomme de l’e-commerce, mais c’est une autre histoire …

    En effet, si google avait vraiment voulu créer un effet d’annonce, celle-ci n’aurait elle pas été reprise en grande pompe sur The Official Google Blog ?

    Quand au langage en lui même, je suis assez refroidi après mes essais sur RoR. J’adore ce langage, mais il était (est ?) difficile de trouver un bon hébergement gratuit et c’est ce qui m’a freiné dans son utilisation (j’imagine comme beaucoup de monde).
    Je vais donc patienter cette fois, attendre les premiers plugin pour eclipse ou netbeans, les premières offres d’hébergement, les premiers retours utilisateurs et à ce moment là qui sait je serai peut-être tenté …

  5. Google ne serait-il pas tenté par la concentration verticale c’est à dire disposer d’un ecosystème propre à l’instar de µsoft jadis et désormais d’Apple ? Ecosystème qu’il applique ensuite à TOUS ses produits ?

    Qu’apporte Go concrètement et qu’apporte-t-il surtout dans quel domaine ?
    S’agit-il plutôt de celui du dév côté serveur, celui des applications massivement parallèles, celui des applications distribuées (cloud computing avec Apps), celui du dév côté client (certainement pas), du versant du développement mobile (ah ? Go serait-il prompt à la modularisation et à la dissémination de codes mobiles ce qu’aucun langage ne couvre bien aujourd’hui ?), du versant du microcode pour processeur (que google fournirait à son pote Apple pour ses processeurs P-SEMI) ?

    Ben, comme pour Chrome, on verra dans un an ce qu’il en reste.

    db

  6. @ Rbrugier > Bien vu !

    @ Mister parapluie > D’après ce que j’en sais RoR n’est pas un très performant, à l’opposé de ce que veux être Go

    @ rthomas > Qu’entends-tu par “gros projet”, c’est là tout le problème du choix d’un langage : à partir de quand est-il préférable d’utiliser Java par rapport à PHP ? Là est la question et tu ne peu pas trop le savoir à l’avance.

    @ Ben > C’est justement parce que Go n’a aps “eu droit” à un billet sur le blog officiel que ce projet n’est pas dans la roadmap principal.

    @ Ben > Un Google Store Engine au même titre que l’AppEngine ? Voilà une idée très intéressante… un Store Engine qui utilise les data-centers Google, qui serait indéxé en temps réel et proposerait le tout nouveau Product Search ? MixCommerce peut trembler !

    /Fred

  7. Je ne veux vraiment pas mettre de mauvaise humeur sur ton site Frédéric, mais il y a beaucoup d’erreur dans ta description de Go :

    > C’est un langage compilé (donc pas comme javascript) très proche du C mais intégrant une notion d’héritage (donc concurrent du C++) ;
    Oui, c’est compilé. Non, il n’y a pas d’héritage, mais seulement des interfaces, c’est donc très différent du C++. Il y a éventuellement le système de templates du C++ qui y ressemble. mais disons que c’est beaucoup plus proche du Python que du C++ (duck-typing, entre autres).

    > Il est censé répondre à une demande croissante de développeurs qui sont coincés entre la rigueur de Java et le manque de sophistication / puissance de PHP ;
    Quoi ? Il n’y a que 2 langages dans le monde web ? Python ou Ruby sont bien utilisé. Et pour le coup, bien plus que Java pour faire du développement web.

    > Il correspond mieux à la réalité de l’informatique en 2009 (parralel computing, processeurs multi-coeurs…) ;
    Je n’en ai pas vu la preuve dans le Tech Talk, mais bon, ils l’annoncent donc admettons.

    > Il propose une syntaxe très particulière mais révolutionnaire (merci de me donner votre feedback là-dessus) ;
    Une syntaxe particulière ? Grossièmement, c’est du C castré par du PHP. Comment peut-on encore vendre une syntaxe comme celle-là quand on voit la légèreté de tous les nouveaux langages (et je n’en citerai aucun en particulier).

    > Il est proposé en open source sous licence BSD.
    Non. Un compilateur pour ce langage est proposé sous licence BSD, mais ça n’a pas de sens de dire qu’un langage est open-source. Et encore, je doute que tout le compilateur le soit vu qu’une des implémentations est un front-end de GCC (GPL, donc incompatible).

    Certes, tu annonces d’emblée que tu n’es pas un expert du domaine, mais il vaut vraiment mieux éviter d’interpréter dans ce cas.

  8. Je me faisais justement la réflexion de l’absence de stratégie “visible” dans les annonces et les mouvements googlesques de ces dernières semaines. Et je n’arrive toujours pas à croire que ce que Google est devenu aujourd’hui était ‘planifié’… Toujours est-il que voulue ou pas, cette occupation du media internet par Google a de quoi effrayer, même ceux qui ne voit en Google qu’une entreprise peu structurée dont la stratégie se construit au fil de l’innovation de ses salariés.
    J’ai parfois l’impression que internet = google = internet, et ça fait peur !

  9. @ Warren > Oui effectivement je ne suis pas un expert et j’ai du mal à bien positionner ce langage par rapport aux autres, mais là n’est pas le propos de cet article.

    /Fred

  10. Comme cela a été évoqué, je pense que Google pense à NaCl. Il ne fait pas de doute que Chrome OS donnera une large place aux applications N-Tiers. Ces dernières manquent encore de puissance et de sophistication pour rivaliser avec les applications client lourd. Je ne serais donc pas surpris d’apprendre dans les un ou deux ans qui viennent l’arrivée d’un compilateur Go pour NaCl.

  11. Pour info:
    Depuis la crise économique et les licenciements chez Google, les “20% de temps libre” ne sont plus d’actualité.

  12. Go peut être un langage développé simplement par une startup inside Google.

    Mais il a qques chances de se développer, i.e. d’être plus que cela :
    – compilation rapide,
    – compilation native + génération de byte-code possible pour les machines virtuelles du marché (=> différents marchés visés)
    – vraisemblablement plus simple à maitriser que C et C++ (pas d’arithmétique de pointeurs par ex)
    – plus adapté que C, voire C++, au monde des puces multi-coeur.

    Bref, à vue de nez, je positionnerais Go comme un meilleur C qui pourrait faire de l’ombre à C++ (voire à Python ?), i.e. qui pourrait remplacer C++ utilisé en interne chez Google.

  13. Monsieur Cavazza, est-ce que le point 2 : “Go a nécessité deux ans de développement mais n’est utilisé dans aucune application de chez Google (les équipes utilisent surtout C++ et Python) ;” est si surprenant que cela ? En réalité, comment un langage qui vient juste d’être terminé pourrait-il déjà être utilisé massivement ?

Les commentaires sont fermés.