Путешествие во времени в параллельном мире 27. февраля 2025 ixSci разработка (0) В настоящей статье мы поговорим о том, как в абсолютно корректном C++-коде можно заглянуть в будущее, совершенно об этом не подозревая. [Ещё]
Ускорение сборки C++-проекта 28. января 2025 ixSci разработка (0) В этом блоге я много пишу о языке C++, о том, какие в нём есть примитивы, которые помогают нам сделать результирующий код лучше и быстрее. Но я никогда не затрагивал другой аспект разработки, а именно: улучшение качества жизни программиста. Одним из наиболее раздражающих аспектов любой разработки, на мой взгляд, является временной интервал между написанием кода и получением результата. Невероятно сложно разрабатывать программу, когда между применением гипотезы к коду и её проверкой в продукте проходит больше, чем N секунд, где N — это предельное время, после которого программист начинает испытывать раздражение (или наоборот). Конечно, N у всех разное (у меня это чаще всего в районе минуты), так как проекты разные и пределы терпения, соответственно, тоже. В цепочке гипотеза-результат есть немало звеньев, но в настоящей статье мы поговорим только об одном — времени сборки, а точнее: как можно ускорить время сборки C++-проекта. [Ещё]
Объединение 25. декабря 2023 ixSci разработка (0) В какой-то мере продолжая тему начатую в предыдущей статье, в настоящей хотелось бы поднять тему ещё одного довольно низкоуровневого примитива, доставшегося C++ по наследству, — объединения. union является одним из самых простых классов в C++, но в то же время его использование сопряжено со множество ошибок и мифов, которые закрепились в умах людей за годы его использования (часто неправильного). [Ещё]
Вероломные указатели 12. декабря 2019 ixSci разработка (0) Настоящая статья частично навеяна различными вопросами на StackOverflow, которые я периодически встречаю, частично другими статьями и видео с конференций. В результате появилась идея собрать основные проблемные и интересные места в стандартном C++, которые связаны с указателями и являются совершенно неочевидными для простого C++-программиста. При этом я не собираюсь впадать в какую-то «эзотерику» и приводить код, который никто не пишет. [Ещё]
Сокрытие типа 29. ноября 2018 ixSci разработка (0) Среди техник, существующих в C++, есть несколько таких, которые используются довольно часто и, соответственно, находятся на слуху. Одной из таких техник является CRTP, которую мы рассматривали ранее. Другой является сокрытие типа (type erasure), которой я и хочу посвятить данную статью. Почему именно ей? Потому, что в стандартной библиотеке уже достаточно сущностей, которые основаны на этой технике, а знание того, как твой инструментарий работает позволяет избавить его от магического ореола, что, в свою очередь, значительно облегчает разработку. [Ещё]
Обзор книги C++ Templates: The Complete Guide 27. ноября 2018 ixSci книги, разработка (0) Книга выпущена под занавес 2017 года и рекламировалась самим Гербом Саттером на конференеции CppCon 2017. Написана она Николоаем Джосаттисом (Nocolai M. Josuttis) в соавторстве с Дэвидом Вандевоордом (David Vandevoorde) и Дугласом Грегором (Douglas Gregor). Это уже второе издание книги, а первое было выпущено в далёком 2002 году. [Ещё]
Передача по ссылке или по значению? 30. июля 2018 ixSci разработка (0) Когда я начинал программировать на C++ и усиленно штудировал книги и статьи, то неизменно натыкался на один и тот же совет: если нам нужно передать в функцию какой-то объект, который не должен изменяться в функции, то он всегда должен передаваться по ссылке на константу (ППСК), за исключением тех случаев, когда нам нужно передать либо примитивный тип, либо сходную с оными по размеру структуру. Т.к. за более чем 10 лет программирования на C++ я очень часто встречался с этим советом (да и сам его давал неоднократно), он давно «впитался» в меня — я на автомате передаю все аргументы по ссылке на константу. Но время идёт ... [Ещё]
Обзор книги Optimized C++: Proven Techniques for Heightened Performance 27. июля 2018 ixSci книги, разработка (0) Книга написана в 2016 году Куртом Гунтеротом (Kurt Guntheroth), и похоже, что это его первая книга. Наткнулся на неё я случайно, когда покупал что-то другое на Amazon. Но покупать не стал. Через какое-то время она снова всплыла в моём поле зрения, когда один из пользователей русской часть StackOverflow порекомендовали мне её. Учитывая то, что я на неё внимание обратил сам, да ещё и получил рекомендацию в конце концов я решил её приобрести. Тем более, что стоящих книг по C++ не так много, а по оптимизации и того меньше — все куда-то подевались. Да и репутация O'Reilly тоже сделала своё дело; будь эта книга любого другого издательства (кроме Addison Wesley), я бы скорее всего пренебрёг. [Ещё]
Языковые новшества C++17. Часть 4. Сборная солянка. 25. мая 2018 ixSci разработка (0) Эта статья является последней в цикле, посвящённом новшествам стандарта C++17 в части языка. Здесь мы рассмотрим несколько интересных и полезных мелочей, которые по тем или иным причинам не вошли в другие статьи цикла. [Ещё]
Языковые новшества C++17. Часть 3. Порядок и спокойствие 28. апреля 2018 ixSci разработка (0) Продолжаем знакомиться с языковыми новшествами стандарта C++17. В настоящей статье мы рассмотрим то, что я бы назвал продолжением облагораживания языка. Т.е. никаких совершенно новых, с точки зрения функционала, вещей мы тут не увидим — скорее приведение старого функционала в более приемлемое состояние. Здесь мы рассмотрим: что изменилось с порядком исполнения подвыражений, какие новые гарантии появились в части исключения необязательного копирования, а также что нового добавили в лямбды. [Ещё]