Warum ich nicht gerne gehe

Sie müssen Go bei Ihrem aktuellen Job verwenden. Ich habe diese Sprache gut kennengelernt. Ich mag ihn nicht und bin verwirrt über seine Popularität.

Ergonomisches Design

Ich habe noch nie eine Sprache getroffen, die so offen gegen die Bequemlichkeit von Entwicklern war. Zum Beispiel war Rob Pike wiederholt und offen gegen jede Diskussion über Syntaxhervorhebungen auf dem Go Playground . Als Antwort auf Benutzerfragen, die vernünftig formuliert waren, spiegelten seine öffentlichen Antworten Vernachlässigung und Respektlosigkeit wider:

Gofmt wurde speziell geschrieben, um die Anzahl bedeutungsloser Diskussionen über die Code-Formatierung zu reduzieren, was sehr gut funktioniert hat. Leider hatte dies keinen Einfluss auf die Anzahl bedeutungsloser Diskussionen über Syntaxhervorhebungen oder, wie ich es lieber nenne, spitzensparken blinkelichtzen.

Und wieder in der Go-Nuts- Filiale 2012:

Syntaxhervorhebung - für die Kleinen. Als Kind wurde mir das Rechnen auf farbigen Stöcken beigebracht. Jetzt bin ich erwachsen und benutze Schwarz-Weiß-Zahlen.

Von Robs Bekannten leidet offensichtlich niemand an Synästhesie, Legasthenie oder Sehstörungen. Aufgrund seiner Position sind die offizielle Go-Website und die Dokumentation immer noch ohne Syntaxhervorhebung.

Das Go-Entwicklungsteam ist nicht auf Pike beschränkt, der Rest unterstützt jedoch nachdrücklich seine Einstellung zur Ergonomie. In einer Diskussion über Gewerkschafts- / Summentypen lehnte ianlancetaylor eine Anfrage ab, in der der Vorteil der Ergonomie als zu unbedeutend und nicht beachtlich definiert wurde:

Dies wurde in der Vergangenheit mehrmals diskutiert, auch vor der offenen Veröffentlichung. Dann kamen wir zu dem Schluss, dass Summentypen die Schnittstellentypen nicht besonders erweitern. Wenn Sie schauen, kommt es letztendlich darauf an, dass der Compiler überprüft, ob Sie alle Fälle von Typwechsel ausgefüllt haben. Dies ist ein ziemlich kleiner Vorteil, um die Sprache zu ändern.

Diese Haltung steht im Widerspruch zu Gewerkschaftstypen in anderen Sprachen. Im Jahr 2000 kritisierte JWZ 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/de434446/


All Articles