Developpez.com

Club des développeurs et IT pro
Plus de 4 millions de visiteurs uniques par mois

"Go connait beaucoup plus de succès que prévu"
Déclare Rob Pike, ingénieur logiciel responsable du nouveau langage de Google

Le , par Gordon Fowler, Expert éminent sénior
Et introduit des modifications significatives de sa syntaxe


Mise à jour du 03/02/2011 par Idelways

Une nouvelle version de Go, le langage de programmation open-source de Google, vient de voir le jour.

Estampillée « release.2011-02-01 » par l'équipe du développement du langage, cette version introduit des changements significatifs à la syntaxe des opérations sur les canaux et introduit de nouvelles améliorations au support dans les environnements Windows.

Les opérations non bloquantes sur les canaux ont été supprimées. Les sources utilisant ces opérations doivent donc être modifiées en utilisant l'instruction « Select » avec une clause « Default ».

Cette clause Default sera exécutée au cas où aucune autre clause n'est prête, ce qui empêcherait le blocage de la communication.

Les canaux en Go offrent un mécanisme permettant à deux fonctions concurrentes de synchroniser leurs exécutions et de communiquer entre elles en se passant une valeur d'un type d'élément spécifique.

Le package Log a aussi été modifié. Ses fonctions Exit, Exitf et Exitln ont été respectivement renommées Fatal, Fatalf et Fatalln.

Autre modification majeure, sous Windows, il est désormais possible d'écrire la fonction WndProc directement dans le langage Go et de recevoir ainsi toutes les entrées vers la fenêtre du programme.

Enfin, le port du langage sur le système d'exploitation « Tiny » a été officiellement arrêté, un port jugé non maintenu et non testé.

Pour mettre à jour votre version de GO, il suffit de lancer les commandes suivantes
Code : Sélectionner tout
1
2
hg pull 
hg update release
Source : Mailing List de Go

Et vous ?

Que pensez-vous de ces nouveautés ?
Utilisez-vous le langage Go ? Dans quel type de projets ?

"Go connait plus de succès que prévu"
Selon Rob Pike, ingénieur logiciel chez Google

Mise à jour du 01/03/10

Go, le langage de programmation open-source lancé par Google, n'en finirait pas de séduire les développeurs.

C'est en tout cas le message que Moutain View donne dans un communiqué à la presse : « Le niveau d'intérêt de la communauté a été plus élevé que prévu et il est très encourageant », note Rob Pike, ingénieur logiciel chez Google.

Pour expliquer ce succès, certains notent que Google a réussi à intégrer les feedbacks des développeurs sans laisser le projet open-source partir dans toutes les directions.

Les auteurs de Go seraient donc très stricts sur les règles de formatage. Ils semblent avoir pour objectif principal de conserver la simplicité du langage.

Pour autant, Go n'est pas encore arrivé à maturité. En tout cas pas assez pour développer des applications critiques.

Il est en revanche suffisamment stable pour créer des « serveurs Web simples, un traitement de texte ou d'autres projets de ce type », ajoute Rob Pike.

De fait, de nombreux développeurs ont déjà commencé à l'utiliser pour construire ces applications non critiques.

Particulièrement dans le domaine du multithread et de la programmation multiprocesseur, note John Gordon, développeur ayant publié plusieurs tutoriels sur Go et auteurs de plusieurs applications.

Pour lui, développer ce type de projet était « au mieux très dur avec les autres langages populaires » connus jusqu'ici.
Sous-entendu, Go faciliterait la vie dans ce domaine et - pour lui - ne devrait pas tarder à s'imposer.

Google serait donc sur le point de réussir son pari : réduire la complexité du codage sans compromettre les performances des applications, en alliant la rapidité de développement des langages dynamiques comme Python et le robustesse des langages compilés comme le C ++.

Certains y voient même un futur concurrent très sérieux pour Java et son « threading model » qualifié de « trop vieux » et de « trop compliqué » par les partisans les plus enthousiastes de Go.

C'est peut-être mettre la charrue avant les bœufs.

A lire : Installation de Go, par Brice Colucci, un tutoriel de Développez.com

Et vous ?

Pensez-vous que Go va remplacer Python et C++ ? Et Java ?

Avez-vous déjà développé une application avec Go ? Qu'en avez-vous pensé ?

MAJ de Gordon Fowler

Google lance un langage de programmation
Appelé Go, il devrait allier les qualités du C++ et de Python

Google vient d'annoncer que la société avait lancé un nouveau langage de programmation, encore expérimental, baptisé sobrement «Go».

Destiné en priorité aux développeurs Web, Go devrait allier, d'après les dires de la société, les avantages du C++ et ceux de Python.

Plus précisément «Go [va] essayer de combiner la vitesse du travail de développement d'un langage dynamique Python, avec les performances et la sécurité d'un langage compilé comme C ou C++».

Pour l'occasion, Google a réalisé un site d'introduction a son nouveau langage – Golang.org -, une vidéo - présentée par Russ Cox, et même une mascotte - Gordon the gopher, que l'on peut apercevoir sur son T-Shirt :



Source : Le Site officiel de Go

Lire aussi :

Les rubriques Langages, Python et C++.

Développement Web

Google sort Closure Tools pour les développeurs JavaScript

Et vous ? :

Allez-vous essayez Go ?
Pour vous, est-ce un langage de programmation de plus ou un langage de trop ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de gorgonite gorgonite - Rédacteur/Modérateur http://www.developpez.com
le 09/03/2010 à 0:19
Citation Envoyé par pcaboche  Voir le message
En Caml, je pense qu'il est particulièrement intéressant de se passer des exceptions. Si une erreur se produit, on le spécifie dans le type de retour de la fonction:
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
type erreurFonction = 
  Erreur1 
| Erreur2 
| Erreur3 
;; 
  
type resultat =  
  Erreur of erreurFonction 
| Resultat of int 
;;
Ici, soit le résultat est correct et exploitable, soit on a une erreur avec tous les détails spécifiés dans le type. Sur ce type, on peut faire du pattern-matching:
Code : Sélectionner tout
1
2
3
4
5
6
7
 
let resultat = maFonction parametre1 parametre2 
in 
  
match resultat with 
| Resultat(v) -> traiterValeur v 
| Erreur(err) -> afficherErreur err
Tu vas me dire qu'on peut faire la même chose avec une exception. Oui, mais dans ce cas il y a une énorme différence: si par inadvertance mon pattern-matching se révélait incomplet (oubli de valeurs possibles), le compilateur le signalera par un warning; en revanche avec les exceptions, si (suite à un oubli de ma part) une exception n'est pas traîtée dans la fonction, elle remontra dans la fonction appelante.

C'est ça que j'appelle "court-circuiter le pattern matching".

Si le matching des exceptions n'est pas complet, le compilateur ne le signalera pas. Or, si j'oublie de traîter une erreur, je souhaite que le compilateur le signale. Propager une erreur à la fonction appelante peut être tout à fait normal, à condition que cela soit un choix délibéré (pattern-matching), et non pas un choix par défaut (exceptions).


ici, je crois que c'est plus un problème avec les exceptions en soi, qu'avec leur utilisation dans un langage fonctionnel à type statique par inférence... parce que certains ardents défenseurs de C-ANSI te diront qu'avoir des exceptions n'apportent rien de plus qu'une bonne gestion des code de retour d'erreur.
ce qui d'un point de vue théorique n'est pas forcement faux, à l'exception des 4/5 lignes de code à ajouter systématiquement pour les gérer à chaque appel de fonction, là où le mécanisme des exceptions permettrait de considérer toute la partie où l'exception n'a pas été gérée comme une "transaction échouée"

Citation Envoyé par pcaboche  Voir le message
Une fonction est censée retourner un résultat d'un type particulier, et à partir du type retourné par une fonction, le compilateur en déduit le type d'une variable. Rien qu'en regardant le type retourné par une fonction on peut en déduire les valeurs possibles que peut prendre une variable (y compris énumérer de manière exhaustive les possibles cas d'erreurs). Tout cela est parfaitement lisible rien qu'en regardant le code.

Oui mais voilà: au milieux de la fonction on balance une exception qui elle, ne transparaît pas dans le prototype de la fonction. Je trouve ça problématique...



là tu demandes une gestion des exceptions "à la Java" au niveau du compilateur... là où beaucoup de Caméliens te diront de regarder les variants polymorphes
http://till-varoquaux.blogspot.com/2...g-nothing.html
Avatar de pseudocode pseudocode - Rédacteur http://www.developpez.com
le 09/03/2010 à 19:59
Citation Envoyé par gorgonite  Voir le message
parce que certains ardents défenseurs de C-ANSI te diront qu'avoir des exceptions n'apportent rien de plus qu'une bonne gestion des code de retour d'erreur.

