Kenapa saya tidak suka pergi

Anda harus menggunakan Go di pekerjaan Anda saat ini. Saya menjadi akrab dengan bahasa ini. Saya tidak suka dia, dan saya bingung dengan popularitasnya.

Desain ergonomis

Tidak pernah bertemu bahasa yang secara terbuka menentang kenyamanan pengembang. Misalnya, Rob Pike telah berulang kali dan secara terbuka memusuhi setiap diskusi tentang penyorotan sintaks di Go Playground . Menanggapi pertanyaan pengguna yang beralasan wajar, balasan publiknya mencerminkan pengabaian dan rasa tidak hormat:

Gofmt ditulis secara khusus untuk mengurangi jumlah diskusi yang tidak berarti tentang pemformatan kode, yang bekerja sangat baik. Sayangnya, ini tidak mempengaruhi jumlah diskusi yang tidak bermakna tentang penyorotan sintaks atau, seperti yang saya lebih suka menyebutnya, spitzensparken blinkelichtzen.

Dan lagi di cabang Go-Nuts 2012 :

Menyoroti sintaks - untuk anak kecil. Sebagai seorang anak, saya diajarkan aritmatika pada tongkat berwarna . Sekarang saya sudah dewasa dan menggunakan angka hitam dan putih.

Jelas, dari kenalan Rob, tidak ada yang menderita sinestesia, disleksia, atau penglihatan yang buruk. Karena posisinya, situs web Go resmi dan dokumentasi masih tanpa penyorotan sintaksis.

Tim pengembangan Go tidak terbatas pada Pike, tetapi sisanya sangat mendukung sikapnya terhadap ergonomi. Dalam diskusi tentang jenis serikat / jumlah , ianlancetaylor menolak permintaan yang secara khusus mendefinisikan keunggulan ergonomi sebagai terlalu kecil dan tidak layak diperhatikan:

Ini telah dibahas beberapa kali di masa lalu, termasuk sebelum rilis terbuka. Kemudian kami sampai pada kesimpulan bahwa jumlah jenis tidak terlalu memperluas jenis antarmuka. Jika Anda melihat, pada akhirnya semuanya bermuara pada fakta bahwa kompiler memeriksa bahwa Anda telah mengisi semua kasus perpindahan jenis. Ini adalah keuntungan yang cukup kecil untuk mengubah bahasa.

Sikap ini bertentangan dengan jenis serikat dalam bahasa lain. Pada tahun 2000, JWZ mengkritik Jawa:

, 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/id434446/


All Articles