• [^] # Re: go 2.0

    Posté par (site web personnel) . En réponse au journal Pourquoi la recherche en langages de programmation ?. Évalué à 3. Dernière modification le 20 octobre 2017 à 10:18.

    il est vrai que le langage des modules et foncteurs est assez verbeux.

    Attention, la concision est souvent l'ennemi de la clarté. VHDL et ADA sont très verbeux mais très lisible. Je pense que l'abus de symbole est horrible pour la lecture. L'exemple typique sont les regexp Perl qui sont un cauchemar à lire, mais pas à écrire.
    Je me demande même si les symboles ne prennent pas "plus de place" dans la tête car il ne se prononce pas, sauf les symboles de base (+).

    module type M = sig
    type t
    val v : t
    end

    Pour moi, ce truc est bizarre car 2 mots clef se suivent ce qui est très rare ("Module type"), ensuite je lit "M = sig", sig étant un mot clef et ne m'indique pas du tout le début d'une liste qui se fait d'habitude avec des '(' ou des '{' ou des '[' voir des '<'. Ensuite, il y a le ':' qui alourdit la notation, alors que ocaml est ultra light d'habitude (pas de ',', ni de '(').

    En go, cela donnerait :

    type M module {
    type t
    var v t
    }

    (les types sont des valeurs comme les autres et vivent dans le même monde),

    C'est génial ça, il existe un autre langage où c'est possible, ou c'est impossible à compiler ?

    module type Showable = sig ...

    Tu te rends compte qu'en go, cette fonctionnalité se fait simplement avec une fonction String() dans un objet ? Elle est reconnu comme présent dans la bonne interface, et le tour est joué.

    type Stringer interface {
    String() string
    } // est définit dans le code du package fmt

    Les deux syntaxes sont assez proches : ce sont les mots-clés qui changent. Cela me semble utile, voire conseiller au niveau du principe de moindre surprise,

    Non, elles ne sont pas proche justement, ni symétrique.

    il serait surprenant que la syntaxe ne le signifie pas par un moyen quelconque : autrement on risquerait de confondre les deux notions.

    C'est le but. Coq lui même ne fait pas la différence entre type et valeur, et c'est plus simple.

    "La première sécurité est la liberté"