heu... C'est quoi "une bonne gestion des code de retour d'erreur" par exemple pour une fonction "division", ou alors "lecture d'un octet dans un flux" ?
Avatar de gorgonite gorgonite - Rédacteur/Modérateur http://www.developpez.com
le 09/03/2010 à 20:52
Citation Envoyé par pseudocode  Voir le message
heu... C'est quoi "une bonne gestion des code de retour d'erreur" par exemple pour une fonction "division", ou alors "lecture d'un octet dans un flux" ?

Tu leur demanderas
Avatar de pcaboche pcaboche - Rédacteur http://www.developpez.com
le 09/03/2010 à 22:45
Citation Envoyé par gorgonite  Voir le message
ici, je crois que c'est plus un problème avec les exceptions en soi, qu'avec leur utilisation dans un langage fonctionnel à type statique par inférence...

Ce que je veux dire, c'est que ce n'est pas forcément bon de mélanger les paradigmes. Difficile de trouver un exemple éloquent...

Citation Envoyé par gorgonite  Voir le message
là tu demandes une gestion des exceptions "à la Java" au niveau du compilateur... là où beaucoup de Caméliens te diront de regarder les variants polymorphes
http://till-varoquaux.blogspot.com/2...g-nothing.html

Très intéressant ce lien !
Avatar de lollancf37 lollancf37 - Membre du Club http://www.developpez.com
le 10/03/2010 à 1:45
Citation Envoyé par smyley  Voir le message
Il existe déjà vraiment beaucoup de langages de programmations différents. Et là, encore un de plus qu'il faudra donc "apprendre" avant de pouvoir utiliser ces outils.
Pour moi, c'est un langage de trop, on a déjà développé un peu tout ce qui est actuellement possible de faire dans les langages de programmations existants, développer un framework sur un langage existant serai peut être plus facile à prendre en main pour les développeurs intéressés par le dév Web (qui ont déjà leurs petites habitudes avec php par exemple).

La phase d'apprentissage d'un language n'est pas quelque chose de si terrible que ça, dans le sens où plus on en apprend dans le génie logiciel et plus on s'attache au concept plutôt qu'à la syntaxe ensuite c'est vraiment une question de pratique.

J'essaierai sûrement Go lorsque j'aurais le temps
Avatar de Camille_B Camille_B - Membre confirmé http://www.developpez.com
le 10/03/2010 à 7:53
Au sujet de Javascript :

Quelqu'un disait que Javascript était un langage "limité" et qu'il évoluait lentement à cause de l'ECMA. C'est assez faux. Javascript n'est limité dans son implémentation navigateur web que pour l'accès au FS pour les raisons de sécurité que l'on connaît, ce qui n'empêche pas la création d'une implémentation qui le permet (tel que seed ou gjs par exemple). En tant que langage il est plutôt bien conçu !

Allez trop vite ne sert de toute manière à rien puisqu'il reste toujours le problème de la compatibilité entre les navigateurs.

Réponse à Pcaboche : Non, tous les "nouveaux" langages ne sont pas des impératifs à qui on enlève le point-virgule (qui à dit Python) Il y a, par exemple, Clojure, qui est une sacrée tuerie (basée sur du très vieux) !

Et puis, en concurrent de Go, il y a Lisaac qui est autrement plus excitant.
Avatar de comode comode - Membre confirmé http://www.developpez.com
le 13/04/2010 à 19:54
Bon bha je prend la conversation en cours et je viens mettre mes gros pied dans le plats, mais vu qu'a la base :

1 - la question était de savoir si GoLang est un langage de trop ou un truc interessant

2 - que je suis tombé sur le sujet via Google en recherchant des infos sur le sujet

