Библиотека C/C++ разработчика
Kanalga Telegram’da o‘tish
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
Ko'proq ko'rsatish7 196
Obunachilar
-124 soatlar
-27 kun
-2530 kun
Postlar arxiv
Малоизвестные и интересные особенности C и C++
В C и C++ есть особенности, о которых вас вряд ли спросят на собеседовании (вернее, не спросили бы до этого момента). Почему не спросят? Потому что такие аспекты имеют мало практического значения в повседневной работе или попросту малоизвестны.
Целью статьи является не освещение какой-то конкретной особенности языка или подготовка к собеседованиям, и уж тем более нет цели рассказать все потайные смыслы языка, т. к. для этого не хватит одной статьи и даже книги. Напротив, статья нужна для того, чтобы показать малоизвестные и странные решения, принятые в языках C и C++. Своего рода солянка из фактов. Вопрос “что делать с этими знаниями?” я оставляю читателю.
Если вы, как и я, любите и интересуетесь C/C++, и эти языки являются неотъемлемой частью вашей жизни, в том числе и его углубленного изучения, то эта статья для вас. По большей части я надеюсь, что эта статья сможет развлечь и заставить поработать головой. И если получится, рассказать что-то, чего вы, возможно, еще не знали.
Начну я с простых, но не менее интересных особенностей языков C и C++, а точнее их различий.
https://habr.com/ru/articles/786096/
#cpp #programming
👉 @cpp_lib
🦾 Ты круто кодишь на С++, really?
Попробуй пройти тест наш по C++ и проверь подходит ли тебе наш курс
Ответишь — пройдешь на продвинутый курс "C++ Developer. Professional" от OTUS по специальной цене + получишь запись мастер-класса от преподавателя курса.
👉 ПРОЙТИ ТЕСТ: https://vk.cc/cw4Hsh
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576Пять продвинутых техник инициализации в C++: От reserve() до piecewise_construct
От операций с динамическими контейнерами до констант времени компиляции — C++ предлагает много интересных техник (как в этом знаменитом меме :)). В этой статье мы рассмотрим несколько продвинутых методов инициализации: от reserve() и emplace_back для контейнеров, до piecewise_construct и forward_as_tuple для кортежей. Благодаря этим техникам мы можем уменьшить количество временных объектов и более эффективно создавать переменные.
https://www.cppstories.com/2023/five-adv-init-techniques-cpp/
#cpp #programming
👉 @cpp_lib
15 лет пишу на C++ - советы начинающим программистам
Я программист видеоигр и использую C++ в качестве языка программирования уже 15 лет. Конечно, за время моей работы программистом я переходил на другие языки, но я бы сказал, что C++ был основным для меня во всех моих хобби и профессиональных проектах.
источник
#cpp #programming
👉 @cpp_lib
Не знаете, как стать успешный вирусным аналитиком?
Вы можете прокачать свою квалификацию совершенно бесплатно и всего за пару часов:
- разобрать тему простых техник инжектов;
- освоить новую технику;
- написать тестовый пример, который будет инжектить код.
Встречаемся 15 апреля в 20:00 мск на бесплатном практическом уроке «Reflective DLL injection» от OTUS. Спикер Артур Пакулов — Ex-вирусный аналитик в Kaspersky Lab.
Занятие будет приурочено к старту курса «Reverse engineering». Доступно обучение в рассрочку.
Пройдите короткий тест прямо сейчас, чтобы посетить вебинар и получить запись: https://vk.cc/cw4lwC
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🙀 Научись разрабатывать приложения и сервисы на SafeBoard от «Лаборатории Касперского»
Регистрируйся на оплачиваемую стажировку по направлению Разработка С/C++. Если ты учишься в вузе в Москве/МО или школе 21 на любом курсе, кроме выпускного и готов(а) работать от 20 часов в неделю — запрыгивай в команды и приземляйся сразу на четыре лапы в IT.
Мы ищем тех, кто хочет научиться:
● Проектировать, разрабатывать и портировать приложения и сервисы для KasperskyOS;
● Использовать новые возможности языка (C++17 и более новых) в существующей кодовой базе;
● Разрабатывать и поддерживать кросс-платформенные (win, unix) проекты C++.
Во время стажировки ты будешь получать зарплату, бесплатно пользоваться спортзалом, сауной и игровыми комнатами 😉
Подай заявку до 25 апреля: https:safeboard🐾
LLVM в GPU компиляторах/Стандарты С++ (часть 2)
Во второй части выпуска «Битовых масок» Константин Владимиров, инженер с 20-летним опытом разработки на C/C++, расскажет об особенностях разработки компиляторов для GPU. А также порассуждает о новых полезных вещах в стандартах C++ и объяснит, почему разработчикам компиляторов так важно знать стандарт.
Чем отличаются CPU и GPU? В чем сложность гетерогенного программирования? Почему MLIR не применяется в графических компиляторах? Как использовать LLVM для GPU-компиляторов, несмотря на его недостатки для подобных архитектур? Когда мешает SSA? Почему наличие undefined behaviour — это хорошо? Что может быть включено в C++26? Ответы на эти и другие вопросы вы узнаете из нового эпизода.
Первую часть выпуска c Константином, посвященную преимуществам и недостаткам компиляторов GCC и LLVM, а также современным подходам к аллокации регистров, смотрите по ссылке:
00:00:00 — Тизер первой части
00:00:29 — Отличия CPU и GPU
00:02:03 — Особенности компиляторов для GPU
00:04:01 — Сложности применения LLVM для GPU-компиляторов
00:06:13 — Spill’ы в шейдерах
00:10:15 — Сложность гетерогенного программирования
00:11:18 — Проблемы компиляторных инженеров
00:13:27 — Использование LLVM в GPU-компиляторах
00:18:56 — MLIR и возможность его применения
00:21:13 — Особенности языков для GPU
00:26:07 — Backend в GPU-компиляторах
00:26:41 — Интересный баг
00:32:26 — Стоит ли писать на ассемблере
00:33:47 — Почему важно знать стандарты C++
00:36:10 — Ошибка в Linux
00:38:55 — Польза undefined behaviour
00:45:33 — Новшества в C++23 и C++26
00:55:37 — Участие в разработке стандартов C++
01:00:59 — Заключение
источник
#cpp #programming
👉 @cpp_lib
erid: LjN8KEqWd
Telegram-канал с уникальным контентом для С++ разработчика 💪
Наша команда разрабатывает инструмент для программистов PVS-Studio. Это статический анализатор кода, который ищет ошибки и уязвимости в С, С++, С# и Java. Мы рассказываем о тонкостях С++, проверяем известные Open Source проекты и разбираем ошибки, которые кроются в их коде 🧐
Переходите на наши последние С++ посты:
- Рубрика: Найди Ошибку в С++ коде
- Как не надо проверять размер массива в С++
- Копаемся в коде проекта Blender
Заглядывайте! В закрепе найдёте 12 наших лекций по С++ 😉
LLVM и GCC / Register allocation / IT-образование в вузах (часть 1)
В этом выпуске Константин Владимиров, занимавшийся разработкой компиляторов для CPU и GPU, расскажет о том достоинствах и недостатках GCC и LLVM. Константин опишет различные современные подходы к аллокации регистров, применяемых в компиляторах. А также поделится базовыми рекомендациями для пользователей компиляторов, желающих улучшить производительность своих программ с помощью компиляторов. Кроме того, мы обсудили животрепещущий вопрос об IT-образовании с точки зрения преподавателя.
Насколько больно переходить на новые версии компилятора? По каким причинам выбирают LLVM? Какие достоинства и недостатки GCC и LLVM? Какие методы решения задачи аллокации регистров существуют? Насколько этот этап влияет на скорость работы программы? Почему инженерам полезно идти преподавать в ВУЗы? Какие проблемы есть у современного высшего образования в сфере IT?
00:00:00 - Тизер
00:00:22 - В гостях Константин Владимиров
00:01:40 - Карьерный путь Константина
00:08:16 - Как Константин попал в сферу разработки компиляторов
00:10:05 - Процесс проектирования микроархитектуры
00:11:39 - Сравнение GCC и LLVM, преимущества и недостатки
00:15:47 - LLVM IR
00:16:41 - Все крупные системы должны быть переписаны на C++
00:17:18 - Преимущества C
00:18:57 - Наследие, оставшееся от С, в GCC
00:20:19 - Ниши gcc и clang
00:22:26 - Отсутствие бинарной совместимости для LLVM IR
00:24:42 - Различные методы аллокации регистров в компиляторах
00:34:47 - Как аллокация регистров влияет на качество сгенерированного кода
00:36:15 - Рекомендации для пользователей компиляторов
00:37:02 - Архитектурные решения проблемы аллокации регистров
00:40:07 - Польза преподавательской деятельности
00:43:43 - Собеседования при найме
00:45:27 - Что полезно для развития специалиста
00:46:56 - Проблемы IT-кафедр
00:52:10 - Участие компаний в высшем образовании
00:55:27 - Новогоднее пожелание будущим инженерам от Константина
источник
#cpp #programming
👉 @cpp_lib
Оптимизируя неоптимизируемое: ускорение компиляции C++
В этой статье речь пойдёт о повышении скорости компиляции библиотеки {fmt} до уровня библиотеки ввода-вывода Cи stdio.
Дня начала немного теории. {fmt} – это популярная открытая библиотека С++, представляющая более эффективную альтернативу С++ библиотеке iostreams и библиотеке Си stdio. Последнюю она обошла по целому ряду аспектов:
Безопасность типов с проверками форматирующих строк во время компиляции. Эти проверки включены по умолчанию начиная с С++ 20, и присутствуют в качестве дополнения для С++ 14/17. Форматирующие строки среды выполнения в {fmt} также оказываются безопасными, чего невозможно достичь в printf.
Расширяемость. Определяемый пользователем тип можно сделать форматируемым. При этом большинство типов стандартных библиотек, например, контейнеры и пакеты для обработки даты и времени, предлагают возможность форматирования изначально.
Производительность. {fmt} намного быстрее любой распространённой реализации printf, порой на несколько порядков (например, в форматировании чисел с плавающей запятой).
Возможность переноса поддержки Unicode.
https://habr.com/ru/companies/ruvds/articles/785420/
#cpp #programming
👉 @cpp_lib
Хотите освоить среду выполнения wasm/wasi и запускать серверные приложения без привязки к операционной системе?
Присоединяйтесь к нашему бесплатному уроку «Wasm на сервере для высоконагруженных систем».
Дата: 09.04 в 20:00 мск
На уроке вы узнаете:
- Основы компиляции приложений в WebAssembly из различных технологий разработки: tinygo, emscripten, cargo.
- Как использовать Docker и NGINX Unit для публикации ваших wasm-приложений.
- Подключение wasm к envoy и публикация как функций в knative.
- Инструменты отладки и оценки производительности опубликованных wasm-приложений с использованием wzprof.
Не упустите возможность погрузиться в мир WebAssembly и трансформировать свою разработку серверных приложений!
После вебинара можно записаться на курс «Highload Architect» от Otus. Курс доступен для приобретения в рассрочку.
Пройдите короткий тест и начните обучение бесплатно: https://vk.cc/cvZDwk
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Применяем стандартные алгоритмы в C++. Семь примеров
Меня зовут Николай, я разработчик С++ в SimbirSoft. В этой статье я хочу поделиться своим опытом применения алгоритмов.
Каждый из нас знает, что существуют алгоритмы стандартной библиотеки, и что они делают. Но не все и не всегда используют их. Я тоже их не использовал до той поры, пока не узнал, когда их применять.
Все примеры взяты из реального проекта. Чтобы не загромождать примеры, код этих функций был упрощён для лучшего восприятия.
Прежде чем перейти к примерам, необходимо отметить основное преимущество алгоритмов: они позволяют упростить код и повысить читаемость (или самодокументирование, которое позволяет на основании названия алгоритма понять, что делается), обобщить код. Начиная с C++17, алгоритмы могут выполняться параллельно, реализация алгоритма может быть жестко с оптимизирована компилятором по сравнением с обычным кодом.
https://habr.com/ru/companies/simbirsoft/articles/804675/
#cpp #programming
👉 @cpp_lib
💡 Разрабатываешь на C++? Освой кроссплатформенную разработку на QT и ОС Аврора
Вкладывай в перспективу - вкладывай в себя!
Пройди тест из 20 вопросов и проверь, насколько хорошо nы знаешь язык C++ и готов освоить QT и ОС Аврора .
Сможешь сдать — пройдёшь на продвинутый онлайн-курс "Разработка прикладного ПО на Qt и ОС Аврора" от OTUS.
👉 ПРОЙТИ ТЕСТ: https://vk.cc/cvVFsN
🎁 А еще OTUS празднует День Рождения! Дарим вам промокод 7YEARS -15% на оплату любого курса до 07 апреля 2024.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru📚Professional C++, 5 ed.
Marc Gregoire (2021)
Description: Professional C++, 5th Edition raises the bar for advanced programming manuals. Complete with a comprehensive overview of the new capabilities of C++20, each feature of the newly updated programming language is explained in detail and with examples. Case studies that include extensive, working code round out the already impressive educational material found within.
#cpp #programming
👉 @cpp_lib
❓ Хотите познакомиться с разработкой на Unreal Engine 5 и попробовать себя в роли разработчика игр?
Отус приглашает 10 апреля в 20:00 по мск на бесплатный вебинар по созданию игрового шутера на Unreal Engine 5 «Создаём шутер от первого лица на Unreal Engine 5. Создание проекта, игровой сцены, игровые ассеты и анимации»!
Вебинар является бесплатной частью полноценного онлайн-курса «Unreal Engine Game Developer. Basic».
На вебинаре вы вместе с опытным экспертом:
✅ создадите проект и игровую сцену;
✅ импортируете игровые ассеты и анимации для вашего шутера;
✅ подготовите UI: уровень здоровья и боеприпасов.
➡️ Регистрация на вебинар: https://vk.cc/cvTXxc
Основные темы открытого урока:
- Создание уровня игры
- Импорт моделей и анимаций
- Настройка анимаций
- Создание простейшего UI
✨ Не переживайте, если вы пропустили первый вебинар, после регистрации на второй, вам будет доступна запись первого вебинара, которую вы сможете посмотреть на странице курса.
После вебинара вы сможете продолжить обучение на специальных условиях и получить видеокурс по программированию на С++ в подарок.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
CMAKE TUTORIAL
EP 1 | Understanding The Basics
EP 2 | Libraries | Installing | Pairing with Executables | RE-DONE!
EP 3 | Git Submodules (adding glfw windowing library example)
EP 4 | Versioning Source Code
EP 5 | Making Libs Optional
EP 6 | Installing Your Software! (part 1/2 of install)
EP 7 | Installing With CPack! (part 2/2 of install)
EP 8 | find_library(...) (part 1/2 of find lib)
EP 9 | find_package modules and config options (2/2 of find libs)
EP 10 | Running CMake on Windows (like linux) (Over-explained)
источник
#cpp #programming
👉 @cpp_lib
Инструменты и библиотеки для создания собственного игрового движка на C++
Вы хотите узнать больше об игровых движках и написать их самостоятельно? Это здорово! Чтобы помочь вам на этом пути, вот некоторые рекомендации по библиотекам и зависимостям C++, которые помогут вам начать работу.
https://pikuma.com/blog/how-to-make-your-own-cpp-game-engine
#cpp #programming
👉 @cpp_lib
👩💻 Изучите Контейнеры STL для профессиональной разработки на С++
Ждём вас на бесплатном практическом уроке от OTUS.
Стандартная библиотека C++ предоставляет набор контейнеров данных для большинства сценариев хранения, преобразования и индексирования. На вебинаре рассмотрим устройство и подход выбора используемых контейнеров.
Встречаемся 11 апреля в 20:00 мск в рамках курса «C++ Developer. Professional». Доступна рассрочка на обучение!
➡️ Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок и получить запись: https://vk.cc/cvSTLa
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576Алгоритмы на С/С++
Задача о Ханойской башне
Быстрая сортировка (quick sort)
Бинарный поиск в отсортированном массиве
Сортировка методом выбора
Сортировка методом пузырька
Минимизация просмотров в методе сортировки пузырьком
Модифицированный метод пузырька
Сортировка методом вставок
Шейкер - сортировка
источник
#cpp #programming
👉 @cpp_lib
