C++ — TechCave

C++ — компилируемый строго типизированный язык программирования общего назначения.

C++ — компилируемый строго типизированный язык программирования общего назначения. Поддерживает разные парадигмы программирования: процедурную, обобщённую, функциональную; наибольшее внимание уделено поддержке объектно-ориентированного программирования.

Стена группы

Загрузка...
2 месяца назад
#

Проверка проекта LibrePCB с помощью PVS-Studio внутри Docker контейнера



PVS-Studio and Docker Container

Это классическая статья о том, как наша команда проверила открытый проект LibrePCB с помощью статического анализатора кода PVS-Studio. Однако статья интересна тем, что проверка осуществлялась внутри Docker контейнера. Если вы использует контейнеры, то надеемся, что статья продемонстрирует ещё один простой способ встроить анализатор в процесс разработки.

Источник
Загрузка...
2 месяца назад
#

Удивительная производительность параллельных алгоритмов C++17. Миф или Реальность?



Добрый вечер!

От нашего курса
«Разработчик C++» предлагаем вам небольшое и интересное исследование про параллельные алгоритмы.

Поехали.

С появлением параллельных алгоритмов в C++17, вы с легкостью можете обновить свой “вычислительный” код и получить выгоду от параллельного выполнения. В этой статье, я хочу рассмотреть STL алгоритм, который естественным образом раскрывает идею независимых вычислений. Можно ли ожидать 10-кратного ускорения при наличии 10-ядерного процессора? А может больше? Или меньше? Поговорим об этом.

Введение в параллельные алгоритмы



Источник
Загрузка...
2 месяца назад
#

Как Clang компилирует функцию



Я планировал написать статью о том, как LLVM оптимизирует функцию, но сначала необходимо написать, как Clang транслирует C или C++ в LLVM.

image

Источник
Загрузка...
2 месяца назад
#

Уязвимости EOS Blockchain на ZeroNights 2018



image

В рамках данной статьи будут рассмотрены несколько реальных уязвимостей в EOS blockchain (одном из конкурентов Ethereum) и то, как они были встроены в
конкурс New-Generation Secure Slot Machine на ZeroNights 2018. Если вам интересно познакомиться с тем, как обстоят дела с безопасностью в этой сети blockchain, то welcome под кат.

Источник
Загрузка...
2 месяца назад
#

Профилирование кода с LLVM



Проклятие недетерминизма



Моя первая попытка написать проход LLVM — люблю эти сегфолты

Недавно я столкнулся с интересной задачей — мне понадобился детерминированный и кросплатформенный способ определения времени выполнения кода С++. Под словом «детерминированный» я подразумеваю, что один и тот же код будет выполняться за одно и то же количество единиц времени. Под кроссплатформенностью я понимаю, что один и тот же код под Windows и под Ubuntu будет выполняться за одно и то же количество единиц времени.

Естественно, измерение времени на CPU не удовлетворяет этим условиям. Машинный код меняется в зависимости от архитектуры и операционной системы, и один и тот же код займёт различное количество времени при выполнении. Даже на одной и той же машине, такие факторы, как промахи кэша, будут играть большую роль — достаточную для того, чтобы исказить результаты измерения времени выполнения одного и того же кода. Мне нужно было что-либо более умное…

Источник
Загрузка...
2 месяца назад
#

Усложняя стандартный пример



Стандартная библиотека С++ предлагает не только набор классов, но также определяет способ написания программ. В рамках данной статьи рассматриваются общие требования к реализации программ при помощи STL.

Рассмотрим следующую задачу:

Считать из файла input.txt массив целых чисел, разделенных пробельными символами. Отсортировать их и записать в файл output.txt


Источник
Загрузка...
2 месяца назад
#

Иголка в стоге сессий, или Байт-код регулярных выражений





17 млрд событий, 60 млн пользовательских сессий и огромное количество виртуальных свиданий происходят в Badoo ежедневно. Каждое событие аккуратно сохраняется в реляционные базы данных для последующего анализа на SQL и не только.



