Forwarded from Скучный секс-блог
Слон и его погонщик: как мы выносим моральные суждения
По книге Джонатана Хайдта The Righteous Mind
Человеческая мораль не рациональна, а интуитивна. Наш мозг выносит моральные оценки мгновенно, и лишь затем разум подбирает аргументы под готовый ответ, пишет исследователь Джонатан Хайдт в книге «Праведный ум».
История про курицу
Чтобы понаблюдать, как люди решают, что хорошо и что плохо, ученый предлагал им специально сочиненные шокирующие истории. Например:
Что вы об этом думаете? Плохо ли поступает мужчина?
Если плохо, то почему? Ведь никто не пострадал. Никто этого даже не видел.
Тем не менее, большинство скажет: так нельзя! А почему нельзя?
Студенты из продвинутого американского университета довольно быстро придумывают аргументы против секса с цыпленком. Или наоборот признают: «Ладно, он извращенец, но это его право». А вот люди попроще затрудняются с аргументами, но не отступают: «Вы что, сами не понимаете, что так с курицей не делают?!»
История про брата с сестрой
Что вы об этом думаете? Правильно ли они поступили?
Специально оговорено, что никому не причинен вред. Они взрослые. Предохранялись. Все по согласию. Оба довольны. Отношения не стали хуже. Никто не узнал. Но внутри нас что-то вопиет: это же, черт возьми, инцест!
Стремясь аргументировать свое осуждение, участники опроса нередко «изобретают жертву»: уверяют, что пострадавшие все-таки есть — скажем, сами герои историй. Если указать, что это противоречит условиям задачи, респондент обычно не сдается: «Я не могу объяснить, почему это плохо, но это плохо».
(Спойлер: потому что «моральные рецепторы» мозга не ограничиваются оценкой нанесенного вреда. Хайдт выделил еще пять критериев: справедливость, верность, свобода, авторитет и сакральная чистота. Если трахнуть куриную тушку, никто не пострадает, но будет нарушена «чистота» мироустройства.)
Слон идет, погонщик объясняет
Итак, моральные суждения мы выносим интуитивно, а рационализируем задним числом.
Человеческий мозг напоминает слона, на спине у которого сидит погонщик, сравнивает Хайдт. Погонщик — наш разум, а слон — остальные 99% ментальных процессов. Парадокс в том, что погонщик служит слону, а не слон погонщику.
В вопросах морали слон выбирает, куда ехать. А погонщик постфактум объясняет, почему «нам туда и надо».
Скучный секс-блог
По книге Джонатана Хайдта The Righteous Mind
Человеческая мораль не рациональна, а интуитивна. Наш мозг выносит моральные оценки мгновенно, и лишь затем разум подбирает аргументы под готовый ответ, пишет исследователь Джонатан Хайдт в книге «Праведный ум».
История про курицу
Чтобы понаблюдать, как люди решают, что хорошо и что плохо, ученый предлагал им специально сочиненные шокирующие истории. Например:
Некий мужчина раз в неделю идет в супермаркет и покупает курицу. Но прежде чем ее приготовить, он совершает с курицей половой акт. Потом готовит и съедает ее.
Что вы об этом думаете? Плохо ли поступает мужчина?
Если плохо, то почему? Ведь никто не пострадал. Никто этого даже не видел.
Тем не менее, большинство скажет: так нельзя! А почему нельзя?
Студенты из продвинутого американского университета довольно быстро придумывают аргументы против секса с цыпленком. Или наоборот признают: «Ладно, он извращенец, но это его право». А вот люди попроще затрудняются с аргументами, но не отступают: «Вы что, сами не понимаете, что так с курицей не делают?!»
История про брата с сестрой
Джули и Марк, брат и сестра, вместе путешествуют по Франции. Оба — студенты колледжа на каникулах. Однажды вечером они остановились в домике возле пляжа. И решили, что было бы интересно и приятно попробовать заняться любовью... Джули принимает противозачаточные таблетки, но Марк также использует презерватив для безопасности. Обоим понравилось, но они решили больше этого не повторять. Эта ночь осталась их личным секретом и сделала их ближе.
Что вы об этом думаете? Правильно ли они поступили?
Специально оговорено, что никому не причинен вред. Они взрослые. Предохранялись. Все по согласию. Оба довольны. Отношения не стали хуже. Никто не узнал. Но внутри нас что-то вопиет: это же, черт возьми, инцест!
Стремясь аргументировать свое осуждение, участники опроса нередко «изобретают жертву»: уверяют, что пострадавшие все-таки есть — скажем, сами герои историй. Если указать, что это противоречит условиям задачи, респондент обычно не сдается: «Я не могу объяснить, почему это плохо, но это плохо».
(Спойлер: потому что «моральные рецепторы» мозга не ограничиваются оценкой нанесенного вреда. Хайдт выделил еще пять критериев: справедливость, верность, свобода, авторитет и сакральная чистота. Если трахнуть куриную тушку, никто не пострадает, но будет нарушена «чистота» мироустройства.)
Слон идет, погонщик объясняет
Итак, моральные суждения мы выносим интуитивно, а рационализируем задним числом.
Человеческий мозг напоминает слона, на спине у которого сидит погонщик, сравнивает Хайдт. Погонщик — наш разум, а слон — остальные 99% ментальных процессов. Парадокс в том, что погонщик служит слону, а не слон погонщику.
В вопросах морали слон выбирает, куда ехать. А погонщик постфактум объясняет, почему «нам туда и надо».
Скучный секс-блог
👍10💩4🔥2👎1🤔1🤮1🤡1
> номинация "Лучший анонимный канал"
> требует личных данных для оформления заявки
https://mimp.mosreg.ru/pixel
🤡
> требует личных данных для оформления заявки
https://mimp.mosreg.ru/pixel
🤡
🤡21🌚3😁2
#prog #article
Fast Enough VMs in Fast Enough Time
Старая (2012 года) статья про применение RPython (языка реализации PyPy) к реализации VM для ЯП с семантикой слишком необычной, чтобы для него подходили существующие VM.
Чем привлекает RPython? Обещанием: напиши интепретатор для своего ЯП и получили JIT-компилятор бесплатно. Как это работает?
Во-первых, RPython, как можно догадаться по названию — подмножество Python, ограниченное достаточно, чтобы быть статически типизированным (с выводом типов btw) и потому гораздо более подходящим для статического анализа. Также RPython можно компилировать в C для получения бесплатного ускорения от существующих компиляторов.
Во-вторых, JIT-компиляция применяется не напрямую: ускорение происходит за счёт JIT-компиляции самого интепретатора, исполняющего RPython-код. Именно, специальные аннотации в исходном коде говорят интерпретатору RPython, какой регион кода нуждается в компиляции. Когда кусок кода исполняется достаточно много раз, он запускается не через скомпилированный через C машинный код, а через специальный трассирующий интепретатор. Он записывает операции, которые реально исполняются во время выполнения итерации. Полученный список операций (в байт-коде) за счёт трассировки является полностью линейным. Этот список затем подвергается оптимизациям, применимым за счёт статического анализа. Так как байт-код достаточно высокоуровневый, оптимизации могут, например, убирать лишние обращения к словарю, а также пары операций list_push и list_pop. Этот оптимизированный список операций затем компилируется через C в машинный код, и последующие вызовы используют уже его вместо интепретации байт-кода.
Разумеется, эти оптимизации корректны только для конкретной итерации оптимизируемого кода и потому зависимы от конкретных значений переменных и об конкретных выборов ветвления потока управления (а ещё от их конкретных типов). Поэтому трассировка включает в себя особые ассерты, которые это проверяют. В случае провала проверки они возвращают управление обратно интепретатору. С другой стороны, статический анализ трассировки может удостовериться, что некоторые из этих ассертов никогда не выстреливают и потому их можно безопасно убрать.
Автор рассматривает эффект от переписывания старой VM для своего ЯП (ранее написанной на C) на RPython. Замеры показывают, что новая реализация заметно обгоняет старую, и за счёт большей высокоуровневости языка в новую реализацию проще вносить изменения, ускоряющие её ещё больше.
Разумеется, RPython не всесилен. По понятным причинам, если ветвления в коде выбираются слишком непредсказуемо (как в бинарном поиске, например), ускорения реально не происходит, поскольку исполнение слишком часто рано переходит из нативного кода обратно в интепретатор. Как из этого следует, один и тот же код, эквивалентный семантически, может очень по разному проявлять себя под JIT. Также оптимизация байт-кода занимает время, и потому RPython прерывает трассировку, если трейс становится слишком длинным. С другой стороны, RPython позволил серьёзно (на пару порядков в некоторых бенчмарков) ускорить VM по сравнению со старой реализацией, и при этом потребовал весьма небольших вложений времени.
Fast Enough VMs in Fast Enough Time
Старая (2012 года) статья про применение RPython (языка реализации PyPy) к реализации VM для ЯП с семантикой слишком необычной, чтобы для него подходили существующие VM.
Чем привлекает RPython? Обещанием: напиши интепретатор для своего ЯП и получили JIT-компилятор бесплатно. Как это работает?
Во-первых, RPython, как можно догадаться по названию — подмножество Python, ограниченное достаточно, чтобы быть статически типизированным (с выводом типов btw) и потому гораздо более подходящим для статического анализа. Также RPython можно компилировать в C для получения бесплатного ускорения от существующих компиляторов.
Во-вторых, JIT-компиляция применяется не напрямую: ускорение происходит за счёт JIT-компиляции самого интепретатора, исполняющего RPython-код. Именно, специальные аннотации в исходном коде говорят интерпретатору RPython, какой регион кода нуждается в компиляции. Когда кусок кода исполняется достаточно много раз, он запускается не через скомпилированный через C машинный код, а через специальный трассирующий интепретатор. Он записывает операции, которые реально исполняются во время выполнения итерации. Полученный список операций (в байт-коде) за счёт трассировки является полностью линейным. Этот список затем подвергается оптимизациям, применимым за счёт статического анализа. Так как байт-код достаточно высокоуровневый, оптимизации могут, например, убирать лишние обращения к словарю, а также пары операций list_push и list_pop. Этот оптимизированный список операций затем компилируется через C в машинный код, и последующие вызовы используют уже его вместо интепретации байт-кода.
Разумеется, эти оптимизации корректны только для конкретной итерации оптимизируемого кода и потому зависимы от конкретных значений переменных и об конкретных выборов ветвления потока управления (а ещё от их конкретных типов). Поэтому трассировка включает в себя особые ассерты, которые это проверяют. В случае провала проверки они возвращают управление обратно интепретатору. С другой стороны, статический анализ трассировки может удостовериться, что некоторые из этих ассертов никогда не выстреливают и потому их можно безопасно убрать.
Автор рассматривает эффект от переписывания старой VM для своего ЯП (ранее написанной на C) на RPython. Замеры показывают, что новая реализация заметно обгоняет старую, и за счёт большей высокоуровневости языка в новую реализацию проще вносить изменения, ускоряющие её ещё больше.
Разумеется, RPython не всесилен. По понятным причинам, если ветвления в коде выбираются слишком непредсказуемо (как в бинарном поиске, например), ускорения реально не происходит, поскольку исполнение слишком часто рано переходит из нативного кода обратно в интепретатор. Как из этого следует, один и тот же код, эквивалентный семантически, может очень по разному проявлять себя под JIT. Также оптимизация байт-кода занимает время, и потому RPython прерывает трассировку, если трейс становится слишком длинным. С другой стороны, RPython позволил серьёзно (на пару порядков в некоторых бенчмарков) ускорить VM по сравнению со старой реализацией, и при этом потребовал весьма небольших вложений времени.
👍10🤔1
Блог*
#prog #article Fast Enough VMs in Fast Enough Time Старая (2012 года) статья про применение RPython (языка реализации PyPy) к реализации VM для ЯП с семантикой слишком необычной, чтобы для него подходили существующие VM. Чем привлекает RPython? Обещанием:…
#prog #python #article
И ещё серия старых (2012 год) статей от разработчика PyPy о том, как можно написать код таким образом, чтобы получить наибольшее преимущество от трассирующего JIT:
Controlling the Tracing of an Interpreter With Hints, Part 1: Controlling the Extent of Tracing
Controlling the Tracing of an Interpreter With Hints, Part 2: Controlling Optimization
Controlling the Tracing of an Interpreter With Hints, Part 3: Putting it All Together — про то, как организовать структуру представления объектов так, чтобы получить выгоду от JIT (ибо наивный подход со словарями методов толком не ускорить)
И ещё серия старых (2012 год) статей от разработчика PyPy о том, как можно написать код таким образом, чтобы получить наибольшее преимущество от трассирующего JIT:
Controlling the Tracing of an Interpreter With Hints, Part 1: Controlling the Extent of Tracing
Controlling the Tracing of an Interpreter With Hints, Part 2: Controlling Optimization
Controlling the Tracing of an Interpreter With Hints, Part 3: Putting it All Together — про то, как организовать структуру представления объектов так, чтобы получить выгоду от JIT (ибо наивный подход со словарями методов толком не ускорить)
Blogspot
Controlling the Tracing of an Interpreter With Hints, Part 1: Controlling the Extent of Tracing
The question I was asked most often during my recent US trip was how exactly the hints work that interpreter authors can use to improve the...
🔥3👍2
Forwarded from std::chrono::steady_clock::now().time_since_epoch().count() 🏳️🌈🏳️⚧️ (yulya yuki 🌸 malinova-sireneva)
🙏13👍2👌1
Блог*
#prog #rust #dotnet #article Автор продолжил работать над этим кодогенератором и в процессе получил добро на Google summer of code для своего проекта и обзавёлся спонсорством на Github. Особенно впечатляет, что он этого добился в возрасте 18 лет. Автор также…
#prog #rust #dotnet #article
Rust panics under the hood, and implementing them in .NET
Или немного о том, почему наивная трансляция раскрутки стека в исключения .NET в некоторых случаях вызывала замедление на порядок.
Rust panics under the hood, and implementing them in .NET
Или немного о том, почему наивная трансляция раскрутки стека в исключения .NET в некоторых случаях вызывала замедление на порядок.
👍1
#prog #article
Fast Unorm Conversions
Статья о преобразовании
Спойлер: по сравнению с наивной версией (с использованием чисел с плавающей точкой) можно ускорить код в 43 раза (и в 46 раз, если написать код, позволяющий задействовать дополнительные возможности по оптимизации автовекторизатора).
Fast Unorm Conversions
Статья о преобразовании
u5
в u8
(как часть преобразования из формата с пятью битами на цветовой канал) и о том, как можно это преобразование ускорить.Спойлер: по сравнению с наивной версией (с использованием чисел с плавающей точкой) можно ускорить код в 43 раза (и в 46 раз, если написать код, позволяющий задействовать дополнительные возможности по оптимизации автовекторизатора).
🔥5
Forwarded from KrololoPower
This media is not supported in your browser
VIEW IN TELEGRAM
Technoporn!
😍10❤🔥3❤2🤮1
#prog #rust #article
Safety Goggles for Alchemists
Или о предстоящих изменениях в язык, которые позволят сделать transmute полностью safe в тех случаях, когда это так (у компилятора есть вся необходимая информация для этого), а в тех случаях, когда это не так — указывать, какие именно небезопасные аспекты проверяет программист, и оставить компилятору проверку остальных аспектов.
Safety Goggles for Alchemists
Или о предстоящих изменениях в язык, которые позволят сделать transmute полностью safe в тех случаях, когда это так (у компилятора есть вся необходимая информация для этого), а в тех случаях, когда это не так — указывать, какие именно небезопасные аспекты проверяет программист, и оставить компилятору проверку остальных аспектов.
Jack Sometimes Writes
Safety Goggles for Alchemists
🔥10🥰9🎉1🍌1
Forwarded from Код, коты и карандаш
Код, коты и карандаш
Зимона из Квандрикса настолько алгебраична, что её новая карта впервые в #мтг использует простые числа.
Потом с этой дамочкой сочинили упоротую комбу, уходящую в бесконечность, только если верна нерешённая гипотеза о простых числах-близнецах: https://www.reddit.com/r/BadMtgCombos/comments/1feps3y/deal_infinite_damage_for_4gru_as_long_as_the_twin/
Почти так же эпично, как решение супермутаций, которое однажды запостили на 4chan в аниме-треде (https://www.youtube.com/watch?v=OZzIvl1tbPo)
#мтг
Почти так же эпично, как решение супермутаций, которое однажды запостили на 4chan в аниме-треде (https://www.youtube.com/watch?v=OZzIvl1tbPo)
#мтг
Reddit
From the BadMtgCombos community on Reddit
Explore this post and more from the BadMtgCombos community
😁6🤔1🤣1
#prog #rust #rustlib
griddle — библиотека, которая реализует hash map с амортизированной по операциям вставки расширением размера. Может быть полезна для случаев, когда важна маленькая tail latency. Реализована не с нуля, а с помощью "сырого" API hashbrown.
На графике бенчмарк операций вставки для HashMap из std и griddle::HashMap.
griddle — библиотека, которая реализует hash map с амортизированной по операциям вставки расширением размера. Может быть полезна для случаев, когда важна маленькая tail latency. Реализована не с нуля, а с помощью "сырого" API hashbrown.
На графике бенчмарк операций вставки для HashMap из std и griddle::HashMap.
🔥7
#music
Из #game про стрельбу в демонов в такт метал-саундтреку.
И да, вокалистка — Алисса Вайт-Глаз — исполняет в песне и мелодичный вокал, и гроул.
youtube.com/watch?v=cpJ0jBTdP70
Из #game про стрельбу в демонов в такт метал-саундтреку.
И да, вокалистка — Алисса Вайт-Глаз — исполняет в песне и мелодичный вокал, и гроул.
youtube.com/watch?v=cpJ0jBTdP70
YouTube
Metal: Hellsinger — Stygia ft. Alissa White-Gluz from Arch Enemy
Music played in Metal: Hellsinger demo during the level Stygia after completing the tutorial. Music was extracted from game files until an official version is released. I suggest listening through YouTube Music for a better experience.
Music credits:
Vocals…
Music credits:
Vocals…