Библиотека C/C++ разработчика | cpp, boost, qt
20.9K subscribers
1.58K photos
42 videos
16 files
3.75K links
Все самое полезное для плюсовика и сишника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d6cd2932

Наши каналы: https://yangx.top/proglibrary/9197

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
加入频道
🔢 Как научиться решать сложные задачи

Нам может не даваться решение сложных математических задач по многим причинам: от стереотипов до негативного школьного опыта. К счастью, это можно исправить. В карточках перечислили лучшие на наш взгляд книги, которые помогут понять, полюбить и подтянуть математику.

Ещё больше книг, а также курсы, игры, методики и приложения — в нашей статье 👈
🎉🎉 Выпуск среды разработки Qt Creator 12

Qt Creator (ранее известная под кодовым названием Greenhouse) — свободная IDE для разработки на С, C++, JavaScript и QML. Разработана Trolltech (Digia) для работы с фреймворком Qt. Включает в себя графический интерфейс отладчика и визуальные средства разработки интерфейса как с использованием QtWidgets, так и QML. Поддерживаемые компиляторы: GCC, Clang, MinGW, MSVC, Linux ICC, GCCE, RVCT, WINSCW.

В состав Qt Creator входит передовой инструмент Qt Designer, позволяющий создавать внешний вид окна приложения, добавляя и перетаскивая элементы по аналогии Windows Forms в Visual Studio. В качестве систем сборки используются qmake, cmake и autotools

Что было добавлено?

🔹 Интегрированный обозреватель компиляторов
🔹 Отладка и профилирование CMake
🔹 Запись экрана

Полный список всех изменений

Читать статью

#новость
🎯✏️ Реализация #embed для C и C++

Речь пойдет о реализации директивы бинарного включения данных в gcc и clang для C и C++.

Автор опишет способ, которым реализовал #embed для GCC и Clang, и стиль работы, который использовал для ранней версии #embed. Будет использоваться общедоступная версия #embed, которая предложена Clang, в качестве инструмента для отображения одного из используемых методов, позволяющих получить гарантированное ускорение для подмножества случаев, которые имеют значение (например, инициализация массива char/signed char/unsigned char).

Изучить материал

#гайд
👬👬 Параллельное программирование

00:34 — Основы исполнения кода
01:09 — Основы операционных систем
02:01 — Параллельное и конкурентное исполнение кода
02:42 — Примитивы синхронизации
03:45 — Основы архитектуры компьютера
04:06 — Атомики
04:51 — Проблемы параллельного программирования
05:23 — Продвинутые примитивы синхронизации
06:02 — Паттерны параллельного программирования
06:46 — Ввод-вывод
07:15 — Барьеры памяти
08:03 — Продвинутая архитектура компьютера
08:57 — Алгоритмы синхронизации
09:56 — Lock-free структуры данных
10:30 — Wait-free структуры данных
10:45 — Как изучать параллельное программирование

#видео
🤔 очередной #дайджест по С++

🔺 Книга Beginning C++23: From Beginner to Pro — путь программирования на языке C++ с основ и пошаговых примеров, которые помогут вам стать опытным программистом

🔺 Создание своего терминала на C++ и Qt — минималистичный терминал для Linux на основе Qt 5 и qtermwidget5

🔺 Фильтруем логи санитайзеров и valgrind на примере приложения с Qt — решение периодически встречающейся проблемы кода на С и C++ с утечками памяти и неопределенным поведением

🔺 SObjectizer Tales — построению программ на основе акторной модели с помощью SObjectizer

🔺 Осенний митап по стандартам ISO C++ — что вошло в C++26 (pack indexing, linalg, debugging); что вот-вот войдет, но требуют небольших доработок (contracts, reflection)
Что из следующего вернет новый элемент в конце контейнера?
Anonymous Quiz
31%
push_back
4%
front
37%
back
27%
pop_back
❗️Мы запускаем серию исследований — и вы можете нам в этом помочь!

