Да, я считаю, что программист должен напрягаться больше конечного пользователя. Если в функции аргументом указан тип A, то и переменную необходимо передавать этого типа, а не другого. Если в документации нет, достаточно посмотреть на константы и объявленные переменные. Что касается "нормальной" документации, то это ошибки разработчика библиотеки, а не какого-то конкретного ЯП. Во поводу "тайпкастить" (ну и словечко) ошибки: посмотрите например на функционал errors.Is и errors.As. Видно, что вы даже не пытались разобраться в теме. Ну и на последок:
fn load_block_constants(&mut self, hash_header: &[u8; 72], target: &[u64; 4]) {
let mut hash_header_gpu = self._module.get_global::<[u8; 72]>(&CString::new("hash_header").unwrap())
.map_err(|e| {
error!("Failed to get global 'hash_header': {}", e);
Error::from(e.to_string())
}).unwrap();
hash_header_gpu.copy_from(hash_header).map_err(|e| {
error!("Failed to copy hash_header: {}", e);
Error::from(e.to_string())
}).unwrap();
let mut target_gpu = self._module.get_global::<[u64; 4]>(&CString::new("target").unwrap())
.map_err(|e| {
error!("Failed to get global 'target': {}", e);
Error::from(e.to_string())
}).unwrap();
target_gpu.copy_from(target).map_err(|e| {
error!("Failed to copy target: {}", e);
Error::from(e.to_string())
}).unwrap();
}
Начнем с того, что автор подменяет понятия. Ребята, вы не "пользователи" библиотеки, вы программисты. ИМХО: Да, надо просматривать чужие пакеты/библиотеки, что бы в продакшн не было сюрпризов. Что касается enum, передача int вместо константы, это ошибка программиста, а не пользователя. Далее не понятно утверждение автора о том, что в Go нет типизированных ошибок. Судя по коду проверки, автор даже не пытался разобраться. Во многих случаях автор статьи указывает на проблемы с копипастой, а это уже человеческий фактор, а не ошибки ЯП. Так же автор возмущается тем, что в Go нельзя использовать синтаксический сахар и приходится проверять переменную ошибки, в тоже время пишет, что для одного канала необходимо возвращать две переменных. Вся статья, по сути, основана на привычках автора, а не особенностях языка. А, как говорится, на вкус и цвет, фломастеры разные. Есть в Go моменты, которые и мне не нравятся. Например, серилизация структур из-за выравнивания в памяти. Но утверждать, что Go не подходит для больших проектов... Вы все дружно пользуетесь докерами, кубиками и т.д. Что-то пока не видел потенциальной замены на Rust
Особенно когда автор и, судя по всему, большинство комментаторов не умеют в Go;) ИМХО: статья о том, что прежде чем браться за работу, нужно изучать матчасть. Я, например, не умею Rust, мне не понятен его синтаксис. Хотя приходилось пару раз править код на Rust и Elixir. Но я не пишу, что это "убогий" язык;)
Да, я считаю, что программист должен напрягаться больше конечного пользователя. Если в функции аргументом указан тип A, то и переменную необходимо передавать этого типа, а не другого. Если в документации нет, достаточно посмотреть на константы и объявленные переменные. Что касается "нормальной" документации, то это ошибки разработчика библиотеки, а не какого-то конкретного ЯП. Во поводу "тайпкастить" (ну и словечко) ошибки: посмотрите например на функционал errors.Is и errors.As. Видно, что вы даже не пытались разобраться в теме. Ну и на последок:
Как тут кастуются ошибки?
Начнем с того, что автор подменяет понятия. Ребята, вы не "пользователи" библиотеки, вы программисты. ИМХО: Да, надо просматривать чужие пакеты/библиотеки, что бы в продакшн не было сюрпризов. Что касается enum, передача int вместо константы, это ошибка программиста, а не пользователя. Далее не понятно утверждение автора о том, что в Go нет типизированных ошибок. Судя по коду проверки, автор даже не пытался разобраться. Во многих случаях автор статьи указывает на проблемы с копипастой, а это уже человеческий фактор, а не ошибки ЯП. Так же автор возмущается тем, что в Go нельзя использовать синтаксический сахар и приходится проверять переменную ошибки, в тоже время пишет, что для одного канала необходимо возвращать две переменных. Вся статья, по сути, основана на привычках автора, а не особенностях языка. А, как говорится, на вкус и цвет, фломастеры разные. Есть в Go моменты, которые и мне не нравятся. Например, серилизация структур из-за выравнивания в памяти. Но утверждать, что Go не подходит для больших проектов... Вы все дружно пользуетесь докерами, кубиками и т.д. Что-то пока не видел потенциальной замены на Rust
Особенно когда автор и, судя по всему, большинство комментаторов не умеют в Go;) ИМХО: статья о том, что прежде чем браться за работу, нужно изучать матчасть. Я, например, не умею Rust, мне не понятен его синтаксис. Хотя приходилось пару раз править код на Rust и Elixir. Но я не пишу, что это "убогий" язык;)
Заголовочек поправьте. Архитектура не соответствует;)