Pull to refresh
60
0
Send message

Коллекционирую лучшие C++ практики

Reading time3 min
Views19K

Коллекционирую лучшие C++ практики


Что-то наши публикации всё больше о плохом, чем о хорошем. Здесь баг, тут код с запахом, это антипаттерн, вот так писать не надо. Помогите увидеть светлую сторону программирования на С++. Оставляйте комментарии.

Читать дальше →
Total votes 38: ↑37 and ↓1+36
Comments9

Шахматы на C++

Reading time68 min
Views45K

Не так давно я захотел написать свой шахматный движок. На удивление в Интернете нашлось не так много хороших статей на эту тему. Были статьи с довольно слабыми программами, многие из которых даже умудрялись пропускать некоторые важные правила. А были статьи с хорошими программами (некоторые из них были даже чуть лучше чем получилось у меня в итоге), но там авторы рассказывали лишь основные идеи, пропуская подробности, из-за чего написать что-то свое по таким статьям было проблематично. Поэтому после написания своей программы, я решил написать статью, дабы облегчить жизнь интересующимся в данной теме. Я не претендую на лучшую шахматную программу или на чистейший код, но эта статья будет хорошим и легким началом для тех, кто хочет написать что-то свое.

Читать далее
Total votes 190: ↑189 and ↓1+188
Comments56

Возможен ли быстрый Garbage collector на С++?

Reading time20 min
Views10K

Не буду долго рассусоливать о том, что такое сборщик мусора и для чего он нужен (на эту тему уже есть достаточно статей). Но хочу отметить несколько важных деталей.

Читать далее
Total votes 20: ↑17 and ↓3+14
Comments74

Эволюция лямбд в C++14, C++17 и C ++20

Reading time5 min
Views14K

Лямбда-выражения — одна из самых популярных фич современного C++. С тех пор, как они были представлены в C++11, лямбды проникли практически в каждую кодовую базу на C++. Цель этой статьи — рассказать об основных эволюционных этапах в истории лямбда-выражений.

Читать далее
Total votes 32: ↑26 and ↓6+20
Comments38

Создание статической библиотеки на С++ для работы с большими числами

Reading time6 min
Views23K

Я всегда слышал, что с библиотеками в С++ что-то не так, как и с ограничением максимального целочисленного значения, да и вообще то, что язык сложный и непонятный. Что же, сегодня, мы начнём писать собственную библиотеку больших чисел, полностью своими руками c 0, и узнаем, так ли страшен С++, как его малюют?

Если вы не разбираетесь в С++, не переживайте, эта статья имеет нулевой порог вхождения. Мы начнём с лёгкого, но вы даже не заметите, как начнёте разбираться в более сложных и непонятных, на первый взгляд, вещах. Главное, писать код логично. Думаю, данная статья будет интересна не только начинающим, ведь я постарался затронуть достаточно много тем. (для старожилов: моя цель не сделать оптимизирование или быстрее, а показать, что С++ не такой уж и сложный язык программирования. И да, я знаю, что существуют другие библиотеки, которые делают это быстрее и лучше. И да, было бы круче, если бы мы использовали булевую алгебру. И да, С++ про вечную оптимизацию, но это статья не про это. Спасибо.)

За сегодня мы узнаем, что такое: Перегрузка функций/конструкторов, прототипы функций, обработка исключений, пространство имён, псевдонимы типов, заголовок.h, как пользоваться отладчиком и как писать продвинутые/красивые комментарии. Пристёгивайтесь, будет безумно интересно.
Читать дальше →
Total votes 49: ↑35 and ↓14+21
Comments52

Вы неправильно пишете животных

Reading time5 min
Views358K
Животные – это платформы с очень ограниченной памятью, вычислительными способностями и возможностями модификаций. Разработчикам энимал-сцены приходится выдавать практически гениальные низкоуровневые алгоритмы. Правда, большое количество хардкода вызывает характерные проблемы с отсутствием проверки в экзотических условиях. Та же фильтрация входных данных делается очень и очень криво.


Уязвимость рекурсивных алгоритмов навигации муравья: спираль смерти

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

Но пойдём далее. Я не знаю, кто разрабатывал архитектуру ящериц, но они бегают в одном процессе, а дышат в другом. При этом платформа не поддерживает многозадачность, поэтому костыль с максимальной длиной бега в 4-6 секунд просто эпичен.
Читать дальше →
Total votes 442: ↑438 and ↓4+434
Comments351

