#prog #c #article
Why Not Just Do Simple C++ RAII in C?
В последнее время есть предложения для того, чтобы добавить в C defer. Разумеется, эта конструкция избыточна, если в языке есть RAII. Статья показывает, почему "просто добавить RAII в C" не сработает.
Why Not Just Do Simple C++ RAII in C?
В последнее время есть предложения для того, чтобы добавить в C defer. Разумеется, эта конструкция избыточна, если в языке есть RAII. Статья показывает, почему "просто добавить RAII в C" не сработает.
The Pasture
Why Not Just Do Simple C++ RAII in C?
Ever since I finished publishing the “defer” paper and successfully defended it on its first go-around (it now has tentative approval to go to a Technical Sp...
👍1
Forwarded from Neural Machine
Рождение ребенка годится только для чудаков. Меня будет раздражать такая фигня.
Если вы вдруг наберёте достаточно голосов для Блог*а, то я добавлю в реакции эмодзи 🤔
Please open Telegram to view this post
VIEW IN TELEGRAM
💩17❤🔥2👍2🤮2👎1
Блог*
Если вы вдруг наберёте достаточно голосов для Блог*а, то я добавлю в реакции эмодзи 🤔
This media is not supported in your browser
VIEW IN TELEGRAM
👍4❤🔥2💯2
#prog #math #gamedev
How I Found A 55 Year Old Bug In The First Lunar Lander Game
(thanks @itpgchannel)
How I Found A 55 Year Old Bug In The First Lunar Lander Game
(thanks @itpgchannel)
Martin C. Martin
How I Found A 55 Year Old Bug In The First Lunar Lander Game
Update: This kinda blew up! Featured in Hacker News, Ars Technica and PC Gamer, among others. Just months after Neil Armstrong’s historic moonwalk, Jim Storer, a Lexington High School student…
👍2
Forwarded from optorepost
Шикарное видео про обучение нейронки балансированию двойного маятника. Обучается через генетический алгоритм. Вроде бы простая задача, простое решение, но очень глубоко. А в какой-то момент автор придумал гениальное решение, когда его система перестала обучаться.
Я посмотрел очень много подобных видео, и вообще погружался в тему, и это видео одно из достойнейших. Так что реально рекомендую.
На самом деле это вторая часть, и там есть первая с контекстом и историей. Ради второй стоит посмотреть и первую (https://www.youtube.com/watch?v=EvV5Qtp_fYg).
https://youtu.be/9gQQAO4I1Ck (это вторая)
Я посмотрел очень много подобных видео, и вообще погружался в тему, и это видео одно из достойнейших. Так что реально рекомендую.
На самом деле это вторая часть, и там есть первая с контекстом и историей. Ради второй стоит посмотреть и первую (https://www.youtube.com/watch?v=EvV5Qtp_fYg).
https://youtu.be/9gQQAO4I1Ck (это вторая)
YouTube
How to train simple AIs to balance a double pendulum
Previous video: https://youtu.be/EvV5Qtp_fYg
XPBD article: https://matthias-research.github.io/pages/publications/XPBD.pdf
Github https://github.com/johnBuffer/Pendulum-NEAT
● Support me on patreon https://www.patreon.com/c/pezzzaswork
● Join the Discord…
XPBD article: https://matthias-research.github.io/pages/publications/XPBD.pdf
Github https://github.com/johnBuffer/Pendulum-NEAT
● Support me on patreon https://www.patreon.com/c/pezzzaswork
● Join the Discord…
❤7
optorepost
Шикарное видео про обучение нейронки балансированию двойного маятника. Обучается через генетический алгоритм. Вроде бы простая задача, простое решение, но очень глубоко. А в какой-то момент автор придумал гениальное решение, когда его система перестала обучаться.…
#prog #math #video
Больше всего меня удивило следующее:
Первые решения автора использовали скорость перемещения каретки в качестве выходного параметра (ещё для первой части с уравновешиванием одинарного маятника). В качестве fitness function использовалась очень простая вещь: единица счёта начислялась за каждую секунду симулированного времени, во время которой конец маятника находился достаточно высоко. С таким подходом ему удалось сконструировать решение, но для получения эстетически удовлетворительных результатов — без лишней дёрганности — ему пришлось модифицировать fitness function, чтобы она штрафовала решения за ненулевую угловую скорость маятника и за отклонение от серединного положения.
В комментариях к первому видео автора справедливо заметили, что использование скорости в качестве выходного параметра фактически означает бесконечное ускорение и потому нефизично и нереалистично. В конце второго видео автор попробовал подход, при котором в качестве выходного параметра используется ускорение каретки вместо скорости — разумеется, скорость каретки пришлось добавить в качестве входного параметра для нейросети. В итоге получилось рабочее и при этом не дёрганное решение — и для его достижения было достаточно первой, самой простой формы fitness function.
Больше всего меня удивило следующее:
Первые решения автора использовали скорость перемещения каретки в качестве выходного параметра (ещё для первой части с уравновешиванием одинарного маятника). В качестве fitness function использовалась очень простая вещь: единица счёта начислялась за каждую секунду симулированного времени, во время которой конец маятника находился достаточно высоко. С таким подходом ему удалось сконструировать решение, но для получения эстетически удовлетворительных результатов — без лишней дёрганности — ему пришлось модифицировать fitness function, чтобы она штрафовала решения за ненулевую угловую скорость маятника и за отклонение от серединного положения.
В комментариях к первому видео автора справедливо заметили, что использование скорости в качестве выходного параметра фактически означает бесконечное ускорение и потому нефизично и нереалистично. В конце второго видео автор попробовал подход, при котором в качестве выходного параметра используется ускорение каретки вместо скорости — разумеется, скорость каретки пришлось добавить в качестве входного параметра для нейросети. В итоге получилось рабочее и при этом не дёрганное решение — и для его достижения было достаточно первой, самой простой формы fitness function.
❤🔥1👍1
#prog #rust #article
Enter paradis — A new chapter in Rust's parallelism story
Из-за правил относительно тупого borrow checker работать в Rust с разными мутабельными кусками одной структуры неудобно, даже если они заведомо не пересекаются. Для наиболее простых случаев годится
В случае, если у структуры данных есть некоторая разновидность индексации, которая сопоставляет разным индексам разные элементы, то можно раздавать мутабельные ссылки на разные элементы, соответствующие разным наборам непересекающихся индексов. На практике это выливается в некоторый бойлерплейт с unsafe, который ещё и надо написать достаточно аккуратно, чтобы не потерять проверки времён жизни.
Библиотека paradis как раз стремится заполнить этот пробел за счёт предоставления этих наборов уникальных непересекающихся индексов и их комбинаторов, сохраняющих эти свойства, а также, разумеется, геттеров, использующих эти наборы индексов. Для каждой отдельной структуры данных требуется только реализовать геттер по индексу (unsafe, разумеется). Причём так как эти абстракции предназначены для использования в многопотоке, геттер возвращает данные, принимая self по разделяемой ссылке.
Автор отдельно отмечает, что paradis — экспериментальная библиотека и её дизайн ещё может поменяться.
Enter paradis — A new chapter in Rust's parallelism story
Из-за правил относительно тупого borrow checker работать в Rust с разными мутабельными кусками одной структуры неудобно, даже если они заведомо не пересекаются. Для наиболее простых случаев годится
spli_at_mut
на слайсах, но это не распространяется на более сложные структуры данных и на более сложные случаи. Скажем, просто разбить слайс на набор мутабельных ссылок на элементы с чётными и нечётными индексами уже не получается.В случае, если у структуры данных есть некоторая разновидность индексации, которая сопоставляет разным индексам разные элементы, то можно раздавать мутабельные ссылки на разные элементы, соответствующие разным наборам непересекающихся индексов. На практике это выливается в некоторый бойлерплейт с unsafe, который ещё и надо написать достаточно аккуратно, чтобы не потерять проверки времён жизни.
Библиотека paradis как раз стремится заполнить этот пробел за счёт предоставления этих наборов уникальных непересекающихся индексов и их комбинаторов, сохраняющих эти свойства, а также, разумеется, геттеров, использующих эти наборы индексов. Для каждой отдельной структуры данных требуется только реализовать геттер по индексу (unsafe, разумеется). Причём так как эти абстракции предназначены для использования в многопотоке, геттер возвращает данные, принимая self по разделяемой ссылке.
Автор отдельно отмечает, что paradis — экспериментальная библиотека и её дизайн ещё может поменяться.
👍10❤5
Блог*
#meme про женскую одежду. Насколько я знаю из разговоров со знакомыми женщинами — правдивый.
Ну и раз уж речь зашла об одежде...
#meme о том, как перестать быть слабаком и одеваться по-мужски (прямо как в старые добрые)
#meme о том, как перестать быть слабаком и одеваться по-мужски (прямо как в старые добрые)
🥰16💩3👌3🤮1🤡1