Previously we did code reviews of large mathematical packages, for example, Scilab and Octave, whereby calculators remained aloof as small utilities, in which it is difficult to make errors due to their small codebase. We were wrong that we haven't paid attention to them. The case with posting the source code of the Windows calculator showed that actually everyone was interested in discussing types of errors hiding in it. Moreover, the number of errors there was more than enough to write an article about that. My colleagues and I, we decided to explore the code of a number of popular calculators, and it turned out that the code of the Windows calculator was not that bad (spoiler).
Читать полностью »
Рубрика «C» - 35
Following in the Footsteps of Calculators: Qalculate
2019-03-14 в 6:02, admin, рубрики: C, c++, calculator, open source, pvs-studio, static analysis, Блог компании PVS-Studio, ПрограммированиеПо следам калькуляторов: Qalculate
2019-03-14 в 5:54, admin, рубрики: C, c++, open source, pvs-studio, Блог компании PVS-Studio, калькулятор, операционные системы, Программирование, статический анализ кода
Ранее мы делали обзоры кода крупных математических пакетов, например, Scilab и Octave, а калькуляторы оставались в стороне как небольшие утилиты, в которых сложно допустить ошибки из-за их малого объёма кода. Мы ошиблись, не уделив им внимания. Случай с публикацией исходного кода калькулятора Windows показал, что всем интересно пообсуждать, какие ошибки там прячутся, а ошибок там более чем достаточно, чтобы написать про это статью. Мы с коллегами решили исследовать код ряда популярных калькуляторов и оказалось, что код калькулятора Windows был не так уж и плох (спойлер).
Читать полностью »
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.
Читать полностью »
Подборка полезностей для программиста под Linux
2019-03-11 в 12:24, admin, рубрики: C, cpd, open source, pmd, record and replay, rr, sotruss, Настройка Linux, Разработка под LinuxДумаю, у каждого программиста есть набор любимых утилит, трюков и знаний. Некоторые он даже использует в работе. Скорее всего, у разных программистов они различаются. Значит, пришло время поделиться. Сегодня я расскажу о своей подборке того, что, вероятно, известно не настолько широко, как оно того заслуживает. Речь пойдёт преимущественно про платформу GNU/Linux.
Подсчитаем баги в калькуляторе Windows
2019-03-09 в 18:04, admin, рубрики: C, c++, open source, pvs-studio, Visual Studio, windows, Блог компании PVS-Studio, калькулятор, операционные системы, статический анализ кода
На днях компания Microsoft открыла исходный код калькулятора. Это приложение входило во все версии операционной системы Windows. Исходный код разных проектов Microsoft достаточно часто открывался за последние коды, но новость о калькуляторе в первый же день просочилась даже в не технологические средства массовой информации. Что ж, это популярная, но очень маленькая программа на языке C++, тем не менее, статический анализ кода с помощью PVS-Studio выявил подозрительные места в коде.
Читать полностью »
Иногда в голову приходит какая-то мысль избавиться от которой очень сложно. Такое произошло и со мной.
Я решил создать виртуальную машину (VM), учитывая то, что на тот момент у меня не было идей, мне показалось, что это прекрасная мысль. Если вы заинтересовались, то вперёд под кат! Читать полностью »
STM32 fast start. Часть 1 ПО, материалы, Cube MX
2019-02-28 в 19:06, admin, рубрики: atollic true studio, C, fast start, stm32, tutorial, программирование микроконтроллеровВ последнее время все чаще сталкиваюсь с холиварами на тему Cube MX и HAL, применительно к контроллерам STM32.
С одной стороны — стоят защитники, которым нравится удобство конфигурирования и читаемость кода.
С другой — приверженцы писать все руками, которым важна скорость работы и бережное использование ресурсов.
Для того, чтобы расставить все точки над i — попробуем написать «Hello world» тремя наиболее часто используемыми путями CMSIS, LL, HAL. Оценим затраты (ресурсы контроллера, объем исполняемого файла, и конечно же время работы разработчика).
Статья будет состоять из нескольких частей:
STM32 fast start. Часть 1 ПО, материалы, Cube MX.
STM32 fast start. Часть 2 Hello World на HAL, настройка отладки в Atollic TrueSTUDIO
STM32 fast start. Часть 3 Hello World на LL
STM32 fast start. Часть 4 Hello World на CMSIS
STM32 fast start. Часть 5 Подведение итогов, сравнение HAL, LL, CMSIS.
Читать полностью »
Loli — новый высокопроизводительный язык
2019-02-24 в 12:37, admin, рубрики: C, высокая производительность, интерпретатор, ооп, язык программированияВ этой статье мы поговорим о новом интерпретируемом языке Loli, рассмотрим синтаксис и сравним с языками C и Python.
Ускоряем неускоряемое или знакомимся с SIMD, часть 2 — AVX
2019-02-18 в 15:21, admin, рубрики: avx, AVX2, C, c++, simd, sse, высокая производительность, ПроцессорыПредыдущая часть вызвала бурную дискуссию, в ходе которой выяснилось, что AVX/AVX2 на самом деле есть в десктопных CPU, нет только AVX512. Поэтому продолжаем знакомиться с SIMD, но уже с современной его частью — AVX. А так же разберём некоторые комментарии:
- медленнее ли
_mm256_load_si256
, чем прямое обращение к памяти? - влияет ли на скорость использование AVX команд над SSE регистрами?
- действительно ли так плохо использовать
_popcnt
?Читать полностью »