Современные распределённые транзакционные базы данных с десятками терабайт данных — настоящее чудо инженерной мысли. Но SQL как воплощение реляционной алгебры в большинстве стандартных реализаций пока не позволяет формулировать сложные запросы в терминах упорядоченных последовательностей кортежей.



В последней статье из серии, посвящённой виртуальным машинам, я расскажу про альтернативный подход к поиску интересных сессий — движок регулярных выражений («Поросячий Матчер»), определённых для последовательностей событий.



Виртуальная машина, байт-код и компилятор прилагаются бесплатно!



Источник
Загрузка...
2 месяца назад
#

Внутренняя и внешняя линковка в C++



Всем добрый день!

Представляем вам перевод интересной статьи, который подготовили для вас рамках курса
«Разработчик C++». Надеемся, что она будет полезна и интересна для вас, как и нашим слушателям.

Поехали.

Сталкивались ли вы когда-нибудь с терминами внутренняя и внешняя связь? Хотите узнать, для чего используется ключевое слово extern, или как объявление чего-то static влияет на глобальную область? Тогда эта статья для вас.

В двух словах

В единицу трансляции включены файл реализации (.c/.cpp) и все его заголовочные файлы (.h/.hpp). Если внутри единицы трансляции у объекта или функции есть внутреннее связывание, то этот символ виден компоновщику только внутри этой единицы трансляции. Если же у объекта или функции есть внешнее связывание, то компоновщик сможет видеть его при обработке других единиц трансляции. Использование ключевого слова static в глобальном пространстве имен дает символу внутреннее связывание. Ключевое слово extern дает внешнее связывание.

Компилятор по умолчанию дает символам следующие связывания:

  • Non-const глобальные переменные — внешнее связывание;

  • Const глобальные переменные — внутреннее связывание;

  • Функции — внешнее связывание.





Источник
Загрузка...
Den
2 месяца назад
#

И снова в космос: как единорог Stellarium посещал



За все время своего существования люди приложили колоссальное количество усилий, чтобы изучить практически всю площадь звездного неба. На сегодняшний день мы рассмотрели сотни тысяч астероидов, комет, туманностей и звезд, галактик и планет. Чтобы увидеть всю эту красоту самостоятельно, не обязательно выходить из дома и покупать себе телескоп. Можно установить на компьютер Stellarium — виртуальный планетарий, и посмотреть на ночное небо, с комфортом лежа на диване… Но с комфортом ли? Чтобы выяснить ответ на этот вопрос, проверим Stellarium на наличие ошибок в компьютерном коде.




Источник
Загрузка...
2 месяца назад
#

У Интернета могут быть серьёзные проблемы из-за языков, подобных C и C++, которые способствуют появлению уязвимостей



Привет, Хабр! Представляю вашему вниманию перевод статьи "
Internet aurait de sérieux problèmes à cause de langages comme C et C++ favorisant la survenue de failles" (фр. язык).

Но мало кого из разработчиков это волнует

Один баг затрагивает iPhone, другой – Windows, а третий – сервера, работающие на Linux. На первый взгляд эти баги не имеют ничего общего, так как касаются разных платформ: Android, iOS, macOS, Windows, Linux. Однако, на самом деле, всё иначе, по мнению Алекса Гейнора, инженера по безопасности программного обеспечения в Mozilla, ранее работавшего в USDS (United States Digital Service).

[1]Подробнее —
https://www.usds.gov, здесь и далее прим. переводчика.

Во время третьего «Weakest Link», ежегодного мероприятия, организованного Motherboard Vice,

[2]Подробнее —
https://motherboard.vice.com/en_us

на тему компьютерного взлома и кибербезопасности в будущем, Алекс Гейнор поднял серьезную проблему, которая, по его мнению, может угрожать Интернету, но, как ни парадоксально, оставляет разработчиков совершенно равнодушными.

Гейнор объяснил, что три ранее упомянутые ошибки существуют, потому что программное обеспечение, которое они затрагивают на разных платформах, было написано с помощью языков программирования, имеющих неприятную тенденцию способствовать возникновению ошибок типа «memory unsafety», разрешая доступ к невыделенным областям памяти.

