Pull to refresh
4
0

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

Send message

Сериализация данных в C++ с библиотекой Cereal

Level of difficultyEasy
Reading time5 min
Views5K

Привет, Хабр!

Сегодня рассмотрим библиотеку Cereal в C++, которая позволяет сохранять и загружать состояние объектов, не теряя производительности.

Cereal — это заголовочная библиотека для C++, предназначенная для сериализации данных. Она поддерживает XML и JSON. Помимо этого поддерживает практически все стандартные типы данных в C++ и имеет инструменты для работы с пользовательскими типами. В отличие от, например, библиотек Boost, Cereal не требует сложных настроек и имеет интуитивно понятный синтаксис, знакомый юзерам Boost.

Читать далее

Статический и динамический полиморфизм в C++

Level of difficultyEasy
Reading time6 min
Views15K

Привет, Хабр! К сегодняшнему дню написано уже немало учебников и статей по полиморфизму в целом и его воплощения в C++ в частности. Однако, к моему удивлению, при описании полиморфизма никто (или почти никто) не затрагивает тот факт, что помимо динамического полиморфизма в C++ имеется и достаточно мощная возможность использования его младшего брата – полиморфизма статического. Более того, он является одной из основных концепций STL – неотъемлемой части его стандартной библиотеке.

Поэтому в данной статье мне хотелось бы хотя бы в общих чертах рассказать о нём и его отличиях от всем известного динамического полиморфизма. Надеюсь, эта статья будет интересна для тех, кто только начал изучать принципы ООП, и они смогут посмотреть на его “третьего слона” с новой стороны.

Читать далее

UB or not UB: дублируем элемент std::vector

Level of difficultyMedium
Reading time10 min
Views7.1K

В статье выясним, можно ли с точки зрения стандарта языка C++ тривиальным вызовом push_back продублировать элемент std::vector. Отвечая на простой вопрос, столкнемся с более интересными: что собой представляет внутренний мир вектора, как "протухают" итераторы при реаллокации, какие ограничения добавляют гарантии безопасности относительно исключений...

Читать далее

Подробно рассматриваем обратное распространение ошибки для простой нейронной сети. Численный пример

Level of difficultyMedium
Reading time6 min
Views11K

В данной статье мы рассмотрим прямое распространение сигнала и обратное распространение ошибки в полносвязной нейронной сети. В результате получим весь набор формул, необходимых для её программной реализации. В завершении статьи приведён численный пример.

Надеемся, что статья будет интересной и полезной для всех, кто приступает к изучению глубинного обучения и нейронных сетей!

Разработка многопоточной Базы Данных: Ключевые аспекты и примеры реализации ( C++ )

Reading time6 min
Views3.9K

Эта статья посвящена разработке многопоточной базы данных. Мы рассмотрим основные компоненты, такие как хранилище данных, транзакционные системы, многопоточность, журналирование и восстановление, а также создание API для взаимодействия с базой данных. Примеры кода на языке C++ помогут лучше понять реализацию различных аспектов многопоточной базы данных.

Читать далее

Почему квантовая механика – это теория физики Мультивселенной

Level of difficultyMedium
Reading time32 min
Views6.5K

О двухщелевом опыте и эффекте наблюдателя знают многие, но гораздо реже можно услышать о четырёхщелевой версии этого эксперимента. По мнению британского физика Дэвида Дойча, она – ни много ни мало – доказывает существование параллельных миров. Более того, любая интерференция, включая ту, которая создаёт разноцветные узоры на мыльных пузырях и на пятнах бензина, возникает вследствие взаимодействия вселенных. Как же учёные не заметили этого раньше? Возможно, проблема в корпускулярно-волновом дуализме – ошибочном представлении о кванте как о волне и частице одновременно. В действительности все физические объекты проявляют либо волновые, либо корпускулярные свойства – в зависимости от способа описания – но никак не те и другие сразу.

В этой статье я объясняю, почему сторонники идеи квантового Мультивёрса называют многомировую интепретацию метатеорией и считают её единственным правильным пониманием квантовой механики. Также мы согласуем волновую механику Шрёдингера с матричной механикой Гейзенберга, переосмыслим понятия квантовой интерференции и декогеренции, разберёмся с математическим понятием неотличимости, выясним, почему не все бесконечности равны, найдём меру в несчётном множестве вселенных Мультивёрса, избавимся от квантовых скачков и покажем, откуда в квантовом мире берутся классические свойства макрообъектов.

Читать далее

Создаем своего бота для игры в Го

Reading time8 min
Views13K


Я занимаюсь разработкой своего скромного бота для игры в Го. И меня искренне удивляет отсутствие информации эту тему на русском языке. Поэтому я решил поделиться накопленными знаниями в этой статье.

Я расскажу о том, как сделать простого бота. Освещу основные этапы, начиная от поиска ходов и эвристических алгоритмов и заканчивая публикацией вашего создания на онлайн-сервере KGS.
Читать дальше →

