Главное предназначение статических анализаторов – найти те ошибки, которые остались незамеченными разработчиком. И недавно команда PVS-Studio снова столкнулась с интересным примером мощи этой методики.
Рубрика «c++» - 22
Один день из жизни разработчика PVS-Studio, или как я отлаживал диагностику, оказавшуюся внимательнее трёх программистов
2021-07-05 в 12:51, admin, рубрики: C, c++, static analysis, static analyzer, strncat, Блог компании PVS-Studio, ложное срабатывание, С++, статический анализ, статический анализ кода, статический анализаторКак я учил студентов Северной Кореи разрабатывать ПО с открытым исходным кодом
2021-07-03 в 11:04, admin, рубрики: c++, mlpack, open source, vowpal wabbit, Блог компании VDSina.ru, Программирование, северная корея, Учебный процесс в ITВ 2016 году я отправился в Северную Корею, чтобы учить студентов магистратуры тому, как участвовать в разработке ПО с открытым исходным кодом. Вот фотография с одной из моих лекций:
В рамках курса студенты должны были опубликовать патчи для выбранного ими проекта. В этой статье я расскажу о том, как два патча были внесены в популярные библиотеки машинного обучения mlpack и vowpal wabbit. Я считаю, что эти примеры подчёркивают, что научное сотрудничество между северокорейцами и американцами может принести выгоду обычным гражданам обеих стран и улучшить дипломатические взаимоотношения.
Читать полностью »
Из студента-юриста в программисты на C-C++: личный опыт
2021-06-26 в 8:52, admin, рубрики: c++, junior, junior C++ developer, junior developer, Промышленное программирование, собеседование, собеседование вопросы, собеседование для новичка, СофтПривет. В данной статье я поделюсь своим опытом становления программистом от зарождения идеи стать инженером программного обеспечения до первых офферов, а также расскажу об опыте прохождения собеседований на позицию С/С++ разработчика в Санкт-Петербурге и выводах, сделанных мною в процессе. Данная статья будет полезна преимущественно студентам, ищущим свою первую работу программистом, либо свитчерам, то есть людям, имеющим желание "войти в IT", а именно в разработку ПО.
В данной статье не будет разбора часто встречающихся вопросов на собеседовании начинающего разработчика - таких статей навалом. Будет описан лишь субъективный опыт.
Читать полностью »
Хочу больше годных профстатей, Хабр
2021-06-21 в 7:18, admin, рубрики: c++, devops, GUI, Промышленное программирование, С++, управление проектами, шаблоны ведения проектов Git, шаблоны проектированияЛистая страницы Хабра, поймал себя на мысли, что я воспринимаю Хабр как новостную ленту в социальной сети. То есть как нечто, что прямого отношения лично ко мне не имеет и касается меня очень косвенным путем. Нечто полуразвлекательное-полупознавательное.
Ну, судите сами. Вот примерный список тем, которые превалируют на Хабре.
-
Что там новенького у Илона Петровича Маска.
-
Как с помощью Arduino, говна и палок сделать годный
фаллоимитаторрадиоприемник. -
Как я ушел с прошлой работы, и как мне было там плохо.
-
Как я нашел свою текущую работу, и какая она крутая.
-
Как живется специалисту X в стране Y.
Почему я всё ещё люблю C, но при этом терпеть не могу C++?
2021-06-19 в 14:03, admin, рубрики: C, c++, ruvds_перевод, Блог компании RUVDS.com, Программирование, разработкаМне на удивление часто приходится говорить о том, почему мне всё ещё нравится язык C, и о том, почему я плохо отношусь к C++. Поэтому я решил, что мне стоит об этом написать, а не снова и снова повторять одно и то же.
Как это обычно бывает у C-программистов, язык C не был ни моим первым языком, ни языком, после которого я уже не изучал ничего другого. Но мне всё ещё нравится этот язык, и когда мне нужно писать программы — я выбираю именно его. Правда, в то же время, я стараюсь быть в курсе того, что происходит в мире современных (и не очень) языков программирования. Я слежу за тенденциями в этой сфере и пишу собственный хобби-проект, связанный с мультимедийными технологиями, на Rust. Почему же я до сих пор не поменял C на что-то более современное? И при чём тут C++?
Читать полностью »
Отладочный вывод на микроконтроллерах: как Concepts и Ranges отправили мой printf на покой
2021-05-09 в 19:22, admin, рубрики: c++, C++20, concepts, ranges, stm32, программирование микроконтроллеров, С++Здравствуйте! Меня зовут Александр и я работаю программистом микроконтроллеров.
Начиная на работе новый проект, я привычно набрасывал в project tree исходники всяческих полезных утилит. И на хедере app_debug.h несколько подзавис.
Дело в том, что в декабре прошлого года у GNU Arm Embedded Toolchain вышел релиз 10-2020-q4-major, включающий все GCC 10.2 features, а значит и поддержку Concepts, Ranges, Coroutines вкупе с другими, менее "громкими" новинками С++20.
Воодушевленное новым стандартом воображение рисовало мой будущий С++ код ультрасовременным и лаконично-поэтичным. И старый, добрый printf("Debug messagen")Читать полностью »
Чему равно выражение -3-3u*3 на С++? Не угадаете. Ответ: -4. Приглашаю на небольшое расследование
2021-05-04 в 14:46, admin, рубрики: c++, IT-стандарты, Законодательство в IT, Компиляторы, ошибки, С++, С++ Стандарт, Совершенный кодВсё гораздо серьёзнее. Вот пример для проверки:
#include <iostream>
int main()
{
std::cout << "-3/3u*3 = " << int(-3/3u*3) << "n";
}
Посмотреть результат можно тут.
Или попробуйте поиграться с этим примером здесь или здесь.
Вообще-то мне не удалось найти хоть какой-то компилятор С++, который бы выдавал результат отличный от -4. Даже старый GCC-4.1.2, clang-3.0.0 или Borland C 1992 года. Также заметил, что результат одинаковый и для константы, вычисляемой в момент компиляции и для времени выполнения.
Понимаем красно-черное дерево. Часть 1. Введение
2021-05-01 в 13:52, admin, рубрики: c++, бинарные деревья, структуры данныхДовольно долгое время я воевал с красно-черным деревом (далее - кчд). Вся информация, которую я находил, была в духе "листья и корень дерева всегда черные, ПОТОМУ ЧТО", "топ 5 свойств красно-черного дерева" или "3 случая при балансировке и 12 случаев при удалении ноды". Такой расклад меня не устраивал.
Мне не хотелось заучивать свойства дерева, псевдокод и варианты балансировки, я хотел знать: почему. Каким образом цвета помогают при балансировке? Почему у красной ноды не может быть красного потомка? Почему глубину дерева измеряют "черной высотой"?
Ответы на эти вопросы я получил только тогда, когда мне дали ссылку на лекцию про два-три дерево,Читать полностью »
Печальная правда о пропуске копий в C++
2021-04-14 в 13:00, admin, рубрики: c++, ruvds_перевод, Блог компании RUVDS.com, ПрограммированиеПропуск копий (copy elision) – это оптимизация компилятора, которая, как и следует из имени, устраняет лишние операции копирования и перемещения. Она аналогична классической оптимизации размножения копий, но выполняется конкретно для объектов C++, которые могут иметь нестандартные конструкторы копирования и перемещения. В этой статьей я продемонстрирую пример, в котором очевидная ожидаемая от компилятора оптимизация на практике не происходит. Читать полностью »
Rust — теперь и на платформе Android
2021-04-10 в 9:37, admin, рубрики: android, c++, java, Rust, безопасность мобильных приложений, Блог компании Издательский дом «Питер», Компиляторы, Программирование, Разработка под androidКорректность кода на платформе Android является наиважнейшим аспектом в контексте безопасности, стабильности и качества каждого релиза Android. По-прежнему сложнее всего вытравливаются ошибки, связанные с безопасностью памяти и попадающиеся в коде на С и C++. Google вкладывает огромные усилия и ресурсы в обнаружение, устранение багов такого рода, а также в уменьшение вреда от них, старается, чтобы багов в релизы Android проникало как можно меньше. Тем не менее, несмотря на все эти меры, ошибки, связанные с безопасностью памяти, остаются основным источником проблем со стабильностью. На их долю неизменно приходится ~Читать полностью »