Forwarded from Игорь Кочетков
Кстати, о “пропаганде среди несовершеннолетних”. В 2013 г., когда был принят тот самый федеральный закон, только 10% россиян/ок в возрасте 18-25 лет были против запрета “пропаганды гомосексуализма”
В 2018 г. уже 50% 18-25-летних считали, что никакой “пропаганды нетрадиционных сексуальных отношений” не существуют, а ЛГБТ-активисты/ки не преследуют никаких деструктивных целей. В 2020 г. таких было уже 63%
Это данные ВЦИОМ, если что.
Левада-центр говорит нам, что в 2013 г. среди молодежи толерантность была “выражена слабее, чем гомофобия”. Точных данных о распределениях по возрастным группам они тогда не публиковали, к сожалению.
Но к 2021 г. (на самом деле - раньше) картина изменилась на противоположную. 53% респондентов 18-24 лет были согласны с тем, что взрослые люди имеют право по взаимному согласию вступать в отношения с людьми того же пола (по всей выборке - только 25%).
55% - считают что геи и лесбиянки должны иметь равные права с остальными гражданами (по всей выборке - только 39%).
Для понимания. Те, кому сейчас 18-25 лет это те самые несовершеннолетние, которых в 2013 г. мизулины и милоновы обещали от нас “защитить”
Можете интерпретировать эти данные как хотите. Но лично я скажу “Хорошая работа!” себе и многим моим коллегам, а также “Ваше дело безнадежно” - тем, кто сегодня снова пытается нам что-то запретить
В 2018 г. уже 50% 18-25-летних считали, что никакой “пропаганды нетрадиционных сексуальных отношений” не существуют, а ЛГБТ-активисты/ки не преследуют никаких деструктивных целей. В 2020 г. таких было уже 63%
Это данные ВЦИОМ, если что.
Левада-центр говорит нам, что в 2013 г. среди молодежи толерантность была “выражена слабее, чем гомофобия”. Точных данных о распределениях по возрастным группам они тогда не публиковали, к сожалению.
Но к 2021 г. (на самом деле - раньше) картина изменилась на противоположную. 53% респондентов 18-24 лет были согласны с тем, что взрослые люди имеют право по взаимному согласию вступать в отношения с людьми того же пола (по всей выборке - только 25%).
55% - считают что геи и лесбиянки должны иметь равные права с остальными гражданами (по всей выборке - только 39%).
Для понимания. Те, кому сейчас 18-25 лет это те самые несовершеннолетние, которых в 2013 г. мизулины и милоновы обещали от нас “защитить”
Можете интерпретировать эти данные как хотите. Но лично я скажу “Хорошая работа!” себе и многим моим коллегам, а также “Ваше дело безнадежно” - тем, кто сегодня снова пытается нам что-то запретить
❤15🔥2💩2👍1
Санечка Ъысь
Photo
Telegram
I’m CEO, beach
Коллеги, всем приятных выходных. Напоминаю, что наша компания максимально "friendly", мы стараемся не тревожить друг друга в уик-энд. Считайте, что работа в выходные у нас официально под запретом. Скидывайте сюда фотки, как отдыхаете - будем по-хорошему завидовать…
🔥2👍1
#prog #rust #article
Predrag Gruevski написал интересную серию статей и намеревается её продолжить. Материал базируется на задаче 24 дня из Advent of Code 2021. В этой задаче описывается очень простой процессор с небольшим набором команд — без ветвлений и переходов. Целью же задачи является найти наибольший вход (четырнадцатизначное число), для которого приведённая программа, будучи выполненной на этом входе, оставляет ноль в одном из регистров. Не смотря на то, что интерпретатор для такого процессора написать весьма несложно, большое пространство для поиска не даёт шансов использовать брутфорс — слишком уж медленно это будет работать.
На примере этого процессора автор рассказывает в доступной форме об оптимизациях, которые используются в реальных компиляторах. В настоящий момент написано три части, но автор планирует написать ещё. А, и автор для иллюстрации использует Rust.
Compiler Adventures, part 1: No-op Instructions — dead code elimination
Compiler Adventures, part 2: Constant Propagation
Compiler Adventures, part 3: Value Numbering
Ссылки на новые части я буду оставлять тут.
Predrag Gruevski написал интересную серию статей и намеревается её продолжить. Материал базируется на задаче 24 дня из Advent of Code 2021. В этой задаче описывается очень простой процессор с небольшим набором команд — без ветвлений и переходов. Целью же задачи является найти наибольший вход (четырнадцатизначное число), для которого приведённая программа, будучи выполненной на этом входе, оставляет ноль в одном из регистров. Не смотря на то, что интерпретатор для такого процессора написать весьма несложно, большое пространство для поиска не даёт шансов использовать брутфорс — слишком уж медленно это будет работать.
На примере этого процессора автор рассказывает в доступной форме об оптимизациях, которые используются в реальных компиляторах. В настоящий момент написано три части, но автор планирует написать ещё. А, и автор для иллюстрации использует Rust.
Compiler Adventures, part 1: No-op Instructions — dead code elimination
Compiler Adventures, part 2: Constant Propagation
Compiler Adventures, part 3: Value Numbering
Ссылки на новые части я буду оставлять тут.
Medium
Predrag Gruevski – Medium
Read writing from Predrag Gruevski on Medium. Principal Eng @Kensho // Querying (almost) everything // GraphQL compiler author // @MIT alum // rocket nerd, hockey player, not from around here 🇲🇰.
🔥4👍1
Блог*
#prog #rust #article Predrag Gruevski написал интересную серию статей и намеревается её продолжить. Материал базируется на задаче 24 дня из Advent of Code 2021. В этой задаче описывается очень простой процессор с небольшим набором команд — без ветвлений и…
#prog #rust #article
...Но, в принципе, эту задачу можно решить и брутфорсом, если только сделать сам брутфорс немного умнее.
Brute-forcing 22 trillion parameters
...Overall, we see a 26,880,685× improvement from the initial brute-force solution, without loss of generality!
...Но, в принципе, эту задачу можно решить и брутфорсом, если только сделать сам брутфорс немного умнее.
Brute-forcing 22 trillion parameters
...Overall, we see a 26,880,685× improvement from the initial brute-force solution, without loss of generality!
— ...И вообще, пока ты живёшь один, ты уже давно мог бы свою комнату превратить в конфетку.
— Но я не хочу, чтобы моя комната липла к рукам!
— Но я не хочу, чтобы моя комната липла к рукам!
😁8👍1
Forwarded from Чудин белоглазый wrote
Самая противная иллюзия, которую положили мне в голову в детстве, заключается в том, что если кто-то что-то не понимает, значит ты недостаточно хорошо объяснил.
К себе, понятно, этот критерий ни родители, ни учителя никогда не применяли. А я поверил и взял его, как базовый. И вот только пару лет назад начало доходить, что нет, это работает не так. И если человек чего-то не понимает, настойчиво и упорно, то он и не хочет понимать. И никогда не захочет.
И действовать исходя из этого знания куда полезнее, чем ломиться в закрытые ворота человека, который не намерен уточнять свои знания об окружающем мире.
К себе, понятно, этот критерий ни родители, ни учителя никогда не применяли. А я поверил и взял его, как базовый. И вот только пару лет назад начало доходить, что нет, это работает не так. И если человек чего-то не понимает, настойчиво и упорно, то он и не хочет понимать. И никогда не захочет.
И действовать исходя из этого знания куда полезнее, чем ломиться в закрытые ворота человека, который не намерен уточнять свои знания об окружающем мире.
🕊14❤9🐳2🌭2💩1🌚1
#prog #rust
Кажется, что такой код должен работать:
Как именно решать эту проблему — непонятно, равно как и решить, как именно нужно запилить vtable так, чтобы они работали с такими кастами и при этом не жрали кучу места. Отдельной пикантности добавляет тот факт, что unsize-касты сырых указателей уже есть и разрешены в safe-коде.
А что делать, пока нужный функционал не реализовали нативно? Явно внедрить метод для апкаста:
Подробности.
Кажется, что такой код должен работать:
trait Super {}
trait Sub: Super {}
fn upcast(x: &dyn Sub) -> &dyn Super {
x as &dyn Super
}
Но нет, он валится с ошибкой. Такой, казалось бы, очевидный функционал был описан в RFC от 2013 (!) года и при этом до сих пор не реализован. Почему? Ну, его начали было реализовывать — и натолкнулись на непонятки с кастами сырых указателей на трейт-объекты: просто добавление функционала апкаста может вызвать UB в safe Rust, поскольку этот апкаст должен каким-то образом поменять vtable-составляющую, а эта часть сырого указателя может быть просто мусором.Как именно решать эту проблему — непонятно, равно как и решить, как именно нужно запилить vtable так, чтобы они работали с такими кастами и при этом не жрали кучу места. Отдельной пикантности добавляет тот факт, что unsize-касты сырых указателей уже есть и разрешены в safe-коде.
А что делать, пока нужный функционал не реализовали нативно? Явно внедрить метод для апкаста:
trait Super {}
trait AsSuper {
fn as_super(&self) -> &dyn Super;
}
trait Sub: Super + AsSuper {}
fn upcast(x: &dyn Sub) -> &dyn Super {
x.as_super()
}
Да, при это добавляется неприятный бойлерплейт видаimpl AsSuper for Type {
fn as_super(&self) -> &dyn Super {
self
}
}
, но так оно хотя бы работает. Аналогично можно сделать методы для каста между уникальными ссылками и умными указателями. И нет, blanket impl тут сделать нельзя, потому что тип для избежания каста между трейт-объектами должен быть Sized
, что ломает весь смысл в данной конструкции.Подробности.
GitHub
Objects should be upcastable to supertraits · Issue #2765 · rust-lang/rfcs
trait T { fn foo(@mut self); } struct S { unused: int } impl T for S { fn foo(@mut self) { } } fn main() { let s = @S { unused: 0 }; let s2 = s as @T; let s3 = s2 as @T; } error: failed to find an ...
👍5
#prog #rust #rustlib
rustversion
This crate provides macros for conditional compilation according to rustc compiler version, analogous to
rustversion
This crate provides macros for conditional compilation according to rustc compiler version, analogous to
#[cfg(...)]
and #[cfg_attr(...)]
.