Что почитать (НаучПоп / Научная Фантастика)

Reading time6 min
Views62K

Некоторые время назад сильно увлёкся потреблением информации с научно-популярным уклоном. Но как не заблудиться в миллионах книг? Ресурс то ограничен. А значит придётся выбирать.

Удалось собрать библиотеку по 4 разделам:


Раздел 1. Законы науки и мышление
(Математика, Рациональность, Научный метод, Когнитивные искажения, Нейрофизиология, Ошибки мышления, Доказательная медицина)

Раздел 2. Законы природы
(Физика, Математика, Теория относительности, Квантовая механика, Астрофизика, Астрономия, Изобретения и открытия)

Раздел 3. Законы жизни
(Абиогенез, Теория эволюции, Молекулярная биология, Биоинформатика, Биология клетки, Антропогенез)

Раздел 4. Художественный научпоп / Научная фантастика

Обменяться рекомендациями
Total votes 44: ↑41 and ↓3+38
Comments253

Моменты жизни Стивена Вольфрама — создателя Mathematica, Wolfram|Alpha, A New Kind Of Science и много чего ещё

Reading time10 min
Views8.4K

Оригинал поста в моём личном блоге

Мне посчастливилось лично познакомиться со Стивеном Вольфрамом на Первой Российской конференции «Wolfram технологии», которая проходила в 2013 г. в СПбГУ. После мы пересекались на телемосте Стивена в Digital October. Записи этих выступлений вы найдёте ниже (к сожалению, у видео с конференции нет перевода).

Стивен Вольфрам крайне интересный человек: он приковывает к себе не только потрясающим умом, всем историческим IT-бэкграудом (ведь он лично работал и знает практически всех, кого мы можем вспомнить — от Стива Джобса до своего наставника Ричарда Фейнмана), своей славой «сверхгика» (чего стоит только его непрерывный сбор и анализ всех данных о себе) и пр.

Я думаю, что многим, связанным (или интересующимся) IT-индустрией будет интересно (даже полезно) посмотреть на моменты его жизни от детства до создания одной из первых систем компьютерной алгебры (SMP — которая потом легла в основу Mathematica), участия в создании языка пришельцев из фильма «Прибытие», слушаниях конгресса США по искусственному интеллекту и многом другом.

Этот пост состоит в основном из иллюстраций (фотографий, скриншотов и пр.), но также очень важно, что он содержит очень много ссылок на статьи Стивена (многие переведены на русский язык и я рад, что в большинстве случаев я прикладывал к этому свое непосредственное участие).

В основу этого поста легла страница Стивена о себе.
Total votes 37: ↑31 and ↓6+25
Comments2

Что скрывается за постоянной Фейгенбаума

Reading time25 min
Views49K

Некролог: Митчелл Фейгенбаум, (1944‑2019), 4.66920160910299067185320382…


Статья из блога Стивена Вольфрама



Она называется постоянная Фейгенбаума и равняется примерно 4,6692016. И она с завидной периодичностью возникает в определённых видах математических – и физических – систем, способных демонстрировать хаотичное поведение.

Митчелл Фейгенбаум, ушедший от нас 30 июня в возрасте 74 лет, был открывшим её человеком – в 1975 году, и сделал это, занимаясь экспериментальной математикой на карманном калькуляторе.

Это открытие стало определяющим в теории хаоса. Но когда её обнаружили впервые, этот результат был неожиданным, причудливым, не связанным ни с чем из того, что изучалось ранее. Однако некоторым образом тот факт, что её открыл именно Митчелл Фейгенбаум – с которым я был знаком почти 40 лет – кажется подобающим.
Читать дальше →
Total votes 75: ↑72 and ↓3+69
Comments39

Анализ кода ROOT — фреймворка для анализа данных научных исследований

Reading time14 min
Views4.9K
Picture 3
Пока в Стокгольме проходила 118-я Нобелевская неделя, в офисе разработки статического анализатора кода PVS-Studio готовился обзор кода проекта ROOT, используемого в научных исследованиях для обработки больших данных. Премию за такой код, конечно, не дашь, а вот подробный обзор интересных дефектов кода и лицензию для полной проверки проекта разработчики получат.

Введение


Picture 1