«Библиотека программиста» выпустит несколько статей, в которых мы проведем полноценные исследования.

Помогите нам выбрать интересные темы: может быть, вы давно хотели узнать, как изменилась зарплата у тех, кто релоцировался? Или гадаете, сколько лет нужно, чтобы стать миддлом?

Присылайте интересующие вас темы в комментарии — интересные мы возьмем в работу и поделимся с вами результатами 💙
Please open Telegram to view this post
VIEW IN TELEGRAM
👁Помогите «Библиотеке программиста» лучше узнать свою аудиторию

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

Пожалуйста, ответьте на несколько вопросов — это поможет нам делать более полезные и интересные посты!

Первая часть опроса 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
🫡 💩 Для обработки строк потоки в C++ могут быть медленными

Потоки могут быть на удивление медленными. Например, если вы хотите анализировать числа, то эта процедура C++ близка к наихудшему возможному выбору с точки зрения производительности:

std::stringstream in(mystring);
while(in >> x) {
sum += x;
}
return sum;


Проведем эксперимент — возьмем строки, содержащие символ «%», и создадим новые, в которых символ % заменен на %25, но остальная часть строки остается неизменной.

Простая конструкция строки выглядит следующим образом:

std::string string_escape(const std::string_view file_path) {
std::string escaped_file_path;
for (size_t i = 0; i < file_path.length(); ++i) {
escaped_file_path += file_path[i];
if (file_path[i] == '%')
escaped_file_path += «25»;
}
return escaped_file_path;
}


Оптимизированная версия с использованием потоков выглядит следующим образом:

std::string stream_escape(const std::string_view file_path) {
std::ostringstream escaped_file_path;
for (size_t i = 0; i < file_path.length(); ++i) {
escaped_file_path << file_path[i];
if (file_path[i] == '%')
escaped_file_path << «25»;
}
return escaped_file_path.str();
}


Продолжить изучение

#гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
🚶‍♂️🚏 Embox отправляется на Vostok

Эта статья — своеобразный (расширенный) анонс того, что Embox перенесен на микроконтроллеры еще одного производителя микроэлектроники в РФ. Речь идет о платформе Vostok базирующейся на микроконтроллерах ГК «Элемент».

«Восток» базируется на идее построения экосистемы вокруг отечественной электроники через предоставление пользователям готовых программно-аппаратных решений. Причем эти решения ориентированы на очень широкий класс пользователей: от обучения школьников робототехнике (уже разработан аналог ARDUINO) и до промышленной автоматики и роботов.

Embox:

🔹 открытый проект,
🔹 позволяет пользоваться экосистемой Linux,
🔹 позволяет привычно разрабатывать,
🔹 позволяет получить оптимизированную под конкретные цели систему,
🔹 имеет поддержку в РФ.

Читать статью

#почитать
🚏🐕 Вышел начальный релиз ядра БМПОС (Базовая Модульная Платформа Операционных Систем) 0.1.231

Вышел начальный релиз ядра БМПОС (Базовая Модульная Платформа Операционных Систем) 0.1.231 в рамках разработки обучающей платформы для системных программистов. Открытый проект БМПОС задуман и создаётся сообществом как обучающее пособие по разработке операционных систем с развитой теоретической и практической базой. Это отечественное программное обеспечение, созданное при поддержке Синапс ОС на языке программирования C.

Разработка проекта нацелена на получение обучающимися знаний по минимально необходимой кодовой базе, формирование навыков постройки простой и понятной архитектуры и максимального упрощения кода.

БМПОС имеет небольшой размер бинарных файлов, что способствует достижению высокой надёжности и упрощению процессов сборки и тестирования.

Проект БМПОС не ставит перед собой цели использования вне виртуальных машин. Там поддерживается только модульная сборка со встраиваемыми на этапе компиляции модулями. В феврале 2024 года планируется полноценный релиз платформы БМПОС с полным набором драйверов, включая гостевые расширения QEMU и VirtualBox.

Продолжение здесь

#новость