Ранее мы делали обзоры кода крупных математических пакетов, например, Scilab и Octave, а калькуляторы оставались в стороне как небольшие утилиты, в которых сложно допустить ошибки из-за их малого объёма кода. Мы ошиблись, не уделив им внимания. Случай с публикацией исходного кода калькулятора Windows показал, что всем интересно пообсуждать, какие ошибки там прячутся, а ошибок там более чем достаточно, чтобы написать про это статью. Мы с коллегами решили исследовать код ряда популярных калькуляторов и оказалось, что код калькулятора Windows был не так уж и плох (спойлер).
Читать полностью »
Рубрика «c++» - 67
По следам калькуляторов: Qalculate
2019-03-14 в 5:54, admin, рубрики: C, c++, open source, pvs-studio, Блог компании PVS-Studio, калькулятор, операционные системы, Программирование, статический анализ кодаЧто такое Strict Aliasing и почему нас должно это волновать? Часть 2
2019-03-13 в 13:58, admin, рубрики: c++, Strict Aliasing, Блог компании Отус, Программирование(ИЛИ каламбур типизации, неопределенное поведение и выравнивание, о мой Бог!)
Друзья, до запуска нового потока по курсу «Разработчик С++», остается совсем немного времени. Пришло время опубликовать перевод второй части материала, в которой рассказывается о том, что такое каламбур типизации.
Что такое каламбур типизации?
Мы дошли до того момента, когда мы можем задаться вопросом, зачем нам вообще могут понадобиться псевдонимы? Обычно для реализации каламбуров типизации, т.к. зачастую используемые методы нарушают правила строгого алиасинга.
Иногда мы хотим обойти систему типов и интерпретировать объект как другой тип. Переинтерпретация сегмента памяти в качестве другого типа называется каламбуром типизации (type punning). Каламбуры типизации полезны для задач, которым требуется доступ к базовому представлению объекта для просмотра, транспортировки или манипулирования предоставленными данными. Типичные области, в которых мы можем встретить использование каламбуров типизации: компиляторы, сериализация, сетевой код и т.д.Читать полностью »
Топ 20 ошибок при работе с многопоточностью на С++ и способы избежать их
2019-03-12 в 9:51, admin, рубрики: c++, threads, многопоточное программирование, перевод, Программирование, С++Привет! Предлагаю вашему вниманию перевод статьи «Top 20 C++ multithreading mistakes and how to avoid them» автора Deb Haldar.
Сцена из фильма «Петля времени (2012)
Многопоточность— одна из наиболее сложных областей в программировании, особенно в C++. За годы разработки я совершил множество ошибок. К счастью, большинство из них были выявлены на код ревью и тестировании. Тем не менее, некоторые каким-то образом проскакивали на продуктив, и нам приходилось править эксплуатируемые системы, что всегда дорого.
В этой статье я попытался категоризировать все известные мне ошибки с возможными решениями. Если вам известны еще какие-то подводные камни, либо имеете предложения по решению описанных ошибок– пожалуйста, оставляйте свои комментарии под статьей.
Читать полностью »
Counting Bugs in Windows Calculator
2019-03-12 в 9:06, admin, рубрики: C, c++, calculator, open source, pvs-studio, static analysis, Visual Studio, windows, Блог компании PVS-Studio
A few days ago, Microsoft made the source code of their Windows Calculator publicly available. Calculator is an application that has traditionally shipped with every Windows version. A number of Microsoft projects went open-source over the recent years, but this time the news was covered even by non-IT media on the very first day. Well, it's a popular yet tiny program in C++. Despite its size, we still managed to find a number of suspicious fragments in its code using the PVS-Studio static analyzer.
Читать полностью »
Бесплатные варианты лицензирования PVS-Studio
2019-03-11 в 18:22, admin, рубрики: C#, c++, devops, DevSecOps, java, microsoft mvp, mvp, open source, opensourse, programming, pvs-studio, pvs-studio free, SAST, security, static code analysis, static code analyzer, Блог компании PVS-Studio, информационная безопасность, статический анализ кодаСуществует несколько вариантов бесплатного лицензирования статического анализатора кода PVS-Studio, предназначенного для поиска ошибок и потенциальных уязвимостей. Бесплатной лицензией могут воспользоваться открытые проекты, маленькие закрытые проекты, публичные специалисты по безопасности и обладатели статуса Microsoft MVP. В статье кратко рассматривается каждый из этих вариантов.
PVS-Studio — это инструмент для выявления ошибок и потенциальных уязвимостей в исходном коде программ, написанных на языках С, C++, C# и Java. Работает в среде Windows, Linux и macOS.
Читать полностью »
Ways to Get a Free PVS-Studio License
2019-03-11 в 18:03, admin, рубрики: C#, c++, devops, DevSecOps, java, microsoft mvp, mvp, open source, opensourse, programming, pvs-studio, pvs-studio free, SAST, security, static code analysis, static code analyzer, Блог компании PVS-StudioThere are several ways to get a free license of the PVS-Studio static code analyzer, which is meant for searching for errors and potential vulnerabilities. Open source projects, small closed projects, public security specialists and owners of the Microsoft MVP status can use the license for free. The article briefly describes each of these options.
PVS-Studio is a tool designed to detect errors and potential vulnerabilities in the source code of programs, written in C, C++, C# and Java. It works in Windows, Linux and macOS environments.
Читать полностью »
hellOGL: OpenGL hello world
2019-03-10 в 18:24, admin, рубрики: c++, CGI (графика), OpenGL, геометрия для пятого класса, Программирование, Работа с 3D-графикой, разработка игрСегодня я покажу, как открыть открыть окно и создать контекст OpenGL. Это на удивление непростая задача, OpenGL до сих пор не имеет официальных кроссплатформенных средств создания контекста, поэтому будем опираться на сторонние библиотеки (в данном случае GLFW и glad). В интернете уже очень много подобных hello world, но всё, что я видел, мне не нравится: или оно очень навороченное, или картинки в примерах уж очень примитивные (либо и то, и другое!). Большое спасибо всем авторам, но я выкачу очередной туториал :)
Сегодня мы отрисуем вот такое:
Подсчитаем баги в калькуляторе Windows
2019-03-09 в 18:04, admin, рубрики: C, c++, open source, pvs-studio, Visual Studio, windows, Блог компании PVS-Studio, калькулятор, операционные системы, статический анализ кода
На днях компания Microsoft открыла исходный код калькулятора. Это приложение входило во все версии операционной системы Windows. Исходный код разных проектов Microsoft достаточно часто открывался за последние коды, но новость о калькуляторе в первый же день просочилась даже в не технологические средства массовой информации. Что ж, это популярная, но очень маленькая программа на языке C++, тем не менее, статический анализ кода с помощью PVS-Studio выявил подозрительные места в коде.
Читать полностью »
Feature freeze C++20. Coroutines, Modules и прочее
2019-03-06 в 7:37, admin, рубрики: c++, c++ библиотеки, C++20, c++2a, constexpr, coroutine, coroutines, IT-стандарты, modules, networking, range, ranges, Блог компании Яндекс, Компиляторы, Программирование, стандарт, стандартизацияНа днях прошла встреча международного комитета по стандартизации C++ в американском городе Кона. Это была не просто встреча, а feature freeze! Никакие серьёзные новые идеи больше не могут просачиваться в стандарт, остаётся лишь пара встреч на добавление предварительно одобренных вещей, исправление недочётов и устранение шероховатостей.
Ожидать ли Модули и Корутины в C++20, будет ли там быстрая библиотека для форматирования вывода, сможет ли она работать с календарями, добавили ли std::stacktrace, начнёт ли компилятор сам вызывать std::move в ряде случаев, приняли ли std::flat_map? Всё это и многое другое ожидает вас под катом.
В чем набрать и чем собрать C++ проект
2019-03-05 в 13:23, admin, рубрики: ant, build system, c++, cmake, eclipse, google test, gradle, IDE, kdevelop, make, netbeans, qt, QtCreator, scons, Разработка под LinuxЗадавшись этим вопросом я, в первую очередь, сформулировал требования: жесткие и опциональные (но желательные) для системы сборки и графической среды разработки.
Сразу хочу отметить что речь идет о написании C++ кода не под какую-то специфичную платформу типа Android или фреймворка, например Qt, — где все уже готово, как с построением так и с редактированием кода, а об generic коде не привязанному к конкретной платформе или фреймворку.
Читать полностью »