Как исключения C++ легко делают ваше программное обеспечение лучше и безопаснее
В чем проблема?
Если ваше программное обеспечение не проверяет и не устраняет ошибки, ваша программа может быть ненадежной. Клиенты сочтут это некачественным программным обеспечением.
Многие реальные программы не должны завершаться аварийно, и не только те, которые управляют медицинскими приборами или ракетами.
Если исключения не используются или не обрабатываются должным образом, процесс завершается аварийно. При вызове std::abort() или если реализация не разворачивает стек перед вызовом std::terminate(), деструкторы объектов могут не вызываться, а внешние ресурсы могут оставаться в неопределенном состоянии. Ненормальное завершение процесса - типичный вектор для атак типа "отказ в обслуживании" (DOS).
https://nexwebsites.com/blog/cpp_exceptions/
#cpp #programming
В чем проблема?
Если ваше программное обеспечение не проверяет и не устраняет ошибки, ваша программа может быть ненадежной. Клиенты сочтут это некачественным программным обеспечением.
Многие реальные программы не должны завершаться аварийно, и не только те, которые управляют медицинскими приборами или ракетами.
Если исключения не используются или не обрабатываются должным образом, процесс завершается аварийно. При вызове std::abort() или если реализация не разворачивает стек перед вызовом std::terminate(), деструкторы объектов могут не вызываться, а внешние ресурсы могут оставаться в неопределенном состоянии. Ненормальное завершение процесса - типичный вектор для атак типа "отказ в обслуживании" (DOS).
https://nexwebsites.com/blog/cpp_exceptions/
#cpp #programming
👍13🔥2❤1😁1
git clone https://github.com/facebook/folly
cd folly
sudo ./build/fbcode_builder/getdeps.py install-system-deps --recursive
Folly (от "Facebook Open Source Library") — это библиотека компонентов C++17, разработанная с учетом практичности и эффективности. Folly содержит множество основных библиотечных компонентов, широко используемых в Facebook.
Большой упор сделан на производительность
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤1🔥1🤡1
fmt представляет собой быструю и безопасную альтернативу stdio из C и iostreams из C++
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤4🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
—
pip install codechecker
CodeChecker — это целая инфраструктура статического анализа, построенная на основе инструментария LLVM/Clang Static Analyzer и заменяющая scan-build в среде разработки Linux или macOS.
Также существует прекрасный плагин для VSCode
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍5❤1
Media is too big
VIEW IN TELEGRAM
🚀 Практика языка C (МФТИ, 2023-2024). Интермедия. Стандарт языка C.
На этом занятии мы поговорим о стандарте C. Мы начнём с попытки изобрести очень простой язык программирования и увидим на его примере основные особенности поведения высокоуровневых программ. Далее мы подробно разберём разные формы поведения программ на языке C, познакомимся и потренируемся со стандартом языка.
У нас будет один вставной момент где я учу детей разбивать программы на модули и писать тесты. Это связано с тем что они сейчас делают проекты, можете это пропустить если смотрите эту лекцию в отрыве от основного курса.
В конце я приготовил небольшое рассуждение про важность стандартизации.
00:00 Язык программирования INC и поведение программ
12:38 Семантика и стандарт языка
23:50 Поведение программ
34:15 Неопределённое поведение
47:17 Тренировка в чтении стандарта и время решать задачи
50:20 Немного информации про проект и live coding
01:08:43 Стандарт как источник знаний
01:19:11 Важность стандартизации
▪источник
#cpp #programming
@cpluspluc
На этом занятии мы поговорим о стандарте C. Мы начнём с попытки изобрести очень простой язык программирования и увидим на его примере основные особенности поведения высокоуровневых программ. Далее мы подробно разберём разные формы поведения программ на языке C, познакомимся и потренируемся со стандартом языка.
У нас будет один вставной момент где я учу детей разбивать программы на модули и писать тесты. Это связано с тем что они сейчас делают проекты, можете это пропустить если смотрите эту лекцию в отрыве от основного курса.
В конце я приготовил небольшое рассуждение про важность стандартизации.
00:00 Язык программирования INC и поведение программ
12:38 Семантика и стандарт языка
23:50 Поведение программ
34:15 Неопределённое поведение
47:17 Тренировка в чтении стандарта и время решать задачи
50:20 Немного информации про проект и live coding
01:08:43 Стандарт как источник знаний
01:19:11 Важность стандартизации
▪источник
#cpp #programming
@cpluspluc
❤13👍9🔥1🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
• Cпискjr полезных ресурсов для изучения CИ с нуля
• В статье представлены различные области, в которых автор нуждался в дополнительном разъяснении
• Автор предлагает начать свой собственный проект, выбрав тему, которая действительно интересует
• Для изучения внутренней части ОС x86-64 рекомендуется разработка драйвера ядра и руткита
👉 Ссылочка
👉 Roadmap по C++
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥3❤2
libdatachannel стремится быть простой и легкой библиотекой, с минимальным количеством внешних зависимостей, чтобы обеспечить прямое соединение между приложениями и веб-браузерами без необходимости импортировать какую-то раздутую библиотеку.
Интерфейс состоит из несколько упрощенных версий JavaScript WebRTC и WebSocket API, присутствующих в браузерах, чтобы облегчить разработку кросс-окружающих приложений.
libdatachannel написана на C++17 и имеет привязку к языку C.
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥4❤2
—
conda install -c pytorch faiss-cpu
Faiss — это библиотека для эффективного поиска сходства и кластеризации векторов. Faiss содержит алгоритмы поиска в наборах векторов любого размера, вплоть до таких, которые, возможно, не поместятся в оперативной памяти. Библиотека также содержит вспомогательный код для оценки и настройки параметров.
Faiss написана на C++, имеет удобный интерфейс для использования из Python. Часть из наиболее полезных и ресурсоёмких алгоритмов спроектированы для распараллеливания на GPU.
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥3❤2
Одна из самых быстрых JSON-библиотек в мире. Glaze позволяет упростить интерфейсы и обеспечить высокую производительность.
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24❤8👍3🦄1
Catch2 в основном для модульного тестирования C++, но он также предоставляет базовые функции микробенчмаркинга и простые возможности BDD.
Главное преимущество Catch2 в том, что его можно использовать просто и естественно. Имена тестов не обязательно должны быть валидными идентификаторами, а утверждения выглядят как обычные булевы выражения C++.
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤4🔥2
oneDNN предоставляет ряд базовых строительных блоков для задач Deep Learning.
Библиотека оптимизирована для процессоров архитектуры Intel, Intel Graphics и процессоров на базе 64-битной архитектуры Arm (AArch64).
Также oneDNN имеет экспериментальную поддержку следующих архитектур: NVIDIA GPU, AMD GPU, OpenPOWER Power ISA (PPC64), IBMz (s390x) и RISC-V.
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤5🔥3🤔2
Библиотека simdjson использует общедоступные SIMD-инструкции и алгоритмы для разбора JSON в 4 раза быстрее, чем RapidJSON, и в 25 раз быстрее, чем JSON for Modern C++.
Особенности simdjson:
— минификация JSON со скоростью 6 ГБ/с, проверка UTF-8 со скоростью 13 ГБ/с, NDJSON со скоростью 3,5 ГБ/с
— простые в использовании и тщательно документированные API
— полная валидация JSON и UTF-8, парсинг происходит без потерь
— сам выбирает подходящий парсер, не нужно настраивать
simdjson используется в Facebook/Meta, в ClickHouse, WatermelonDB, Apache Doris, Milvus, StarRocks
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤6🔥4
Elements написана с использованием возможностей C++17.
Имеет декларативный интерфейс с логичным и понятным синтаксисом Domain Specific Embedded Languages (DSEL) для построения элементов GUI. Декларативное описание GUI пишется исключительно на C++, поэтому нет необходимости во внешнем визуальном редакторе GUI или генераторе кода.
Можно без проблем встроить Elements в любое приложение, и она будет хорошо сочетаться с другими библиотеками и фреймворками GUI.
Плюс Elements может сосуществовать с такими компонентами как VST и AU.
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25❤4🔥3