Сейчас просто все смешалось: тяжелое наследие прошлого, текущий мейнстрим и ростки будущего. Насколько эти ростки жизнеспособны — покажет история, но кто-то уже сегодня их принял и к ним примкнул.
Много чего покажет. Особенно если есть возможность прикинуть, какой процент покупателей вообще заморачивается с переустановкой (теряя при этом софт от производителя и некоторые гарантии).
Я, когда покупал себе ноутбук, не смог найти подходящую мне модель без предустановленной винды. Но это частный пример, как и ваше субъективное мнение, что DOS стали ставить чаще. Потому я и спрашиваю, владеет ли кто-нибудь статистикой?
Не, ну можно, конечно, тихонечко отсидеться в уголочке. Только когда придут за тобой, а рано или поздно это вполне может случиться, за тебя заступаться будет уже некому.
Все-таки данная заметка — не про UB, а про неудобства с использованием null и "падения" программ из-за него. Думаю здесь уместнее было бы сравнение с Java (или с другим языком, имеющим null), а не с указателями C/C++.
Тут еще нужно понимать, что есть обращения, а есть определения, и это не одно и то же. Ну хочет человек, чтобы его называли Горшком, я бы его называл так, проблем тут не вижу. Проблемы начинаются, если он требует считать, что он является горшком, а не человеком.
fn read_keys() -> Packet {
let device = unsafe { hw::Peripherals::steal() };
#[cfg(any(feature = "keytron", feature = "keytron-dk"))]
let u = {
let p0 = device.P0.in_.read().bits();
let p1 = device.P1.in_.read().bits();
//invert because keys are active low
gpio::P0::pack(!p0) | gpio::P1::pack(!p1)
};
#[cfg(feature = "splitapple")]
let u = gpio::splitapple::read_keys();
Packet(u)
}
И как автор решил эту проблему в Zig:
Для условной компиляции я переместил специфические для аппаратного обеспечения детали в отдельные файлы.
Что помешало и в Rust разместить специфические реализации в разных модулях?
Нет, он говорит нам, что нужно больше инженеров. Особенно био.
Так и есть, в начале тяжело. Но через полгода-год практики уже перестаешь замечать, что пишешь на языке с BC, а не с GC.
Сейчас просто все смешалось: тяжелое наследие прошлого, текущий мейнстрим и ростки будущего. Насколько эти ростки жизнеспособны — покажет история, но кто-то уже сегодня их принял и к ним примкнул.
С криптовалютами можно и без чиновников.
Много чего покажет. Особенно если есть возможность прикинуть, какой процент покупателей вообще заморачивается с переустановкой (теряя при этом софт от производителя и некоторые гарантии).
Я, когда покупал себе ноутбук, не смог найти подходящую мне модель без предустановленной винды. Но это частный пример, как и ваше субъективное мнение, что DOS стали ставить чаще. Потому я и спрашиваю, владеет ли кто-нибудь статистикой?
А есть статистика, сколько продается ноутбуков и PC c предустановленными Linux-дистрибутивами? А сколько с Windows?
Мне недавно позвонили мошенники и назвали мое ФИО, дату рождения и текущий счет на карте в Альфа-Банке. При этом я мобильным приложением не пользуюсь.
Так и не понял, почему он был флибустьером, а не обычным пиратом..
Зато теперь понятно, чем можно заняться в тюрьме.
Не, ну можно, конечно, тихонечко отсидеться в уголочке. Только когда придут за тобой, а рано или поздно это вполне может случиться, за тебя заступаться будет уже некому.
Все-таки данная заметка — не про UB, а про неудобства с использованием null и "падения" программ из-за него. Думаю здесь уместнее было бы сравнение с Java (или с другим языком, имеющим null), а не с указателями C/C++.
Вот пример, воспроизводящий упомянутую вами проблему (использование после освобождения):
Запустить
И это — баг в компиляторе: https://github.com/rust-lang/rust/issues/25860
Да: https://doc.rust-lang.org/reference/lifetime-elision.html#lifetime-elision-in-functions
А как именно они думают? Или они не думают, а тупо исправляют баги, когда те проявят себя?
В данном случае лайфтаймы проставлять не нужно.
Это не единственный баг в компиляторе Rust: https://github.com/rust-lang/rust/labels/I-unsound%20%F0%9F%92%A5
Тут еще нужно понимать, что есть обращения, а есть определения, и это не одно и то же. Ну хочет человек, чтобы его называли Горшком, я бы его называл так, проблем тут не вижу. Проблемы начинаются, если он требует считать, что он является горшком, а не человеком.
В Rust своя собственная стандартная библиотека линкуется статически.
Ну вот зачем так писать:
И как автор решил эту проблему в Zig:
Что помешало и в Rust разместить специфические реализации в разных модулях?