🔥 Переходим на C++26: как собрать и настроить GCC в Ubuntu
💡 С выходом GCC 15.1.0 многие ключевые возможности C++26 уже доступны для использования, и при этом вы можете настроить этот компилятор даже на Ubuntu 24.04 LTS.
❗ Ключевые моменты:
• Pack Indexing — доступ к элементам parameter pack по индексу
• Constexpr Placement New — размещающее выделение памяти в constexpr контекстах
• Variadic Friends — объявление множества классов друзьями через шаблонный parameter pack
• Deleted Function with Reason — возможность указать причину удаления функции
Статья подробно описывает как правильно собрать и настроить GCC 15.1 с нуля, а также содержит практические примеры кода для каждой новой фичи C++26, поддерживаемой в этой версии компилятора.
Особенно полезно для C++ разработчиков, которые хотят быть на острие прогресса и уже сейчас начать экспериментировать с будущими возможностями языка.
Библиотека C/C++ разработчика
А вы всё ещё ждёте, когда новые фичи C++26 появятся в вашем компиляторе?
💡 С выходом GCC 15.1.0 многие ключевые возможности C++26 уже доступны для использования, и при этом вы можете настроить этот компилятор даже на Ubuntu 24.04 LTS.
❗ Ключевые моменты:
• Pack Indexing — доступ к элементам parameter pack по индексу
• Constexpr Placement New — размещающее выделение памяти в constexpr контекстах
• Variadic Friends — объявление множества классов друзьями через шаблонный parameter pack
• Deleted Function with Reason — возможность указать причину удаления функции
Статья подробно описывает как правильно собрать и настроить GCC 15.1 с нуля, а также содержит практические примеры кода для каждой новой фичи C++26, поддерживаемой в этой версии компилятора.
Особенно полезно для C++ разработчиков, которые хотят быть на острие прогресса и уже сейчас начать экспериментировать с будущими возможностями языка.
Библиотека C/C++ разработчика
👍8😁5
Forwarded from Книги для программистов
📖 Обзор книги «C++ Memory Management: Write Leaner and Safer C++ Code Using Proven Memory-Management Techniques»
Направление: #proglib_cpp_memory
Уровень: #proglib_intermediate
Это практическое руководство по управлению памятью в C++, написанное Патрисом Руа — участником комитета стандартизации ISO C++.
Книга предназначена для разработчиков, стремящихся углубить свои знания в области эффективного и безопасного управления памятью в C++-программах.
🔹 Основные темы
— Модель объектов в C++ и управление временем жизни
— Использование и создание умных указателей
— Перегрузка операторов выделения памяти
— Разработка собственных контейнеров и аллокаторов
— Механизмы управления памятью: арены, отложенное освобождение
— Реализация детекторов утечек памяти
— Современные практики и стандарты C++
💬 Что говорят читатели
➕ Плюсы
— Автор — участник комитета ISO C++, что обеспечивает актуальность и глубину материала
— Практические примеры и пошаговые инструкции
— Подходит для разработчиков, работающих с системами реального времени, встроенными системами и играми
➖ Минусы
— Требуется базовое понимание C++ и концепций управления памятью
🔗 Скачать книгу
🐸 Книги для программистов
Направление: #proglib_cpp_memory
Уровень: #proglib_intermediate
Это практическое руководство по управлению памятью в C++, написанное Патрисом Руа — участником комитета стандартизации ISO C++.
Книга предназначена для разработчиков, стремящихся углубить свои знания в области эффективного и безопасного управления памятью в C++-программах.
🔹 Основные темы
— Модель объектов в C++ и управление временем жизни
— Использование и создание умных указателей
— Перегрузка операторов выделения памяти
— Разработка собственных контейнеров и аллокаторов
— Механизмы управления памятью: арены, отложенное освобождение
— Реализация детекторов утечек памяти
— Современные практики и стандарты C++
Эта книга полна подробных знаний о C++ и управлении памятью. Отличное чтение
Мне особенно понравилась часть о написании обобщённых контейнеров. Это определённо превзошло мои ожидания!
В C++ действительно нужно управлять памятью, и то, как Патрис объясняет, как это делать правильно, очень ценно
➕ Плюсы
— Автор — участник комитета ISO C++, что обеспечивает актуальность и глубину материала
— Практические примеры и пошаговые инструкции
— Подходит для разработчиков, работающих с системами реального времени, встроенными системами и играми
➖ Минусы
— Требуется базовое понимание C++ и концепций управления памятью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Рынок IT-специалистов в Европе является одним из самых динамичных и конкурентных в мире. Западная и Восточная Европа представляют собой два уникальных «региона» с разными экономическими, культурными и образовательными особенностями, которые влияют на процессы найма IT-специалистов.
Цель данной статьи — провести сравнительный анализ подходов к найму IT-специалистов в этих европейских зонах, выделить ключевые различия и сходства.
#cвежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍1😁1
🚀 Jank — функциональный язык для любителей Lisp и Clojure!
🔹 Что такое Jank?
Jank — это Lisp-подобный язык программирования, вдохновлённый Clojure, но с компиляцией в нативный код через LLVM. Он сочетает в себе мощь функционального программирования и производительность C++.
🔹 Почему стоит попробовать?
✅ Близок к Clojure — если вы уже знакомы с Clojure, освоите Jank быстро
✅ Нативная компиляция — LLVM бэкенд даёт хорошую скорость
✅ Взаимодействие с C++ — можно легко интегрировать существующие библиотеки
Jank стремится быть хорошо совместимым с Clojure. В то время как хостом Clojure по умолчанию является JVM, а взаимодействие осуществляется с Java, хостом Jank является LLVM, а взаимодействие осуществляется с C++.
👉 Github
Библиотека C/C++ разработчика
🔹 Что такое Jank?
Jank — это Lisp-подобный язык программирования, вдохновлённый Clojure, но с компиляцией в нативный код через LLVM. Он сочетает в себе мощь функционального программирования и производительность C++.
🔹 Почему стоит попробовать?
✅ Близок к Clojure — если вы уже знакомы с Clojure, освоите Jank быстро
✅ Нативная компиляция — LLVM бэкенд даёт хорошую скорость
✅ Взаимодействие с C++ — можно легко интегрировать существующие библиотеки
Jank стремится быть хорошо совместимым с Clojure. В то время как хостом Clojure по умолчанию является JVM, а взаимодействие осуществляется с Java, хостом Jank является LLVM, а взаимодействие осуществляется с C++.
👉 Github
Библиотека C/C++ разработчика
❤3👍1🤩1🌚1
💡 Статья Максима Белова на Хабре разбирает, почему чистый код — это не просто эстетика, а прагматичный подход к разработке, который экономит время и нервы всей команды.
❗️ Ключевые моменты статьи:
• Чистый код — это код, понятный людям, а не только компилятору
• Технический долг накапливается, как снежный ком, и усложняет поддержку проекта
• Принципы SOLID, DRY и KISS — основа для создания гибкой и поддерживаемой архитектуры
Основной фокус — как превратить «спагетти-код» в элегантное и читаемое решение, используя проверенные практики и инструменты.
Особенно актуально для разработчиков, тимлидов и архитекторов, которые хотят снизить количество багов и ускорить разработку.
Вы узнаете, что инвестиции в чистый код окупаются быстрее, чем кажется: проекты с высокой читаемостью содержат в 15 раз меньше дефектов, а их поддержка требует на 124% меньше времени.
Библиотека C/C++ разработчика
❗️ Ключевые моменты статьи:
• Чистый код — это код, понятный людям, а не только компилятору
• Технический долг накапливается, как снежный ком, и усложняет поддержку проекта
• Принципы SOLID, DRY и KISS — основа для создания гибкой и поддерживаемой архитектуры
Основной фокус — как превратить «спагетти-код» в элегантное и читаемое решение, используя проверенные практики и инструменты.
Особенно актуально для разработчиков, тимлидов и архитекторов, которые хотят снизить количество багов и ускорить разработку.
Вы узнаете, что инвестиции в чистый код окупаются быстрее, чем кажется: проекты с высокой читаемостью содержат в 15 раз меньше дефектов, а их поддержка требует на 124% меньше времени.
Библиотека C/C++ разработчика
🔥6
Forwarded from Библиотека задач по C++ | тесты, код, задания
Forwarded from Библиотека задач по C++ | тесты, код, задания
Результат использования std::function?
Anonymous Quiz
47%
empty
25%
Ничего не выведет
20%
Исключение std::bad_function_call
9%
Неопределённое поведение
🔥 Vita3K — эмулятор PS Vita на C++: как это работает?
Проект Vita3K — это открытый эмулятор, написанный на C++, который позволяет запускать игры Sony PlayStation Vita на ПК.
🔧 Особенности
• Производительность: Эмуляция требует точного и быстрого кода, а C++ дает низкоуровневый контроль над железом
• Кросс-платформенность: Благодаря CMake и стандартам C++, проект собирается под Windows, Linux и macOS
• Оптимизация: Использование многопоточности, SIMD-инструкций (SSE, AVX) и Vulkan/DirectX для рендеринга
💡 Интересные технические детали:
• HLE (High-Level Emulation): Эмуляция системных вызовов вместо точного воспроизведения железа
• JIT-компиляция: Для ускорения выполнения ARM-кода на x86 CPU
• OpenGL/Vulkan: Рендеринг графики с поддержкой шейдеров
👉 Официальный сайт
👉 Github
Библиотека C/C++ разработчика
Проект Vita3K — это открытый эмулятор, написанный на C++, который позволяет запускать игры Sony PlayStation Vita на ПК.
🔧 Особенности
• Производительность: Эмуляция требует точного и быстрого кода, а C++ дает низкоуровневый контроль над железом
• Кросс-платформенность: Благодаря CMake и стандартам C++, проект собирается под Windows, Linux и macOS
• Оптимизация: Использование многопоточности, SIMD-инструкций (SSE, AVX) и Vulkan/DirectX для рендеринга
💡 Интересные технические детали:
• HLE (High-Level Emulation): Эмуляция системных вызовов вместо точного воспроизведения железа
• JIT-компиляция: Для ускорения выполнения ARM-кода на x86 CPU
• OpenGL/Vulkan: Рендеринг графики с поддержкой шейдеров
👉 Официальный сайт
👉 Github
Библиотека C/C++ разработчика
👍3
🔥 Конкурс: 30 000 ₽ за самую смешную IT-новость
Напоминаем о конкурсе «Библиотеки программиста»: напишите самую смешную версию реальной новости про технологии.
👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.
🎁 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе
🏆 Как будем оценивать:
Мы выложим новости всех участников в одном из наших телеграм-каналов. Те новости, которые наберут больше всего охвата, войдут в шорт-лист. Из шорт-листа подписчики и жюри выберут победителя.
📅 Сроки: прием новостей до 11 мая включительно
Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8
Осталась неделя — ждем ваших новостей!
Напоминаем о конкурсе «Библиотеки программиста»: напишите самую смешную версию реальной новости про технологии.
👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.
🎁 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе
🏆 Как будем оценивать:
Мы выложим новости всех участников в одном из наших телеграм-каналов. Те новости, которые наберут больше всего охвата, войдут в шорт-лист. Из шорт-листа подписчики и жюри выберут победителя.
📅 Сроки: прием новостей до 11 мая включительно
Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8
Осталась неделя — ждем ваших новостей!
Google Docs
Конкурс на самую смешную IT-новость
Библиотека программиста запускает конкурс, который взорвет вашу ленту: создайте самую смешную альтернативную версию реальной IT-новости!
Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переворачиваете её с ног на голову, чтобы смеялись…
Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переворачиваете её с ног на голову, чтобы смеялись…
📌 C++26 — предварительный релиз
Что нового:
• Pack Indexing: Теперь можно обращаться к элементам параметрических паков с помощью знакомого синтаксиса
• std::execution (Senders/Receivers): Новая модель асинхронного программирования, позволяющая строить эффективные и безопасные параллельные приложения
• Контракты и Рефлексия: Введение контрактов для явного определения предусловий и постусловий функций, а также рефлексии для анализа структуры программ на этапе компиляции
• Stackful Coroutines: Поддержка корутин с собственным стеком, упрощающая написание асинхронного кода в линейном стиле
Зачем это:
• C++26 обещает сделать язык более выразительным и удобным для разработчиков, особенно в области асинхронного и параллельного программирования
📌 GCC 15
Что нового:
• Поддержка ключевых фич C++23 и экспериментальных возможностей C++26
• Улучшения в работе с модулями и шаблонами
• Оптимизации компиляции и диагностики
Зачем это:
GCC 15 предоставляет разработчикам инструменты для опробования и внедрения новых возможностей C++, обеспечивая плавный переход к будущим стандартам
🔍 Какой релиз вы ждете больше всего? Поделитесь в комментариях!
Библиотека C/C++ разработчика
Что нового:
• Pack Indexing: Теперь можно обращаться к элементам параметрических паков с помощью знакомого синтаксиса
args[0]
, упрощая работу с шаблонами• std::execution (Senders/Receivers): Новая модель асинхронного программирования, позволяющая строить эффективные и безопасные параллельные приложения
• Контракты и Рефлексия: Введение контрактов для явного определения предусловий и постусловий функций, а также рефлексии для анализа структуры программ на этапе компиляции
• Stackful Coroutines: Поддержка корутин с собственным стеком, упрощающая написание асинхронного кода в линейном стиле
Зачем это:
• C++26 обещает сделать язык более выразительным и удобным для разработчиков, особенно в области асинхронного и параллельного программирования
📌 GCC 15
Что нового:
• Поддержка ключевых фич C++23 и экспериментальных возможностей C++26
• Улучшения в работе с модулями и шаблонами
• Оптимизации компиляции и диагностики
Зачем это:
GCC 15 предоставляет разработчикам инструменты для опробования и внедрения новых возможностей C++, обеспечивая плавный переход к будущим стандартам
🔍 Какой релиз вы ждете больше всего? Поделитесь в комментариях!
Библиотека C/C++ разработчика
🔥6👍4❤1🥰1
Если догадался что загадано, пишите ответ в комментах 👇
Библиотека C/C++ разработчика #memes #междусобойчик
Библиотека C/C++ разработчика #memes #междусобойчик
🎉3
Forwarded from Proglib.academy | IT-курсы
🏗 7 архитектурных паттернов, которые должен знать каждый программист
Если вы всерьёз строите карьеру в разработке, то без архитектурных паттернов никуда. Они помогают проектировать системы, которые не развалятся при первом же проде — масштабируемые, отказоустойчивые и вменяемые в поддержке.
➡️ В статье вас ждёт
— Circuit Breaker — как не сжечь систему повторными ошибками
— Event Sourcing — зачем сохранять историю изменений вместо текущего состояния
— SideCar — как отделить логику от инфраструктуры
— CQRS — почему чтение и запись лучше разводить по разным моделям
— Rate Limiting — как защититься от перегрузки
— Strangler Fig — пошаговая миграция без боли
— Health Endpoint Monitoring — как делать доступный мониторинг состояния системы
Это не базовые темы, но если вы хотите прокачаться и разбираться в архитектуре — самое время углубиться.
🔵 Для полного понимания Архитектуры, забирайте наш курс → «Архитектуры и шаблоны проектирования»
📎 Статья
Proglib Academy #буст
Если вы всерьёз строите карьеру в разработке, то без архитектурных паттернов никуда. Они помогают проектировать системы, которые не развалятся при первом же проде — масштабируемые, отказоустойчивые и вменяемые в поддержке.
— Circuit Breaker — как не сжечь систему повторными ошибками
— Event Sourcing — зачем сохранять историю изменений вместо текущего состояния
— SideCar — как отделить логику от инфраструктуры
— CQRS — почему чтение и запись лучше разводить по разным моделям
— Rate Limiting — как защититься от перегрузки
— Strangler Fig — пошаговая миграция без боли
— Health Endpoint Monitoring — как делать доступный мониторинг состояния системы
Это не базовые темы, но если вы хотите прокачаться и разбираться в архитектуре — самое время углубиться.
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
⚡️ Фича дня: условный оператор с инициализацией
Часто перед условным оператором нужно объявить временную переменную, что загромождает область видимости и увеличивает вероятность ошибок.
Инициализация переменных прямо в условии if/switch (C++17) позволяет ограничить область видимости только блоком условия.
🔴 До:
🟢 После:
Примеры использования:
- Поиск в контейнерах с проверкой результата
- Вызов функций с проверкой возвращаемого значения
- Инициализация мьютексов с последующей блокировкой
💡 Как думаете, улучшает ли это читаемость кода?
Библиотека C/C++ разработчика #буст
Часто перед условным оператором нужно объявить временную переменную, что загромождает область видимости и увеличивает вероятность ошибок.
Инициализация переменных прямо в условии if/switch (C++17) позволяет ограничить область видимости только блоком условия.
🔴 До:
auto it = map.find(key);
if (it != map.end()) {
// Используем it->second
}
🟢 После:
if (auto it = map.find(key); it != map.end()) {
// Используем it->second
}
Примеры использования:
- Поиск в контейнерах с проверкой результата
- Вызов функций с проверкой возвращаемого значения
- Инициализация мьютексов с последующей блокировкой
💡 Как думаете, улучшает ли это читаемость кода?
Библиотека C/C++ разработчика #буст
👍5
🔥 std::vector в Си?
💡 Автор статьи разработал свою реализацию аналога std::vector для языка Си после анализа существующих решений, которые не подходили по ряду причин.
❗ Ключевые моменты статьи:
• обращение к элементам напрямую без лишних структур
• инкапсуляция метаданных вектора от пользователя
• минимальное использование макросов, только для удобства API
Основной фокус — элегантное инженерное решение: выделение памяти под структуру и данные одним блоком, с возвратом указателя на данные, которые идут сразу после структуры.
Особенно актуально для C-разработчиков, которые хотят получить удобство контейнеров C++ без смены языка программирования.
💡 Автор статьи разработал свою реализацию аналога std::vector для языка Си после анализа существующих решений, которые не подходили по ряду причин.
❗ Ключевые моменты статьи:
• обращение к элементам напрямую без лишних структур
• инкапсуляция метаданных вектора от пользователя
• минимальное использование макросов, только для удобства API
Основной фокус — элегантное инженерное решение: выделение памяти под структуру и данные одним блоком, с возвратом указателя на данные, которые идут сразу после структуры.
Особенно актуально для C-разработчиков, которые хотят получить удобство контейнеров C++ без смены языка программирования.
👍16🔥2😢1
🚀 CLion теперь бесплатен для некоммерческих проектов!
Компания JetBrains объявила, что их мощная IDE CLion (для C и C++) теперь доступна бесплатно для некоммерческого использования!
Это отличная новость для:
🔹 Студентов и начинающих разработчиков
🔹 Авторов open-source проектов
🔹 Энтузиастов, пишущих код в качестве хобби
Раньше для работы с CLion требовалась подписка, но теперь JetBrains решил снизить порог входа в C/C++ разработку. В 2024 году они уже сделали бесплатными RustRover, Rider и WebStorm, а теперь очередь дошла и до CLion.
Библиотека C/C++ разработчика
Компания JetBrains объявила, что их мощная IDE CLion (для C и C++) теперь доступна бесплатно для некоммерческого использования!
Это отличная новость для:
🔹 Студентов и начинающих разработчиков
🔹 Авторов open-source проектов
🔹 Энтузиастов, пишущих код в качестве хобби
Раньше для работы с CLion требовалась подписка, но теперь JetBrains решил снизить порог входа в C/C++ разработку. В 2024 году они уже сделали бесплатными RustRover, Rider и WebStorm, а теперь очередь дошла и до CLion.
Библиотека C/C++ разработчика
1👍35🔥12🥱5👏4