ROOT — набор утилит для работы с данными научных исследований. Он обеспечивает все функциональные возможности, необходимые для обработки больших данных, статистического анализа, визуализации и хранения. В основном написан на языке C++. Разработка началась в CERN (Европейская организация по ядерным исследованиям) для исследований по физике высоких энергий. Каждый день тысячи физиков используют ROOT-приложения для анализа своих данных или для моделирования.
Читать дальше →
Total votes 34: ↑31 and ↓3+28
Comments7

Число, лежащее в основе современной музыки

Reading time9 min
Views61K

Почему двенадцать?


Если вы посмотрите на клавиатуру, то увидите, что в каждой октаве содержится 12 полутонов.
В случае фортепиано это всего лишь значит, что между, например, "до" первой октавы и "до" второй октавы расположено 11 клавиш. Вместе с одним из "до" (например, до второй октавы) мы получим 12 клавиш: до#, ре, ре#, ми, фа, фа#, соль, соль#, ля, ля#, си, до.


Но почему 12?


Может быть это просто случайность? Вот нравилось нашим предкам число 12, у них везде 12: 12 месяцев, 12 знаков зодиака, 12 колен Израилевых, 12 апостолов,… и здесь решили, пусть будет 12, и так и повелось. Или все же здесь есть объективный закон, и это число не случайно?


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

Читать дальше →
Total votes 83: ↑71 and ↓12+59
Comments411

Назад в будущее? Квантовый ластик с отложенным выбором

Reading time8 min
Views34K
На Хабре периодически появляются статьи и комментарии о чудесах квантовой физики: квантовом ластике и слабых измерениях. К сожалению, слишком часто о них говорят как о загадочных и непонятных явлениях, позволяющих творить чуть ли не магию, хотя на самом деле нет в них ровным счетом ничего удивительного. В этом посте я перевожу статью Шона Кэрролла о квантовом ластике с отложенным выбором. Пусть он будет отправной точкой для обсуждения в комментариях всяких хитростей квантовой механики.

Total votes 39: ↑38 and ↓1+37
Comments129

Космики. 7 лет

Reading time5 min
Views16K
Здравствуй, Хабр!

В 2012 году я написал пост о своем увлечении — Космики: моделирование эволюции многоклеточных организмов


С того момента прошло без малого 7 лет, в течение которых я работал над развитием этого проекта. Сегодня я хочу рассказать немного о том, что научился делать, и как планирую развивать проект дальше.
Читать дальше →
Total votes 107: ↑107 and ↓0+107
Comments25

Превосходный FAQ о квантовом превосходстве от Скотта Ааронсона

Reading time12 min
Views15K
Пару дней назад в сеть утек черновик статьи от Google о достижения ими квантового превосходства в сверхпроводящем квантовом компьютере. Сам текст быстро убрали, а вокруг него множатся слухи и предположения, в том числе и ошибочные. Автор поста — профессор Скотт Ааронсон — один из главных специалистов по квантовым алгоритмам, и ведет отличный блог. В последнем посте он отвечает на главные вопросы о квантовом превосходстве.


Читать дальше →
Total votes 45: ↑44 and ↓1+43
Comments12

Каково разрешение человеческого глаза (или сколько мегапикселей мы видим в каждый отдельный момент времени)

Reading time5 min
Views212K
Очень часто фотографы, а иногда и люди из других специальностей, проявляют интерес к собственному зрению.

Вопрос, казалось бы, простой на первый взгляд… можно погуглить, и всё станет ясно. Но практически все статейки в сети дают либо «космические» числа — вроде 400-600 мегапикселей (Мп), либо это и вовсе какие-то убогие рассуждения.

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

Начнём с общей структуры зрительной системы


  1. Сетчатка
  2. Зрительный нерв.
  3. Таламус(ЛКТ).
  4. Зрительная кора.



Сетчатка состоит из трёх типов рецепторов: палочки, колбочки, фоторецепторы(ipRGC).
Читать дальше →
Total votes 249: ↑244 and ↓5+239
Comments404

Шесть типов облаков, которые нужно знать – и что они рассказывают о погоде

Reading time4 min
Views488K


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

Но вам не нужен суперкомпьютер для предсказания того, как изменится погода у вас над головой в ближайшие несколько часов – подобные приметы известны в разных культурах уже много тысяч лет. Следя за небом и обладая некоторыми знаниями по формированию облаков, можно предсказать, будет ли дождь.
Читать дальше →
Total votes 42: ↑39 and ↓3+36
Comments19

Information

Rating
Does not participate
Registered
Activity