Обновить
0
0.1

Пользователь

Отправить сообщение

Да, я считаю, что программист должен напрягаться больше конечного пользователя. Если в функции аргументом указан тип 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. Но я не пишу, что это "убогий" язык;)

Заголовочек поправьте. Архитектура не соответствует;)

Информация

В рейтинге
3 532-й
Зарегистрирован
Активность