Сегодняшняя статья несколько необычна. Как минимум по той причине, что вместо анализа одного проекта, будем искать ошибки сразу в трёх, а также посмотрим, где найдутся наиболее интересные баги. А самое интересное — мы выясним, кто молодец и пишет самый качественный код. Итак, на повестке дня — разбор ошибок в коде проектов Firebird, MySQL и PostgreSQL.
Читать полностью »
Рубрика «c++» - 102
Сравнение качества кода Firebird, MySQL и PostgreSQL
2017-11-28 в 13:40, admin, рубрики: C, c++, cwe, data bases, firebird, Firebird/Interbase, mysql, postgresql, pvs-studio, static code analysis, базы данных, Блог компании PVS-Studio, Программирование, Си, статический анализ кодаПовторное использование кода — как это бывает на практике
2017-11-28 в 13:25, admin, рубрики: c++, reusable component, Анализ и проектирование систем, разработка игр, Совершенный кодСреди программистов очень популярны разговоры о «повторном использовании кода» — и в основном об этом говорят в позитивном ключе. Нам нравится говорить, что спроектированные нами конструкции являются «универсальными» и «пригодными к использованию в других проектах». Почему это считается хорошей вещью легко понять — всем хочется реализовать следующий проект вдвое быстрее предыдущего за счет использования уже имеющихся наработок.
Но когда дело доходит до этого на практике — чаще всего что-то идёт не так. Есть одна очень умная мысль на этот счёт: «Не пытайтесь делать код переиспользуемым, пока вы не видите как минимум три разных места, где его можно будет применить». Я считаю этот совет очень хорошим — я видел немало ситуаций, когда он помог (или помог бы) избежать одержимости попытками написания переиспользуемого кода там, где проблему можно было решить для одного конкретного случая «здесь и сейчас».
Это указывает нам на изъяны в теории о том, что переиспользование всегда является желанной и благородной целью.
Читать полностью »
Conan: менеджер зависимостей для C-C++
2017-11-27 в 18:45, admin, рубрики: C, c++, пакетный менеджер, Промышленное программирование
Здравствуйте. Сегодня речь пойдёт про Conan — современный менеджер зависимостей для C/C++. Если Вы уже активно работаете с ним, то навряд ли найдёт что-нибудь новое для себя. Иначе — прошу под кат.
Читать полностью »
Обзор дефектов кода музыкального софта. Часть 5. Steinberg SDKs
2017-11-27 в 7:14, admin, рубрики: C, c++, cubase, music, music software, open source, pvs-studio, static code analysis, steinberg, Блог компании PVS-Studio, Компиляторы, Работа со звуком, статический анализ кода
Я продолжаю обзор кода музыкальных приложений, и перед нами первый представитель коммерческого программного обеспечения. В комментариях к предыдущим статьям я заметил популярность программы Cubase и решил почитать о ней. Это продукт компании Steinberg, у которой есть несколько программ с закрытым исходным кодом. Случайно на их сайте я нашёл SDK для сторонних разработчиков, и, изучив его, обнаружил множество интересных ошибок.
Читать полностью »
Обзор дефектов кода музыкального софта. Часть 4. Ardour
2017-11-23 в 6:58, admin, рубрики: ardour, C, c++, music, music software, open source, pvs-studio, static code analysis, Блог компании PVS-Studio, Компиляторы, Работа со звуком, статический анализ кода
Ardour пока является самым крупным из музыкальных проектов, участвующих в обзоре дефектов кода. Проект включает около 1000 файлов исходного кода на языке C++. Проект активно поддерживается сообществом разработчиков, при этом я не нашёл упоминаний об использовании каких-либо инструментов статического анализа. Как следствие — множество ошибок разного характера. В статье будут описаны самые интересные из них.
Читать полностью »
Ещё один шажок к C++20. Встреча в Альбукерке
2017-11-22 в 11:55, admin, рубрики: atomic, c++, c++ библиотеки, c++17, C++20, c++2a, constexpr, IT-стандарты, modules, networking, operators, Блог компании Яндекс, Компиляторы, ПрограммированиеИз центральной части Канады — на юго-запад США! Альбукерке расположен в штате Нью-Мексико:
На встрече международного комитета по стандартизации C++, которая прошла в этом городе, приняли одно очень большое нововведение в С++20 и несколько маленьких.Читать полностью »
Драконье Стекло или рассказ о игровом редакторе Larian Studios
2017-11-20 в 15:05, admin, рубрики: .net, C#, c++, Gamedev, larian studios, wpf, Блог компании Larian Studios, никто не читает теги, разработка игрПривет! Это снова Larian Studios. Уф, у нас прошёл релиз, и теперь наконец-то появилось время продолжить делиться с вами нашим опытом и наработками.
Сегодня я расскажу о самом главном инструменте, с помощью которого родилось уже 4 проекта — о кофемашине внутреннем редакторе игры. Редактор доступен в ограниченном (для моддеров и игроков) виде в Steam/GoG, поэтому каждый, кто приобрел игру, может скачать его и попробовать бесплатно.
В статье я проведу обзор основной функциональности, коснусь некоторых архитектурных решений и расскажу немного о процессе его разработки и поддержки. Если понравится — в следующих статьях расскажу подробно о каждом элементе редактора в отдельности.
Ну и еще расскажу, чем занимаются Tools Programmer в нашей студии.
Читать полностью »
Сказ про резисторы и неонки
2017-11-19 в 16:41, admin, рубрики: c++, ардуино головного мозга, ацп, Занимательные задачки, математика, ненормальное программирование, программирование микроконтроллеров, расчёт цепей, троичная логика, цапРасчёт цепей постоянного тока на пальцах, или давайте считать ЦАП для троичной логики
Но для начала неонки, какой же русский их не любит?
Итак, снова я со своими троичными железками, но в этой статье они выступают фоном, сегодня статья про резисторы. Запаял я было несколько платок, в которые можно воткнуть газоразрядные лампы типа ИН-12 или ИН-15, но часы делать не захотел :)
О PVS-Studio в преддверии открытой конференции ИСП РАН им. В.П. Иванникова
2017-11-17 в 13:09, admin, рубрики: C, c/c++, c++, pvs-studio, tizen, tizen os, Блог компании PVS-Studio, исп ран, итоги, конференции, конференция, Разработка под Tizen, си/си++, статический анализ кодаНаучное сообщество практически незнакомо со статическим анализатором кода PVS-Studio. 30 ноября и 1 декабря состоится мероприятие «Технологии анализа, моделирования и трансформации программ» в рамках открытой конференции ИСП РАН им. В.П. Иванникова. Я уверен, что это одно из самых тематичных для нас мероприятий, где новая аудитория могла бы узнать о существовании и возможностях анализатора PVS-Studio. На мой взгляд, наиболее подходящим для этого мог стать доклад, касающийся поиска ошибок в операционной системе Tizen. К сожалению, доклад получил отрицательные отзывы рецензентов и не будет включен в программу конференции. Тем не менее, пользуясь случаем, подведу итоги наших исследований, касающихся кода Tizen.
Паттерн Model-Update-View и зависимые типы
2017-11-17 в 12:21, admin, рубрики: c++, dependent type, elm, haskell, idris, Model-Updater-View, scala, зависимые типы, интерфейсы, функциональное программирование
Model-Updater-View — функциональный паттерн, успешно применяемый в языке Elm в основном для разработки пользовательских интерфейсов. Что бы им воспользоваться надо создать тип Model, представляющий полное состояние программы, тип Message, описывающий события внешней среды, на которые программа должна реагировать, меняя свое состояние, функцию updater, которая из старого состояния и сообщения создает новое состояние прораммы и функции view, которая вычисляет по состоянию программы требуемые воздействия на внешнюю среду, которые порождают события типа Message. Паттерн очень удобный, но у него есть маленький недостаток — он не позволяет описать какие собятия имеют смысл для конкретных состояний программы.
Схожая проблема возникает (и решается) и при использовании ОО-паттерна State.
Язык Elm простой, но очень строгий — он проверяет, что функция updater хоть как-то обрабатывает все возможные сочетания модели-состояние и сообщения-события. По этому приходится писать лишний, пусть и тривиальный — как правило оставляющий модель без изменений, код. Я хочу продемонстрировать, как этого можно избежать в более сложных языках — Idris, Scala, C++ и Haskell.
Читать полностью »