Goが好きではない理由

現在の仕事でGoを使用する必要があります。 私はこの言語に精通しました。 私は彼が好きではなく、彼の人気に戸惑っています。

人間工学設計

開発者の利便性にオープンに反対する言語を見たことがありません。 たとえば、Rob PikeはGo Playgroundでの構文の強調表示に関する議論に対して、繰り返しオープンに敵対しています。 合理的に表現されたユーザーの質問に応えて、彼の公開された回答は、無視と無礼を反映しています。

Gofmtは、コードのフォーマットに関する無意味な議論の数を減らすために特別に書かれたもので、非常にうまく機能しました。 残念ながら、これはシンタックスハイライトに関する無意味な議論の数や、私がそれを呼ぶことを好むスピッテンスパークンブリンクエリクツェンには影響しませんでした。

そして再び2012年のGo-Nutsブランチで:

構文の強調表示-小さなお子様向け。 子供の頃、私は色のついた棒で算術を教えられました。 今、私は成長し、黒と白の数字を使用しています。

明らかに、ロブの知人のうち、誰も共感覚、失読症、または視力低下に苦しんでいません。 その位置のため、公式のGoサイトとドキュメントには、まだ構文の強調表示がありません。

Go開発チームはPikeに限定されませんが、残りは人間工学に対する姿勢を強く支持します。 組合/和の種類の議論において 、ianlancetaylorは、人間工学の利点があまりにも取るに足りず、注目に値しないとして明確に定義している要求を拒否しました。

これは、オープンリリース前を含め、過去数回議論されてきました。 次に、合計型はインターフェイス型を特に拡張しないという結論に達しました。 見ると、最終的には、すべてのタイプスイッチングのケースに記入したことをコンパイラがチェックするという事実に帰着します。 これは、言語を変更するための非常に小さな利点です。

この態度は、他の言語のユニオン型と対立しています。 2000年、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/J434446/


All Articles