¿Por qué no me gusta ir?

Tienes que usar Go en tu trabajo actual. Conocí bien este idioma. No me gusta y me sorprende su popularidad.

Diseño ergonómico

Nunca conocí un lenguaje tan abiertamente opuesto a la conveniencia del desarrollador. Por ejemplo, Rob Pike ha sido hostil repetida y abiertamente a cualquier discusión sobre resaltado de sintaxis en Go Playground . En respuesta a las preguntas de los usuarios que fueron redactadas razonablemente, sus respuestas públicas reflejaron negligencia y falta de respeto:

Gofmt fue escrito específicamente para reducir la cantidad de discusiones sin sentido sobre el formato de código, que funcionó muy bien. Desafortunadamente, esto no afectó la cantidad de discusiones sin sentido sobre el resaltado de sintaxis o, como prefiero llamarlo, spitzensparken blinkelichtzen.

Y nuevamente en la rama de Go-Nuts 2012 :

Resaltado de sintaxis: para los más pequeños. Cuando era niño, me enseñaron aritmética en palos de colores . Ahora he crecido y uso números en blanco y negro.

Claramente, de los conocidos de Rob, nadie sufre de sinestesia, dislexia o mala visión. Debido a su posición, el sitio web oficial de Go y la documentación aún no tienen resaltado de sintaxis.

El equipo de desarrollo de Go no se limita a Pike, sino que el resto apoya firmemente su actitud hacia la ergonomía. En una discusión sobre los tipos de unión / suma , ianlancetaylor rechazó una solicitud que define específicamente la ventaja de la ergonomía como demasiado insignificante y no merece atención:

Esto se ha discutido varias veces en el pasado, incluso antes del lanzamiento abierto. Luego llegamos a la conclusión de que los tipos de suma no extienden particularmente los tipos de interfaz. Si observa, al final todo se reduce al hecho de que el compilador verifica que haya completado todos los casos de cambio de tipo. Esta es una ventaja bastante pequeña para cambiar el idioma.

Esta actitud está en desacuerdo con los tipos de unión en otros idiomas. En 2000, JWZ criticó a 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/es434446/


All Articles