В этом посте мы поговорим о симметрии в нашем повседневном мире и на
уровне отдельных атомов. Эти знания помогут нам заглянуть в мир
кристаллов (и даже квазикристаллов!). Здесь будут картинки, анимашки и
немного школьной математики.
Пользователь
Алгоритмы быстрого возведения в степень
В настоящее время мы уже так привыкли пользоваться готовыми решениями, что при написании высокоуровневого кода, даже не задумываемся над тем, а как вообще реализованы те или иные инструменты. И уж конечно, при возведении чисел в степень, мы никогда не задумываемся о том, а как вообще все это реализовано. И какие существуют алгоритмы для этого?
Возведение числа в степень является одной из основных операций в математике. Что вообще такое возведение в степень? Как нам известно еще со школы — это многократное умножение числа на себя. Но проблема кроется в том, что при возведении больших чисел в очень большие степени вычисления могут занять много времени.
Бесплатные курсы для изучения C++ в 2024 году
В 2024 году в сети доступно множество бесплатных ресурсов для изучения C++, которые предлагают высокое качество обучения. Поэтому нет необходимости платить за курсы, если вы можете получить все необходимые знания бесплатно.
Учить C++ в 2024 году по бесплатным курсам имеет несколько преимуществ. Вот несколько причин, почему это стоит делать:
1. Популярность языка: C++ является одним из самых популярных языков программирования, который широко используется в различных областях, включая разработку игр, системное программирование и мобильные приложения. Изучение C++ может открыть перед вами множество возможностей в карьере.
2. Высокая производительность: C++ известен своей высокой производительностью и эффективностью. Он позволяет разрабатывать быстрые и оптимизированные приложения, особенно в сферах, где требуется работа с большими объемами данных или высокая скорость выполнения.
3. Множество полезных библиотек: C++ предоставляет широкий набор инструментов и библиотек для разработки приложений.
4. Доступно множество полезных ресурсов: Язык C++ очень популярный, существует множество различных онлайн-ресурсов, форумов и сообществ, где можно получить помощь и поддержку от опытных разработчиков.
Что нам недодали в C++
C++ последний десяток с лишним лет стремительно развивается. Тем не менее в наших кодовых базах все еще присутствуют многочисленные helper-файлы и классы, которые помогают восполнить пробелы в стандартной библиотеке языка. Как же так вышло, что там в этих ваших helper-файлах, и когда это закончится?
Multithreading
Разработчики часто сталкиваются с необходимостью разработки многопоточных приложений, поэтому вопросы многопоточности требуют детального изучения. Давайте познакомимся с основными терминами, используемыми в источниках информации о многопоточности, рассмотрим задачи и проблемы многопоточности и изучим средства стандартной библиотеки C++, которые помогут создавать многопоточные приложения.
Моделируем алгоритм MUSIC для задач определения направления прихода электромагнитной волны
Предисловие
Начну своё вступление издалека. Давным-давно, в далеких 2016-2017 годах вашему покорному слуге удалось съездить на полугодовое обучение в далекий город Ильменау (Германия), где он успешно (в общем и целом) закончил магистерскую программу Communications and Signal processing. Программа оказалась не из простых, однако сейчас о ней вспоминать даже приятно. Иногда...
Как работать с атомарными типами данных в C++
Насколько популярна сегодня тема атомарных данных, настолько же она обширна для одной статьи. Можно подробно останавливаться на разных аспектах атомарности: например, анализировать memory ordering, рассуждать о lock-free алгоритмах с использованием атомиков или исследовать производительность атомиков на разных платформах.
Под катом мы рассмотрим некоторые базовые принципы работы с атомарными типами данных в языке C++. А именно: осветим работу с атомарными данными, основные операции с ними в стандартной библиотеке C++, а также некоторые аспекты использования атомиков с пользовательскими типами данных.
std::atomic. Модель памяти C++ в примерах
Для написания эффективных и корректных многопоточных приложений очень важно знать какие существуют механизмы синхронизации памяти между потоками исполнения, какие гарантии предоставляют элементы многопоточного программирования, такие как мьютекс, join потока и другие. Особенно это касается модели памяти C++, которая была создана сложной таковой, чтобы обеспечивать оптимальный многопоточный код под множество архитектур процессоров. Кстати, язык программирования Rust, будучи построенным на LLVM, использует модель памяти такую же, как в C++. Поэтому материал в этой статье будет полезен программистам на обоих языках. Но все примеры будут на языке C++. Я буду рассказывать про std::atomic, std::memory_order и на каких трех слонах стоят атомики.
Квантовые вычисления и их математические основы
Автор статьи: Артем Михайлов
Квантовые вычисления представляют собой новую парадигму в области информационных технологий, основанную на принципах квантовой механики. В отличие от классических вычислений, которые основаны на использовании двоичной системы счисления и логических операций над битами (единицами и нулями), квантовые вычисления оперируют с квантовыми системами и используют кубиты, которые могут находиться в состоянии суперпозиции и обладать квантовой взаимосвязью между собой — квантовой запутанностью.
Проверяем невероятные заявления разработчиков приложения-мессенджера с шифрованием
Я использую приложение Converso, потому что забочусь о безопасности, а все другие приложения, которые утверждают, что только о безопасности и думают, на его фоне выглядят как АНБ. С Converso можно рассчитывать на сквозное шифрование, на то, что сообщения не будут храниться на сервере, на отсутствие пользовательских данных и метаданных…
Отсутствие метаданных? Это крайне смелое и любопытное обещание. Даже у Signal, который считается золотым стандартом шифрования сообщений со своими компонентами Double Ratchet и X3DH, всё равно утекает куча метаданных.
На вебсайте компании и в заказных интервью (фрагмент одного из них можно послушать здесь) есть и другие грандиозные заявления, так что мне стало интересно, как же разработчики претворяют в жизнь всё, что обещают.
Вы все ещё пользуетесь старым редактором?
Пару недель назад редакция Хабра порадовала нас поддержкой маркдауна в новом редакторе. А заодно рассказала о том, насколько он стал популярен:
80 процентов, да лаадно? Впрочем, это совсем несложно проверить. Давеча я скрапил Хабр для одного интересного расследования и кроме всего прочего заметил в заветном jsonе такое поле:
И оказалось, что с новым редактором все далеко не так просто.
Формула Бине без плавающей точки
Красивая формула Бине для чисел Фибоначчи содержит иррациональность - квадратный корень из пяти, что делает ее непригодной для точного вычисления больших чисел Фибоначчи. Это кажется вполне очевидным. Предлагаю способ, как избавиться от зловредного корня и сделать формулу Бине пригодной для точных вычислений.
Корутины в C++20 — что это и как с ними работать
Прим. Wunder Fund: В статье описаны базовые подходы к работе с корутинами в 20м стандарте С++, на паре практических примеров разобраны шаблоны классов для промисов и фьючеров. По нашему скромному мнению, можно было бы реализовать и поизящнее. Приходите к нам работать, если имеете сильные мнения о корутинах хе-хе.
Возникает такое ощущение, что тема реализации корутин в C++20 окутана серьёзной неопределённостью. Полагаю, это так из-за того, что в проекте технической спецификации C++20 сказано, что работа над механизмами корутин всё ещё ведётся, в результате в данный момент нельзя ожидать полной поддержки этих механизмов компиляторами и стандартной библиотекой.Множество проблем, вероятно, возникает из-за отсутствия официальной документации по работе с корутинами. Нам дали синтаксическую поддержку корутин в C++ (co_yield
и co_return
), но не всё то, что я счёл бы признаками их полной библиотечной поддержки. В стандартной библиотеке имеются хуки и базовый функционал поддержки корутин, но нам приходится самостоятельно встраивать всё это в наши собственные классы. Я ожидаю, что полная поддержка корутин-генераторов появится в C++23.
Если вы — Python- или C#-разработчик и ожидаете увидеть в C++ простую механику работы с корутинами, то вас ждёт разочарование, так как фреймворк общего назначения C++20 недоработан. Учитывая это, можно отметить, что в интернете имеется множество публикаций, в состав кода, обсуждаемого в которых, входит шаблонный класс, поддерживающий корутины-генераторы. В этом материале вы найдёте шаблон корутины, применимый на практике, а также примеры кода. Всё это предваряется общими сведениями о корутинах.
Лезем в сорцы компилятора — как работает goscheduler (Часть I)
Каждый раз, когда я открываю новую книжку о golang, обязательно лезу в главу о горутинах и в очередной раз читаю, как беспощадно прекрасен голанг. Подумать только, вместо того, чтобы создавать потоки для обработки параллельно выполняемых задач, мы будем пользоваться внутренними инструментами языка!
Всё это замечательно, и большинство книг и курсов по golang приводят множество примеров того, насколько быстр го и как он запросто может справиться с бесконечным количеством задач. К сожалению, все эти книги не рассказывают, что же происходит под капотом голанга. Что же, давайте откроем сорцы суслика и посмотрим, что там внутри.
Быстрое умножение целых чисел с использованием таблиц
Трюк настолько мне понравился простотой и изяществом, что уже в этом тысячелетии я с удовольствием рассказывал о нём студентам в виде следующей задачи.
Представьте себе, что в процессе возвращения в 2030 году с Луны вы вдруг обнаружили, что ваш бортовой компьютер неправильно выполняет операции целочисленного умножения, и это непременно приведёт к аварии при посадке.
В таком сюжете нет ничего особо фантастического. Вспомним, например, какие проблемы случались когда-то с процессорами Pentium , а к моменту отправки на Луну вы ещё не достигли полного импортозамещения. И вообще надо проверить, а не были ли процессоры просверлены специально.
Но к делу. Вам надо срочно реализовать умножение программно, чтоб работало быстро в реальном времени и укладывалось в доступный ресурс.
Верхняя Пышма: весна в Медной столице Урала
Город-спутник Екатеринбурга Верхняя Пышма называют Медной столицей Урала. В 1814 году здесь открыли первые месторождения золота, в середине XIX века началась разработка медной руды. Затем сыграла важную роль индустриализация СССР – в городе снова стали получать медь в 1934 году.
И после развала СССР население не сокращалось – сейчас здесь живут более 74 тысяч человек. Возможно, одна из причин – близость к Екатеринбургу и наличие рабочих мест на местных предприятиях.
Зимой мы уже здесь были. Как город живет сегодня? Смотрим на Верхнюю Пышму весной.
Как «волшебство» кода коррекции ошибок, которому уже больше 50 лет, может ускорить флэш-память
Как мы строили базовую станцию
Термины «базовая станция» и «вышка сотовой связи» давно и прочно вошли в наш лексикон. И если средний пользователь вспоминает об этих вещах не так часто, то уж «сотовый телефон» по привычности явно входит в десятку лидеров. Сотовой связью ежедневно пользуются сотни миллионов людей, но очень мало кто из них задумывается о том, как обеспечивается эта самая связь. И из этого меньшинства очень немногие действительно представляют всю сложность и тонкость этого инструмента связи.
С точки зрения большинства людей, установка базовой станции сотовой связи является весьма несложным делом. Достаточно повесить несколько антенн, подключить их к сети — и готово. Но такое представление в корне неверно. И поэтому мы решили рассказать о том, сколько тонкостей и нюансов возникает при монтаже базовой станции в условиях мегаполиса.
Осторожно, трафик!
Разбираемся в С, изучая ассемблер
В прошлый раз Аллан О’Доннелл рассказывал о том, как изучать С используя GDB. Сегодня же я хочу показать, как использование GDB может помочь в понимании ассемблера.
Уровни абстракции — отличные инструменты для создания вещей, но иногда они могут стать преградой на пути обучения. Цель этого поста — убедить вас, что для твердого понимания C нужно также хорошо понимать ассемблерный код, который генерирует компилятор. Я сделаю это на примере дизассемблирования и разбора простой программы на С с помощью GDB, а затем мы используем GDB и приобретенные знания ассемблера для изучения того, как устроены статические локальные переменные в С.
Загоним мамонта в яму: как провести презентацию, чтобы вас услышали и запомнили
Источник: Duran
Информация
- В рейтинге
- 1 856-й
- Откуда
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Дата рождения
- Зарегистрирован
- Активность