Криптография и другие вычисления на детских логических машинах

Level of difficultyEasy
Reading time6 min
Views2.3K

Электрическая игрушка "Детская логическая машина" (ДЛМ) представляет собой устройство, позволяющее решать несложные логические задачи про приведённым в настоящей инструкции рисункам и описаниям программ.

ДЛМ способна отвечать на вопросы, решать поставленные перед ней задачи, быть партнёром в играх и даже экзаменатором.

На коробке предупреждение, что игрушка только для детей 13-15 лет. Читайте статью с осторожностью, если не попадаете в указанный диапазон.

Читать далее

Треугольник Паскаля и скрытые в нём «паск(х)алки» (часть 2)

Level of difficultyEasy
Reading time10 min
Views4.6K

Прошло уже несколько месяцев с момента публикации первой части этой статьи. В комментариях я обещал продолжение, но случился некоторый форс-мажор с жёстким диском, и почти готовая статья, а вместе с ней и ряд других материалов, были безвозвратно утеряны. Конечно, кое-что удалось восстановить из бэкапов, однако эта ситуация на некоторое время несколько выбила меня из колеи. Несмотря на подобное достаточно неприятное событие, обещание нужно выполнять. Поэтому заново написал вторую часть и теперь предлагаю её вашему вниманию.

В прошлой статье я достаточно подробно рассказывал об истории этого математического артефакта и учёных, занимавшихся его исследованием на протяжении нескольких сотен лет. Напомню, что треугольник Паскаля представляет собой бесконечный треугольный массив биномиальных коэффициентов, в котором на вершине и по бокам находятся единицы, а каждое число из тела массива равно сумме двух расположенных над ним чисел.

Читать далее

Учимся летать: симуляция эволюции на Rust. 1/5

Level of difficultyMedium
Reading time10 min
Views11K



В этой серии статей мы создадим симуляцию эволюции с помощью нейронной сети и генетического алгоритма.


Я расскажу вам, как работают простая нейронная сеть и генетический алгоритм, затем мы реализуем их на Rust и скомпилируем приложение в WebAssembly.


Предполагается, что вы немного знакомы с Rust, остальное я постараюсь объяснить.

Эта серия состоит из нескольких статей:


  1. Введение (что мы будем симулировать, как работает нейронная сеть и генетический алгоритм).
  2. Реализация нейронной сети.
  3. Реализация генетического алгоритма.
  4. Реализация глаз, мозга и самой симуляции (в двух частях: первая, вторая).




Интересно? Тогда поехали.

Читать дальше →

Rust: за пределами синтаксиса. Обретение просветления в неожиданных местах

Level of difficultyEasy
Reading time9 min
Views7.2K

Я ненавижу C++. Обычно мне нравится программировать, но каждый проект на C++, за который я брался, казался мне утомительной рутиной. В январе 2023 года я решил изучить Rust, чтобы иметь возможность сказать, что знаю язык системного программирования, который мне действительно хотелось бы использовать.

Первая стабильная версия Rust вышла в 2015 году, и с тех пор, начиная с 2016 года, он ежегодно признается самым любимым языком в ежегодном опросе разработчиков на Stack Overflow (теперь, в 2023 году, это называется "Востребованный"). Почему же разработчики, попробовав Rust, не могут перестать его использовать? В мире разрекламированных преемников C/C++ Rust, похоже, выходит на первое место. Как получилось, что язык, который появился на основной сцене всего в прошлом десятилетии, стал таким популярным?

Читать далее

Туториал по Tokio. 2/2

Level of difficultyMedium
Reading time38 min
Views4.2K



Hello world!


Представляю вашему вниманию вторую часть туториала по Tokio.



Tokio — это асинхронная среда выполнения (runtime) кода Rust. Она предоставляет строительные блоки, необходимые для разработки сетевых приложений любого размера.

Читать дальше →

Как можно увеличить словарный запас и прокачать аудирование по отрывкам фильмов и сериалов

Reading time3 min
Views8.7K

Многие, очень многие люди любят фильмы и сериалы и готовы тратить огромное количество времени на их просмотр. В связи с этим возникает вполне закономерный запрос на фильмы и сериалы на английском языке для тех, кому интересно его изучение. Здесь есть несколько проблем:

Читать далее

Алгоритмы, вдохновлённые природой

Level of difficultyHard
Reading time7 min
Views6.2K

В последние годы в нашей повседневной речи плотно закрепилось словосочетание «нейронные сети». Этот термин означает набор методов и программных решений из машинного обучения, дискретной математики и информатики. Но про что совсем часто забывают — он происходит из нейробиологии. Несмотря на очевидное название, нейросети — это не набор операторов IF и ELSE, а модели, вдохновлённые нервной системой живых организмов. Их эффективность в пору, когда у нас есть такие генеративные модели как GigaChat и Kandinsky, наглядно видна каждому. 

