Por que eu não gosto de ir

Você precisa usar o Go no seu trabalho atual. Eu me familiarizei com esse idioma. Eu não gosto dele, e estou intrigado com sua popularidade.

Design ergonômico

Nunca conheci um idioma tão oposto à conveniência do desenvolvedor. Por exemplo, Rob Pike tem sido repetida e abertamente hostil a qualquer discussão sobre destaque de sintaxe no Go Playground . Em resposta a perguntas do usuário que eram razoavelmente redigidas, suas respostas públicas refletiram negligência e desrespeito:

O Gofmt foi escrito especificamente para reduzir o número de discussões sem sentido sobre formatação de código, que funcionou muito bem. Infelizmente, isso não afetou o número de discussões sem sentido sobre o destaque da sintaxe ou, como eu prefiro chamá-lo, spitzensparken blinkelichtzen.

E novamente na filial Go-Nuts de 2012 :

Destaque de sintaxe - para os mais pequenos. Quando criança, aprendi aritmética em paus coloridos . Agora eu cresci e uso números em preto e branco.

Claramente, dos conhecidos de Rob, ninguém sofre de sinestesia, dislexia ou visão deficiente. Devido à sua posição, o site e a documentação oficiais do Go ainda não possuem destaque de sintaxe.

A equipe de desenvolvimento da Go não se limita a Pike, mas o restante apóia fortemente sua atitude em relação à ergonomia. Em uma discussão sobre tipos de união / soma , ianlancetaylor rejeitou uma solicitação que definia especificamente a vantagem da ergonomia como sendo muito insignificante e não digna de atenção:

Isso foi discutido várias vezes no passado, inclusive antes do lançamento aberto. Então chegamos à conclusão de que os tipos de soma não estendem particularmente os tipos de interface. Se você observar, no final, tudo se resume ao fato de o compilador verificar se você preencheu todos os casos de alternância de tipos. Essa é uma vantagem muito pequena de mudar o idioma.

Essa atitude está em desacordo com os tipos de união em outros idiomas. Em 2000, a JWZ criticou o 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/pt434446/


All Articles