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 :
- Go n’est pas un projet d’entreprise mais un projet issu des 20% de R&D accordé à chaque employé ;
- 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) ;
- Go n’est pas supporté par le Google App Engine ;
- 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 :
- Le marché de la publicité et des mots-clés (la vache à lait de Google avec les régies DoubleClick et AdMob) ;
- Les systèmes d’exploitation (Android et Chrome OS) ;
- Les outils de communication (Wave qui va visiblement progressivement fusionner avec Gmail, cf. Leaked Screenshots of New Gmail Interface Surface)
- La mobilité (Google Voice et cie)…
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.
Moui, d’accord avec ta conclusion. Mais je n’arrive pas à imaginer ce qu’ils vont bien pouvoir sortir avec ce nouveau langage. Je penche pour un produit dont les améliorations seront à faire avec Go, mais je ne crois pas qu’ils utiliseront massivement Go pour leurs propres produits (beaucoup trop de boulot).
Oui d’autant plus qu’ils ne peuvent pas se permettre de “jouer” avec des applications qui sont utilisées par des centaines de millions d’utilisateurs et qui génèrent des milliards de $.
/Fred
Effectivement, tant qu’on continuera à se dire que Google est une entreprise comme les autres, qui au fond ne recherche QUE le profit (et avant tout le profit), ce sera difficile de comprendre la logique de tout ça. Mais à partir du moment où on s’autorise à penser que les profits pharaoniques de Google ne sont qu’une conséquence de son incroyable désir d’innovation, alors cette approche expérimentale prend tout son sens. En l’occurrence, je rejoins complètement les motivations de ce langage. Le dilemne entre productivité et performance est une réalité, et je travaille aujourd’hui sur un projet Java où il me faut attendre presque 3 minutes après chaque changement pour voir le résultat. Donc le besoin est réel, les gars de chez Google s’autorisent à créer en dehors de la boîte. Et ça donne des trucs comme GMail, Maps, Wave, etc.
A noter que Go peut être compilé pour NaCl.
Hello Fred
Je pense que le marché à effectivement besoin d’un nouveau langage, et, je peux me tromper, mais je pense pas que PHP sera le langage du Web de demain.
Maintenant, après avoir lu quelques infos sur Go, je pense pas que Go soit ce langage.
@ Ineol > “Go peut être compilé pour NaCl” ? Donc ça veut dire que Go peut fonctionner directement sur la machine (Windows, Mac, Linux) mais également sur une pseudo-machine virtuelle (en l’occurrence NaCl) ? C’est ça ?
Intéressant, ils proposeraient donc une double approche : meilleures performances et déploiement accéléré.
/Fred
“Go” n’y est pas encore, mais j’encourage la lecture de cette page Wikipedia pour avoir un tour d’horizon de l’ensemble des langages de programmations existants (ou ayant existé…), savoir qui les a créé, pour quels besoins, dans quels circonstances… etc…
C’est très interressant.
http://fr.wikipedia.org/wiki/Chronologie_des_langages_de_programmation
Ce qui fait peur (et que tu évoques dans ton post), c’est qu’autant Google cultive son côté altruiste et fort sympathique (cf. le post de Seb Abrogast — euh, Google n’a pas d’actionnaires ? Ça n’intéresse personne, le gain ? Ça se saurait !), autant les plans à long-terme peuvent faire froid dans le dos.
Et là, Google a beau bénéficier d’un énorme capital sympathie, l’opacité est totale. Or, combien d’entrepreneurs aujourd’hui dépendent de Google pour faire marcher leur business ?
Ils pourraient très bien décider, demain, de rendre gmail incompatible avec Safari, juste pour rire… Ou “oublier” de porter Gears à Snow Leopard…
On fait quoi si demain une société privée et relativement opaque détient les outils pour communiquer (OS, navigateur), les outils pour accéder à l’information (moteur de recherche, gmail) et surtout les données elles-mêmes (mails, books, news, etc) ?
@Pierre-Julien
C’est dommage parce que c’est justement le genre de “Fear, Uncertainty and Doubt” qui gache tous les débats.
D’abord je n’ai jamais dit qu’ils n’avaient pas d’actionnaires ou que le profit ne les intéressait pas. J’ai dit que le profit n’était pas leur objectif principal. Tout est affaire de priorités dans une vision d’entreprise. Et comme malgré le fait que ce ne soit pas leur objectif premier, ils font des bénéfices de fou, les actionnaires ne leur mettent probablement pas autant la pression pour trouver une raison financière à tout ce qu’ils font.
Pour ce qui est de l’opacité, je ne vois vraiment pas comment ils pourraient être plus transparents qu’avec ça (http://www.dataliberation.org/) ou ça (https://www.google.com/dashboard). Quelle autre boîte qui offre des services cloud-based propose de récupérer gratuitement toutes ses données, et monte même une équipe payée pour ça?
moi ce qui me fait peur, ce n’est pas tellement le côté “altruisme ou pas” de google, ni même les éventuelles dispersions en interne pour l’entreprise, c’est plutôt la dispersion entre X langages qui se fait au détriment des travaux sur les bibliothèques, les frameworks, etc…
je m’explique : ce qui a fait en son temps le gros succès de Java, ce n’était pas que les qualités (polémiques…) du langage, c’était surtout le fait qu’il n’y avait quasiment pas d’alternative, ce qui faisait que la plupart des équipes dynamiques, dans le monde du libre ou ailleurs, utilisaient ce langage. Associé au côté multiplateforme du langage, cela donnait (et cela donne encore…) un panel d’outils de haute qualité pour le développeur.
Là, j’ai un peu peur de retrouver la situation qu’on avait dans les années 90 : des compétences et des équipes de travail très dispersées, et autant d’énergie dispersée dans X projets pour X langages différents
Pour le langage web de demain il y a le Ruby on Rails qui commence à bien prendre.
D’autant plus qu’a priori (je ne le connais pas) il est simple d’accès, très bien conçu (modèle MVC), performant et la maintenance grâce à son approche MVC (Modèle Vue Contrôleur) est facilité.
Productivité maximale avec ce langage apparemment.
Et si les développeurs continuent en ce sens plutôt que d’aller dans la galaxie Google ça sent le plantage sur ce produit.
Mouais, mouais, mouais…
Je n’ai rien vu de transcendant dans ce nouveau langage.
Il y a peut-être le principe des channels et du multi-processus intégré en standard. Mais ça ne suffira pas à en faire le langage de demain.
À force d’en voir passer, je me suis fait quelques réflexions sur le sujet.
Ce n’est pas le langage lui-même qui est intéressant mais l’ensemble des fonctionnalités et bibliothèques mises à disposition du développeur. Et c’est ce qui fait que tel ou tel langage s’en sorte mieux qu’un autre dans un domaine particulier (ex. : PHP) alors que ses structures n’ont rien de fondamentalement révolutionnaires.
Ensuite, un langage doit être SIMPLE ! On n’en a rien à faire qu’un langage permette d’écrire la même chose que son voisin avec 3 fois moins de lignes s’il faut 3 fois plus de temps pour les mettre au point (conception+débogage) et 5 fois plus à notre successeur pour reprendre le code et essayer de comprendre ce qu’on a voulu faire. Sans parler des fonctionnements au limite encore moins maîtrisés.
Pour reprendre la problématique du multi-processeurs, c’est quelque chose qui pourrait être implémenté dans un langage déjà existant comme PHP ou Java, ce n’est pas la peine de recréer un langage pour ça.
En tout cas, cette nouvelle annonce doit déjà donner l’eau à la bouche à de nombreux développeurs.
Je ne suis pas développeur, je ne me prononcerais donc pas sur les qualités du langage.
En revanche, je souscris complètement à l’analyse de Sébastien Arbogast sur les raisons de cette sortie : la recherche de la killer innovation par des essais.
Une opération de diversion ? Un peu couteux comme écran de fumée… surtout pour cacher des choses qu’on sait déjà.
@Sébastien Arbogast
comment peut on penser que les profits ne sont pas l’objectif principal de Google? Il fait tout pour court circuiter les pure player actuel, tout est fait pour traire la dernière goutte de lait
dernier fait d’arme
http://www.techcrunch.com/2009/10/29/google-tackles-mortgage-market-with-new-comparison-ads/
on peut rêver
Désolé de “polluer” ce post mais j’ai remarqué la présence d’une image – Un C blanc sur fond rond gris – à côté des traditionnelles images rss et étoile pour les favoris dans la barre d’adresse de mon firefox. Savez-vous à quoi ca correspond ?
Moi ce qui me fait halluciner quand même, c’est que ça fait même pas 2 mois qu’ils ont annoncé un autre langage (révolutionnaire, etc) sur la jvm !
Le 17/09 : http://code.google.com/p/noop/
@Wam : c’est seulement que le webmaster à mis un lien canonical sur cette page
Une petite lecture si tu veux plus d’infos : http://oseox.fr/forum/forum7/topic418.html?sid=25ee1c3fe6c0c54e80c7405754b046cd
Sinon pour le langage de prog de Google, je rejoins Sébastien Arbogast, ils le font dans le cadre des 20% donc ce n’est pas perdu, cap eut lancer quelques chose de bien ou ca peut être comme Knol.
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.
@RefSchool : l’innovation n’est pas un objectif, mais un moyen de faire du profit en faisant feu dans toutes les directions.
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”.
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é …
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
@ 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
@fred “Google Store Engine” ça sonne bien.
J’ai essayé de le développer dans ce post : http://www.discoverg.fr/2009/11/google-futur-champion-de-la-boutique-en.html , mais je vois que j’ai oublié un certains nombre d’éléments …
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.
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 !
@ 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
Voici une réponse, peut-être :
http://www.01net.com/editorial/508625/google-chrome-os-disponible-la-semaine-prochaine/
db
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.
Pour info:
Depuis la crise économique et les licenciements chez Google, les “20% de temps libre” ne sont plus d’actualité.
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.
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 ?
@ Badak > J’adore quand on m’appelle “Monsieur Cavazza”
“Je peux me tromper mais je suis persuadé que tout ceci (les annonces) cache un plan beaucoup plus ambitieux.”
Bah faut pas aller loin, Google veut dominer Internet et la facon dont on utilise un ordinateur. Il s’attaque cependant beaucoup moins sur le domaine entreprise ( a part la pub bien sur) …
Peut être qu’il faut voir plus loin c’est a dire que google go peut etre integré a native client ,que Go gere les multicoeurs ,ensuite native client peut etre acceleré et profiter des cartes graphiques par le biais de 03D ..si ensuite le navigateur chrome OS devient majoritaire en part de marché (aujoud hui il constitue le navigateur web connaissant la plus forte progression )
Alors oui native client aura un probleme pour s imposer puis qu il faut l integrer dans d autres navigateurs ,mais si google sort ses propres netbook avec chrome os et NACI dessus ça aura un avantage assez important …
On pense souvent que html5 sera bientot la norme mais des articles récents on mis en évidence que des applications en html5 (qui permettent un acces offline) seront beaucou plus lente que du code natif (ce qui parait normal ) d’ailleur a ce propos google wave semble bien concu mais assez lourd cette lourdeur pourrait être résolue avec du code natif
la ou la situation parait assez floue c’est entre les application spécifique a internet google document /reader/gtalk / mail/ et celle pour portable (lattitude ,voice,android ) et aussi un certains rapprochement entre les deux ex google maps/gps )
on ne voit pas trop comment peut s’integrer chrome os et android ou comment il seraient amené a fusionner et pourquoi