[3]Скорее всего, имелось в виду, что обращение к 6 элементу массива, состоящего из 5 элементов, допустимо, хотя в других языках программирования, более «безопасных», как минимум будет выведено сообщение об ошибке.

Эта категория ошибок может привести к багам и уязвимостям безопасности во время получения доступа к памяти.

Источник
Загрузка...
2 месяца назад
#

PVS-Studio: поддержка стандартов кодирования MISRA C и MISRA C++



PVS-Studio, MISRA C, MISRA C++

Начиная с версии 6.27 статический анализатор кода PVS-Studio может классифицировать свои предупреждения согласно стандартам MISRA C и MISRA C++. Благодаря поддержке этих стандартов анализатор стало возможным эффективно использовать для улучшения безопасности, переносимости и надежности программ для встраиваемых систем.

Источник
Загрузка...
2 месяца назад
#

Краткий гид по обучению С++: что, когда и на чём создавать





Недавно у нас на GeekBrains стартовал свежий курс "
Профессия: разработчик C++". Программа позволит всего за 9 месяцев освоить этот непростой язык и стать специалистом уровня junior. А это непростая задача. К примеру, в школах и ВУЗах на изучение С++ уходит минимум 2 года, чаще 4-5. Чтобы показать из чего состоит этот нелегкий путь, мы схематично описали для вас основные этапы.

Источник
Загрузка...
2 месяца назад
#

DEV Labs 2018. Онлайн-митап для C++ разработчиков. 15 декабря



testУважаемые коллеги!

Приглашаем вас на финальный митап серии DEV Labs в 2018 году, который состоится 15 декабря и будет посвящён разработке на C++.

Для этого митапа мы собрали программу из трёх докладов, основанных на реальных примерах из каждодневной рабочей практики.

Подробнее оп программе:

testМногопоточный С++ STL на графических процессорах. Дмитрий Микушин расскажет о том, почему программировать GPU трудно, но нужно и покажет реализацию некоторых подходов с помощью Thrust;

test
Агрегатирование сборки сложного проекта. Андрей Вуколов рассмотрит применимость агрегатированной сборки в проекте с учетом встроенности в существующий ПАК и агрегатирует сборку на примерах qmake и CMake;

test
«Что сейчас произошло?!» Станислав Ивочкин, отвечая на вопрос – «Что происходит после нажатия Enter в строке браузера?», заглянет под капот одного из простейших действий, совершаемых пользователем. Посмотрим на работу парсеров, компиляторов и интерпретаторов, графических фрейворков и системных библиотекю

Источник
Загрузка...
2 месяца назад
#

Три вида утечек памяти



Здравствуйте, коллеги.

Наши долгие поиски неустаревающих бестселлеров по оптимизации кода пока дают лишь первые результаты, но мы готовы вас порадовать, что буквально только что закончен перевод легендарной книги Бена Уотсона "
Writing High Performance .NET Code". В магазинах — ориентировочно в апреле, следите за рекламой.

А сегодня предлагаем вам почитать сугубо практическую статью о наиболее насущных видах утечек оперативной памяти, которую написал
Нельсон Ильхейдж (Nelson Elhage) из компании
Stripe.

Источник
Загрузка...
2 месяца назад
#

Полное руководство по CMake. Часть вторая: Система сборки





Введение

В данной статье рассмотрено использование системы сборки CMake, применяемой в колоссальном количестве проектов на C/C++. Строго рекомендуется прочитать первую часть руководства во избежание непонимания синтаксиса языка CMake, явным образом фигурирующего на протяжении всей статьи.



Источник
Загрузка...
1 2 4 5

Авторизация

Пользователи

Андрей Подольский
Kumskov
Juan
Tutu
naikdij88
NewEXE
Георгiй Москвитинъ
Andpyxa Tutunnik
Andrey_fox

GeekBrains

КАРКАМ

Нетология