IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Go Discussion :

Le nouveau langage de programmation de Google connait beaucoup plus de succès que prévu


Sujet :

Go

  1. #121
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    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 - Visualiser dans une fenêtre à part
    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 - Visualiser dans une fenêtre à part
    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
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  2. #122
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    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" ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #123
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    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
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  4. #124
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    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 !
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  5. #125
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Points : 90
    Points
    90
    Par défaut
    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

  6. #126
    Membre éclairé Avatar de Camille_B
    Homme Profil pro
    Webmaster
    Inscrit en
    Septembre 2006
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2006
    Messages : 212
    Points : 673
    Points
    673
    Par défaut
    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.

  7. #127
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    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.

  8. #128
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    Comme le D en fait

  9. #129
    Expert éminent sénior
    Avatar de Idelways
    Homme Profil pro
    Développeur Ruby on Rails / iOS
    Inscrit en
    Juin 2010
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Ruby on Rails / iOS

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 374
    Points : 68 548
    Points
    68 548
    Par défaut Go : une nouvelle version du langage de Google améliore le support sous Windows
    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 - Visualiser dans une fenêtre à part
    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 ?

  10. #130
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 657
    Points : 1 240
    Points
    1 240
    Par défaut
    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.

  11. #131
    Inactif  
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2009
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2009
    Messages : 335
    Points : 0
    Points
    0
    Par défaut
    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

Discussions similaires

  1. Réponses: 290
    Dernier message: 31/05/2013, 10h43
  2. [OpenSource][C++] Eplith: Un nouveau langage de programmation
    Par Quent42340 dans le forum Mon programme
    Réponses: 2
    Dernier message: 02/06/2012, 22h32
  3. Choix d'un nouveau langage de programmation
    Par ProgVal dans le forum Langages de programmation
    Réponses: 9
    Dernier message: 09/01/2010, 15h20
  4. Comment rajouter un nouveau langage de programmation ?
    Par Acropole dans le forum Eclipse
    Réponses: 2
    Dernier message: 12/11/2009, 15h40
  5. Nouveau langage de programmation : le langage G
    Par G-FACTION dans le forum Autres langages
    Réponses: 10
    Dernier message: 19/07/2009, 19h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo