Сообщение Re[10]: Rust взлетает? от 10.12.2019 15:16
Изменено 10.12.2019 15:20 so5team
Re[10]: Rust взлетает?
Здравствуйте, kaa.python, Вы писали:
S>>Так вопрос как раз в том, чтобы сразу погрузиться в код, который считается хорошим примером Go-шного кода, а не рыскать по непонятно чему.
KP>Как-то я смотрел реализацию Raft в Etcd, на мой взгляд довольно хорошее качество у проекта в целом.
Подтверждает старое впечатление о том, что Go -- это для терпеливых людей, которым думать особо некогда, бо код нужно клепать:
отсюда, причем не похоже, чтобы это было сгенерировано автоматически, там вначале файла много комментариев.
За счет сборки мусора и лаконичного синтаксиса, конечно, получается компактнее, чем на Cи или "Си с классами". Но если сравнивать с Rust или D, то как-то уныло получается, имхо.
S>>Так вопрос как раз в том, чтобы сразу погрузиться в код, который считается хорошим примером Go-шного кода, а не рыскать по непонятно чему.
KP>Как-то я смотрел реализацию Raft в Etcd, на мой взгляд довольно хорошее качество у проекта в целом.
Подтверждает старое впечатление о том, что Go -- это для терпеливых людей, которым думать особо некогда, бо код нужно клепать:
func (m *Message) MarshalTo(dAtA []byte) (int, error) {
var i int
_ = i
var l int
_ = l
dAtA[i] = 0x8
i++
i = encodeVarintRaft(dAtA, i, uint64(m.Type))
dAtA[i] = 0x10
i++
i = encodeVarintRaft(dAtA, i, uint64(m.To))
dAtA[i] = 0x18
i++
i = encodeVarintRaft(dAtA, i, uint64(m.From))
dAtA[i] = 0x20
i++
i = encodeVarintRaft(dAtA, i, uint64(m.Term))
dAtA[i] = 0x28
i++
i = encodeVarintRaft(dAtA, i, uint64(m.LogTerm))
dAtA[i] = 0x30
i++
i = encodeVarintRaft(dAtA, i, uint64(m.Index))
if len(m.Entries) > 0 {
for _, msg := range m.Entries {
dAtA[i] = 0x3a
i++
i = encodeVarintRaft(dAtA, i, uint64(msg.Size()))
n, err := msg.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
i += n
}
}
dAtA[i] = 0x40
i++
i = encodeVarintRaft(dAtA, i, uint64(m.Commit))
dAtA[i] = 0x4a
i++
i = encodeVarintRaft(dAtA, i, uint64(m.Snapshot.Size()))
n3, err := m.Snapshot.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
i += n3
dAtA[i] = 0x50
i++
if m.Reject {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i++
dAtA[i] = 0x58
i++
i = encodeVarintRaft(dAtA, i, uint64(m.RejectHint))
if m.Context != nil {
dAtA[i] = 0x62
i++
i = encodeVarintRaft(dAtA, i, uint64(len(m.Context)))
i += copy(dAtA[i:], m.Context)
}
if m.XXX_unrecognized != nil {
i += copy(dAtA[i:], m.XXX_unrecognized)
}
return i, nil
}
отсюда, причем не похоже, чтобы это было сгенерировано автоматически, там вначале файла много комментариев.
За счет сборки мусора и лаконичного синтаксиса, конечно, получается компактнее, чем на Cи или "Си с классами". Но если сравнивать с Rust или D, то как-то уныло получается, имхо.
Re[10]: Rust взлетает?
Здравствуйте, kaa.python, Вы писали:
S>>Так вопрос как раз в том, чтобы сразу погрузиться в код, который считается хорошим примером Go-шного кода, а не рыскать по непонятно чему.
KP>Как-то я смотрел реализацию Raft в Etcd, на мой взгляд довольно хорошее качество у проекта в целом.
Упс. Ошибочка. Приведенный в первой версии ответа пример оказался сгенерирован
S>>Так вопрос как раз в том, чтобы сразу погрузиться в код, который считается хорошим примером Go-шного кода, а не рыскать по непонятно чему.
KP>Как-то я смотрел реализацию Raft в Etcd, на мой взгляд довольно хорошее качество у проекта в целом.
Упс. Ошибочка. Приведенный в первой версии ответа пример оказался сгенерирован