Но окружающая нас живая природа не ограничивается одними лишь нейронами. Наблюдение за поведением от крошечных клеток до колоний в миллионы особей подарило нам множество полезных математических алгоритмов. И продолжает дарить дальше. Остаётся только догадываться, сколько всего нам ещё предстоит открыть. Да, математикой и компьютерными науками можно заниматься не только в лаборатории над микроскопом, но и вовсе в полевой экспедиции. 

И именно об этом я хочу рассказать в этой статье, заодно показав, сколь тонка грань между нашими творениями из бездушного кремния и металла и окружающим нас царством жизни.

Читать далее

Реализация Streebog256 и Streebog512 на языке RUST

Level of difficultyEasy
Reading time18 min
Views3.6K

Как и планировалось, следом за реализацией семейства хэш-функций SHA, появляется Стрибог и тоже в двух версиях, для 256 и 512 бит на выходе. Надеюсь эта статья будет полезна другим студентам. Более опытные разработчики в комментариях приветствуются.

Весь код сохранен в репозитории GitVerse.

Читать далее

Ода хейта C++

Level of difficultyEasy
Reading time12 min
Views32K

Я люблю С++. Это мой основной язык разработки на работе и в домашнем проекте. Я люблю его за скорость, за гибкость и близость к железу. Используя его, я понимаю "что происходит внутри". Я учился на нем программировать, и когда я пишу программы я "думаю на С++".

Я работаю в геймдеве, где С++ все еще популярен и ценится за все эти качества. Так же я много работал с C#, Lua, Python, немного JS и PHP. В общем, есть с чем сравнить.

Однако, у меня есть изрядная доля ненависти к С++. Я вижу в нем кучу проблем, которые не решаются годами. Я вижу как другие страдают от этих проблем.

В этой статье я хочу излить душу, за что я ненавижу С++. Мне от этого станет легче, возможно кому-то еще. Не стесняйтесь писать свой хейт (или защиту), устроим групповой сеанс терапии (или холивар)

Дисклеймер: Не стоит относиться слишком серьезно к этому тексту. Он наполнен душевной болью, и направлен лишь на релаксацию и сброс напряжения

Читать далее

Compiler Explorer — уникальный проект для исследования компилируемого кода

Level of difficultyMedium
Reading time7 min
Views14K
Этот пост посвящён замечательному инструменту, полезному для каждого, кто интересуется компиляторами или архитектурой компьютеров. Это Compiler Explorer, который я в дальнейшем будут называть CE.

CE — потрясающий инструмент. Если вы с ним не знакомы, то прервите чтение и перейдите на веб-сайт CE, где вы увидите примерно такой экран:

Предупреждение: вы забираетесь в «кроличью нору», на которую можете потратить несколько часов своего времени.


В основе CE лежит очень простая идея. Достаточно ввести исходный код в левую панель, и сайт мгновенно покажет вам на правой панели скомпилированный результат (обычно на языке ассемблера).

CE поддерживает 69 языков, более двух тысяч компиляторов и широкий спектр архитектур, включая x86, arm, risc-v, avr, mips, vax, tensa, 68k, PowerPC, SPARC и даже древний 6502.

То есть теперь для просмотра результата работы компилятора достаточно открыть godbolt.org и скопировать туда блок кода.

Это само по себе удивительно, но у CE есть гораздо больше возможностей. Это инструмент, который должны знать все интересующиеся компиляторами и архитектурами компьютеров. В статье мы сможем лишь поверхностно рассмотреть функции CE. Вам стоит самим перейти на сайт CE и попробовать всё самостоятельно.
Читать дальше →

Разбор вердикта суда в отношении разработчика Tornado Cash

Level of difficultyEasy
Reading time8 min
Views15K

В результате беспрецедентного судебного разбирательства Алекс Перцев, ключевой разработчик инструмента для обеспечения приватности на базе Ethereum под названием Tornado Cash, был приговорен сегодня к более чем пяти годам тюремного заключения за свою работу над проектом. Вынесенный приговор был максимальным, запрошенным прокуратурой, и стал первым приговором разработчику, создавшему децентрализованный инструмент достижения приватности с использованием криптовалют.

Читать далее

Вышка не нужна. В чём причина?

Level of difficultyEasy
Reading time8 min
Views7.8K

После множества споров вокруг нужности или ненужности высшего образования в ИТ, думаю, стоит поставить жирную точку.

Но это не конец спора, разумеется. Это именно жирная точка - место схождения разрозненных аргументов за и против.

Пока общий вердикт - высшее образование не нужно. В ИТ в частности. Шире - в стране вообще. Возможно даже в мире.

Далее докажем, почему оно не нужно.

Читать далее

Information

Rating
7,258-th
Registered
Activity