Я регулярно проверяю различные открытые проекты, чтобы продемонстрировать возможности статического анализатора кода PVS-Studio (C, C++, C#). Настало время компилятора GCC. Бесспорно, GCC — это очень качественный и оттестированный проект, поэтому найти в нём хотя бы несколько ошибок уже большое достижение для любого инструмента. К моей радости, PVS-Studio справился с этой задачей. Никто не застрахован от опечаток и невнимательности. Именно поэтому PVS-Studio может стать вашей дополнительной линией обороны на фронте бесконечной войны с багами.
Читать полностью »
Рубрика «Си» - 10
Находим ошибки в коде компилятора GCC с помощью анализатора PVS-Studio
2016-08-31 в 13:47, admin, рубрики: bugs, C, c++, gcc, GNU Compiler Collection, pvs-studio, PVS-Studio for Linux, static code analysis, Блог компании PVS-Studio, информационная безопасность, ошибки в коде, Разработка под Linux, Си, статический анализ кодаНовый рейтинг языков программирования от IEEE Spectrum оказался своебразным
2016-07-28 в 15:45, admin, рубрики: java, исследование, Исследования и прогнозы в IT, популярность, разработка по, рейтинги, Си, статистика, языки программирования
Чтобы привести аргументы в споре о том, какой язык программирования популярнее, участники дискуссии часто ссылаются на те или иные исследования. Хорошо, что в последнее время количество подобных исследований растет — выбирай любое.
А что, если с ростом всевозможных индексов, списков и рейтингов усилятся споры между самими исследователями? На что будут ссылаться они в своей аргументации?
Журнал IEEE Spectrum представил общественности плод коллективного труда – новый рейтинг языков программирования.
Постоянные лидеры рейтинга не упали с пьедестала, однако без сюрпризов все-таки не обошлось.
Как пишет издание, у исследователей не было возможности «посмотреть через плечо каждого программиста» и увидеть, какой язык он использует. Поэтому они пошли другим путем: исследовали чаты, open source сообщество, а также объявления о вакансиях. Рейтинг также учитывает результаты поиска в Google, Twitter, GitHub, StackOverflow, Reddit, Hacker News, CareerBuilder, Dice. Кроме того, в рейтинге отражены данные собственной цифровой библиотеки Institute of Electrical and Electronics Engineers (Институт инженеров электротехники и электроники) – Xplore Digital Library.Читать полностью »
PVS-Studio признаётся в любви к Linux
2016-07-28 в 14:17, admin, рубрики: C, c++, clang, gcc, linux, pvs-studio, PVS-Studio for Linux, PVS-Studio для Linux, Блог компании PVS-Studio, Разработка под Linux, Си, статический анализ кода, статический анализатор кодаЭто заметка о любви. О любви статического анализатора кода PVS-Studio к замечательной открытой операционной системе Linux. Эта любовь молода, трогательная и ранима. Этой любви нужно помочь укрепиться. Вы поможете, если заранее запишитесь в добровольцы для тестирования beta-версии PVS-Studio for Linux.
Читать полностью »
История языка Си: 100% «чистый» Си, без единого «плюса»
2016-06-24 в 11:55, admin, рубрики: C, Деннис Ритчи, Компиляторы, Программирование, разработка по, Си, системное программирование, успех, языки программирования
Популярность языка программирования Си трудно переоценить, особенно вспоминая его былые заслуги. Наверное, каждый разработчик, как минимум, знает о его существовании, и, как максимум, пробовал на нем программировать. Си является предшественником таких языков, как C++, Objective-C, C#, Java.
Компания Microsoft для разработки родного языка к своей платформе .Net выбрала именно Си-подобный синтаксис. Более того, на Си написано множество операционных систем.
Конечно, Си не идеален: создатели языка – Кен Томпсон и Деннис Ритчи – долгое время дорабатывали его. Стандартизация Си продолжается до сих пор. Он существует более 45 лет и активно используется.
С ним часто ассоциируют не один, а два языка программирования — C/C++. Однако ниже речь пойдет именно о «чистом» Си.Читать полностью »
Как я ускорял strstr
2016-06-22 в 8:33, admin, рубрики: алгоритм, Алгоритмы, поиск подстроки в строке, Программирование, СиПонадобилось мне недавно написать аналог функции strstr(поиск подстроки в строке). Я решил его ускорить. В результате получился алгоритм. Я не нашел его по первым ссылкам в поисковике, зато там куча других алгоритмов, поэтому и написал это.
График сравнения скорости работы моего алгоритма, с функцией strstr на 600 кб тексте русскоязычной книги, при поиске строк размером от 1 до 255 байт:
Стандарты кодирования и другие практики в IT
2016-06-21 в 14:49, admin, рубрики: Программирование, СиМного приходится читать и обсуждать разные стандарты кодирования, ограничивающие применение тех или иных конструкций языка (goto, множественное наследование классов в C++) или приемов программирования (рекурсия, динамическое выделение памяти после инициализации приложения). Применительно к С/С++, наиболее известными стандартами кодирования являются MISRA, HICPP, Google C++ Style Guide. Интересной является и статья на Хабре про 10 правил, которые позволяют NASA писать миллионы строк кода с минимальными ошибками.
Под катом немного юмора и серьезных рассуждений о применении различных практик ведения проектов.
Читать полностью »
10 правил, которые позволяют NASA писать миллионы строк кода с минимальными ошибками
2016-06-13 в 12:37, admin, рубрики: JPL, Блог компании «Hexlet», космические корабли, наса, обучение, отладка, Программирование, Си, хекслет
Маргарет Гамильтон стоит рядом с написанным ей исходным кода бортового компьютера «Аполлона»
Лаборатория реактивного движения (Jet Propulsion Laboratory) — научно-исследовательский центр НАСА, ответственный за большинство беспилотных космических кораблей США. Там пишут много кода, и права на ошибку у них намного меньше, чем у обычных программистов.
В JPL пишут на Си, и на их сайте есть документ "JPL Institutional Coding Standard", описывающий жесткие стандарты кодирования внутри организации. Они напоминают правила программирования для встроенных (embedded) систем и систем реального времени, с ограниченными ресурсами. Но многие из правил эти просто принципы хорошего программирования. Ограничение сложности, максимальное упрощение для последующего чтения кода и отладки, отсутствие побочных эффектов. Мы в Хекслете постоянно говорим об этом в вебинарах и, конечно, в самих курсах. Мы считаем очень важным как можно раньше поднимать эти темы, поэтому про функции и побочные эффекты начинаем говорить в самом первом курсе «Основы программирования», который рассчитан на новичков. Это бесплатный курс, кстати, и в нем есть практика на языке JavaScript.
В документе JPL есть много правил, но пользователь Реддита сделал выжимку десяти главных принципов. Вот перевод этого списка.Читать полностью »
Проверка PHP 7
2016-04-28 в 10:41, admin, рубрики: C, open source, php, pvs-studio, static code analysis, Блог компании PVS-Studio, Си, статический анализ кода
Повторная проверка проектов нередко бывает весьма интересной. Она позволяет узнать, какие новые ошибки были допущены в ходе разработке приложения, а какие ошибки уже были исправлены. Раньше мой коллега уже писал о проверке PHP. С выходом новой версии (PHP7), я решил ещё раз проверить исходный код интерпретатора и нашёл кое-что интересное.
Читать полностью »
Логические выражения в C-C++. Как ошибаются профессионалы
2016-04-11 в 6:40, admin, рубрики: C, c++, pvs-studio, Блог компании PVS-Studio, Си Логическое выражение в программировании — конструкция языка программирования, результатом вычисления которой является «истина» или «ложь». Во многих книгах по программированию, предназначенных для изучения языка «с нуля», приводятся возможные операции над логическими выражениями, с которыми сталкивался каждый начинающий разработчик. В этой статье я не буду рассказывать, что оператор 'И' приоритетнее оператора 'ИЛИ'. Я расскажу о распространённых ошибках в простых условных выражениях, состоящих всего из трёх операторов, и покажу, как можно проверить свой код с помощью построения таблиц истинности. Описанные ошибки делают разработчики таких известных проектов как FreeBSD, Microsoft ChakraCore, Mozilla Thunderbird, LibreOffice и многих других.
Читать полностью »
Проверка проекта Samba с помощью PVS-Studio под Linux
2016-04-04 в 11:41, admin, рубрики: C, c/c++, c++, linux, open source, pvs-studio, samba, Блог компании PVS-Studio, ошибки в коде, Разработка под Linux, СиЕсли вы следили за новостями о последних разработках в области инструментов анализа C/C++ кода, то, должно быть, слышали про инструмент PVS-Studio. Я узнал о нем благодаря статьям, которые разработчики публикуют на своем сайте и в которых они рассказывают о проверках проектов с открытым кодом. К настоящему времени уже проверено внушительное число проектов, включая ядро Linux, Qt, Unreal и т.д., и каждый раз им удается находить интересные ошибки, подолгу живущие в коде, никем не обнаруженные. Опечатки, неаккуратное копирование, неопределенное поведение, бессмысленный код, синтаксические ошибки, которые чудесным образом пропускаются компилятором…
Как сказал Джон Кармак, "Все, что является допустимым с точки зрения синтаксиса и пропускается компилятором, в конце концов окажется в вашей кодовой базе".
Читать полностью »