Je me range du côté des gens intéressés. Je connais pas tous les langages du monde (genre le D qui revient souvent dans la discussion), j'en suis encore à chercher des infos sur celui-la, mais on me fait miroiter un langage compilé et rapide, un système de channel fort intéressant et une gestion des accès concurrents sans sémaphores, le tout servit open source. Je ne peux donc m'empêcher d'y voir un bon langage pour la programmation d'applications serveur.
Avatar de deadalnix deadalnix - Membre chevronné http://www.developpez.com
le 13/04/2010 à 20:56
Comme le D en fait
Avatar de Idelways Idelways - Expert éminent sénior http://www.developpez.com
le 03/02/2011 à 12:06
Go : une nouvelle version du langage de Google améliore le support sous Windows
Et introduit des modifications significatives de sa syntaxe


Mise à jour du 03/02/2011 par Idelways

Une nouvelle version de Go, le langage de programmation open-source de Google, vient de voir le jour.

Estampillée « release.2011-02-01 » par l'équipe du développement du langage, cette version introduit des changements significatifs à la syntaxe des opérations sur les canaux et introduit de nouvelles améliorations au support dans les environnements Windows.

Les opérations non bloquantes sur les canaux ont été supprimées. Les sources utilisant ces opérations doivent donc être modifiées en utilisant l'instruction « Select » avec une clause « Default ».

Cette clause Default sera exécutée au cas où aucune autre clause n'est prête, ce qui empêcherait le blocage de la communication.

Les canaux en Go offrent un mécanisme permettant à deux fonctions concurrentes de synchroniser leurs exécutions et de communiquer entre elles en se passant une valeur d'un type d'élément spécifique.

Le package Log a aussi été modifié. Ses fonctions Exit, Exitf et Exitln ont été respectivement renommées Fatal, Fatalf et Fatalln.

Autre modification majeure, sous Windows, il est désormais possible d'écrire la fonction WndProc directement dans le langage Go et de recevoir ainsi toutes les entrées vers la fenêtre du programme.

Enfin, le port du langage sur le système d'exploitation « Tiny » a été officiellement arrêté, un port jugé non maintenu et non testé.

Pour mettre à jour votre version de GO, il suffit de lancer les commandes suivantes
Code : Sélectionner tout
1
2
hg pull 
hg update release
Source : Mailing List de Go

Et vous ?

Que pensez-vous de ces nouveautés ?
Utilisez-vous le langage Go ? Dans quel type de projets ?
Avatar de camus3 camus3 - Membre éprouvé http://www.developpez.com
le 03/02/2011 à 12:18
Citation Envoyé par Camille_B  Voir le message
Au sujet de Javascript :

Quelqu'un disait que Javascript était un langage "limité" et qu'il évoluait lentement à cause de l'ECMA. C'est assez faux. Javascript n'est limité dans son implémentation navigateur web que pour l'accès au FS pour les raisons de sécurité que l'on connaît, ce qui n'empêche pas la création d'une implémentation qui le permet (tel que seed ou gjs par exemple). En tant que langage il est plutôt bien conçu !

Allez trop vite ne sert de toute manière à rien puisqu'il reste toujours le problème de la compatibilité entre les navigateurs.

javascript n'est pas limité , il est mal concu , avec des "bad parts" et absolument pas concu pour ce qu'on lui fait faire aujourd'hui.

Et rien n'empêche ECMA de faire une nouvelle version de javascript , puisque la balise script précise le type de script ainsi que sa version. Il suffit que les anciens navigateurs n'exécutent pas la nouvelle version , tout simplement.

Et ECMA est bien responsable de la situation pour avoir laisser yahoo et microsoft torpiller la version 4 de la spec.

JAVASCRIPT a des défauts de conception , c'est pour cela que la version 5 introduit un STRICT mode , personne ne peut le nier. Cela ne veut pas dire qu'on ne peut rien faire avec , cela veut surtout dire qu'il n'est pas la meilleurs solution pour un langage client censé être facile à pratiquer et souple. Javascript n'est ni souple ni facile puisqu'il a des pièges.

Enfin il faut faire la différence entre API et le langage lui même et ses types et fonctions de base.
Avatar de wokerm wokerm - Inactif http://www.developpez.com
le 04/02/2011 à 10:11
je ne connait pas le languages en question, mais si c'est pour un languages de plus et pour un choix de plus je ne dirai qu'une chose
Offres d'emploi IT
Développeur digital (h/f)
BVA - Midi Pyrénées - Balma (31130)
Ingénieur étude et développement .NET Front (H/F)
BK Consulting - Ile de France - Paris (75000)
un(e): CHEF DE PROJET (H/F)
CJS - Ile de France - IDF

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil