Pourquoi je n'aime pas y aller

Vous devez utiliser Go dans votre travail actuel. Je me suis familiarisé avec cette langue. Je ne l'aime pas et je suis perplexe devant sa popularité.

Conception ergonomique

Jamais rencontré un langage si ouvertement opposé à la commodité des développeurs. Par exemple, Rob Pike a été ouvertement et à plusieurs reprises hostile à toute discussion sur la mise en évidence de la syntaxe sur le Go Playground . En réponse aux questions des utilisateurs qui étaient raisonnablement formulées, ses réponses publiques reflétaient la négligence et le manque de respect:

Gofmt a été écrit spécifiquement pour réduire le nombre de discussions inutiles sur le formatage du code, ce qui fonctionnait très bien. Malheureusement, cela n'a pas affecté le nombre de discussions insignifiantes sur la mise en évidence de la syntaxe ou, comme je préfère l'appeler, spitzensparken blinkelichtzen.

Et encore une fois dans la branche Go-Nuts 2012 :

Mise en évidence de la syntaxe - pour les plus petits. Enfant, on m'a appris l'arithmétique sur des bâtons de couleur . Maintenant, j'ai grandi et j'utilise des chiffres en noir et blanc.

De toute évidence, parmi les connaissances de Rob, personne ne souffre de synesthésie, de dyslexie ou de mauvaise vision. En raison de sa position, le site Web officiel et la documentation de Go sont toujours sans coloration syntaxique.

L'équipe de développement Go ne se limite pas à Pike, mais les autres soutiennent fortement son attitude envers l'ergonomie. Dans une discussion sur les types d'union / somme , ianlancetaylor a rejeté une demande définissant spécifiquement l'avantage de l'ergonomie comme étant trop insignifiant et non digne d'attention:

Cela a été discuté à plusieurs reprises dans le passé, y compris avant la version ouverte. Nous sommes ensuite arrivés à la conclusion que les types de somme n'étendent pas particulièrement les types d'interface. Si vous regardez, au final, tout se résume au fait que le compilateur vérifie que vous avez rempli tous les cas de changement de type. C'est un assez petit avantage pour changer la langue.

Cette attitude est contraire aux types d'unions dans d'autres langues. En 2000, JWZ a critiqué Java:

, enum :keywords . (, , «`enumeration value x', switch»).

Java , Java .  — , Rust, Scala, Elixir , Go, C — , . , , Go .


, . .

, Go . , . Go « » « », .

, « ». , , , , , . Go , , Java 1.4.

— . , , , . , Go.

Google, «» «» .


go get . — , Go .

Go, , , . C Autotools — , . , 21 .

GOPATH


. vendor , , «» «» .

, Go « » .

Go


Go , , ( ; Go ) error , nil « ».

, Go. , , . , : , , error - , , — .

Go , - :

a, err := fallibleOperationA()
if err != nil {
    return nil, err
}

b, err := fallibleOperationB(a)
if err != nil {
    return nil, err
}

return b, nil



a = fallibleOperationA()
b = fallibleOperationB(a)
return b



return fallibleOperationA()
    .then(a => fallibleOperationB(a))
    .result()

.

, ( , ). . , . :

a, err := fallibleOperationA()
if err != nil {
    return nil, err
}

if err := fallibleOperationB(a); err != nil {
    return nil, err
}

c, err := fallibleOperationC(a)
if err != nil {
    return nil, err
}

fallibleOperationD(a, c)

return fallibleOperationE()

- .

Source: https://habr.com/ru/post/fr434446/


All Articles