Курс по ООП в С++: шаблоны и метапрограммирование
00:00 - Введение
02:12 - Внутреннее устройство шаблонов
03:55 - Явная специализация
06:25 - Частичная специализация
08:04 - Перегрузка и шаблоны
09:02 - Статический полиморфизм (CRTP)
12:40 - Шиблонный синглтон (CRTP)
17:57 - Основы метапрограммирования
22:17 - Заключение
источник
#cpp #programming
👉 @cpp_lib
Оператор присваивания ( = ), строго говоря, является бинарным оператором. Его объявление идентично объявлению любого другого бинарного оператора со следующими исключениями:
☑️ Он должен быть нестатической функцией-членом.
☑️ Он не наследуется производными классами.
☑️ Компилятор может создать функцию operator = по умолчанию для типов классов, если она не существует.
В примере показано, как объявить оператор присваивания.
#cpp #programming
👉 @cpp_lib
21 фича современного C++, которые вам обязательно пригодятся
Итак, судьба снова свела вас с C++, и вы поражены его возможностями с точки зрения производительности, удобства и выразительности кода. Но вот незадача: вы теряетесь в этом многообразии замечательных новых фич и, как следствие, затрудняетесь сходу определить, что из этого всего вам действительно стоило бы взять на вооружение в своей повседневной работе по написанию кода. Не стоит расстраиваться, в этой статье вашему вниманию будут представлены 21 новая фича современного C++, которые помогут сделать ваш проект лучше, а работу над ним легче.
https://www.vishalchovatiya.com/21-new-features-of-modern-cpp-to-use-in-your-project/
#cpp #programming
👉 @cpp_lib
Константин Владимиров — Память как концепция в гетерогенных системах
Память это то, что программисты на C++ хорошо знают и полагают, что имеют над ней контроль. Но много ли известно о памяти на GPU?
Внезапно многие привычные концепции из мира C++ ломаются, а создание single-source слоев абстракции (таких как SYCL) требует введения большого количества странных для CPU понятий и терминов. И все это влияет на производительность. В докладе Константин рассмотрит память, как ее понимают в C++ и как ее понимают для графики, и покажет много примеров на SYCL.
источник
#cpp #programming
👉 @cpp_lib
❓Какие подводные камни появились в последнем стандарте языка C?
Проведем обзор стандарта C23 на открытом уроке 20 июля в 20:00 в OTUS. Вебинар приурочен к старту онлайн-курса «Программист С».
🔥Занятие проведет Андрей Кравчук, преподаватель курса и программист C/C++ с опытом 14 лет.
На вебинаре разберем:
— устаревшие и удалённые возможности языка
— новые языковые конструкции
— изменения в стандартной библиотеке
⚡️Занятие подойдёт:
— действующим разработчикам и авторам библиотек на языке C
— новичкам, интересующимся развитием низкоуровневых языков программирования
В результате вы получите знания о новых выразительных возможностях и новых подводных камнях языка C.
После вебинара курс можно приобрести в рассрочку.
👉Зарегистрируйтесь, чтобы принять участие: https://otus.pw/11Lu/
🚀 Познакомься с теорией шардирования!
📌 Шардирование - это метод горизонтального масштабирования баз данных, при котором большие объемы данных разбиваются на мелкие фрагменты (шарды). Каждый шард содержит подмножество данных и может храниться и обрабатываться независимо от других шардов.
🗓 16 июля в 18:00 по МСК пройдет бесплатный открытый урок по теории шардирования!
Чему ты научишься:
- узнаешь, что такое шардирование и в каких ситуациях его следует применять
- поймешь, в чем разница между партиционированием и шардированием
- разберешься с rebalancing, resharding и consistent/randezvous hashing
➡️ Ссылка на открытый урок ⬅️
Вывод double, также известный как самая сложная задача в компьютерных науках
Несколько лет назад я обнаружил этот вопрос на StackOverflow: как напечатать double с полной точностью, используя cout? Я был потрясен, увидев, насколько неправильными были большинство ответов, поэтому тогда я ответил сам. Недавно я снова наткнулся на него и решил написать этот пост в блоге, объясняя проблемы с некоторыми из лучших ответов.
https://www.zverovich.net/2023/06/04/printing-double.html
#cpp #programming
👉 @cpp_lib
Integer Conversions and Safe Comparisons in C++20
https://www.cppstories.com/2022/safe-int-cmp-cpp20/
#cpp #programming
👉 @cpp_lib
Санитайзер адресов continue_on_error | Pure Virtual C++ 2023
Ошибки безопасности памяти в C++ продолжают оставаться одной из главных проблем. В этом докладе мы описываем continue_on_error - новую технологию, реализованную в среде выполнения Address Sanitizer. Компилятор и новая среда выполнения позволяют разработчику найти четко определенный набор (возможно, скрытых) ошибок безопасности памяти, имеет ноль ложных срабатываний и легко добавляется к существующим тестовым ресурсам. Это создает новую проверяемую сборку для C и C++.
https://www.youtube.com/watch?v=i8_RfDAEjMs
#cpp #programming
👉 @cpp_lib
❓Хотите начать разрабатывать смарт-контракты?
Начните с бесплатного урока - присоединияйтесь 13 июля в 20:00 мск к вебинару OTUS и создайте свой первый смарт-контракт!
👨🎓В рамках онлайн-курса «Solidity Developer» пройдет открытый урок «Введение в смарт-контракты». Вместе с экспертом мы сначала разберем, как развивались смарт-контракты, а затем перейдем от теории к практике — разработаем смарт-контракт.
🚩На вебинаре мы:
- Погрузимся в увлекательную историю смарт-контрактов, иллюстрируя их зарождение и развитие до сегодняшнего дня
- Рассмотрим области применения смарт-контрактов, представив реальные примеры их использования в различных сферах
- Создадим и задеплоим наш первый смарт-контракт с помощью онлайн-инструмента Remix IDE
- Обсудим известные случаи взлома смарт-контрактов, рассмотрим основные уязвимости и способы их устранения.
🔥После вебинара вы сможете продолжить обучение на курсе, доступном в рассрочку.
✔️Для участия зарегистрируйтесь https://otus.pw/GxXk/
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. 2Ranym62bDA
Курс по C++ и SFML
Простые программы на C++
В статье мы напишем пару простейших программ на C++ и посмотрим, как происходит их компиляция.
https://ps-group.github.io/ps1/lesson_cpp_1
Знакомство с SFML. Компьютерная графика.
SFML (Simple Fast Multimedia Library) — это C++ библиотека для мультимедиа. В статье мы воспользуемся SFML для рисования фигур в окне.
https://ps-group.github.io/ps1/lesson_sfml_1
Основной цикл программы. Анимация.
В статье мы освоим паттерн Game Loop, а также научимся обрабатывать события мыши и клавиатуры.
https://ps-group.github.io/ps1/lesson_sfml_2
Обработка событий. Интерактив.
В статье вы освоите обработку событий мыши и клавиатуры в мультимедийных программах и научитесь писать функции на языке С++
https://ps-group.github.io/ps1/lesson_sfml_3
Соглашения о кодировании на C++
Соглашения о кодировании для курса по C++/SFML
https://ps-group.github.io/ps1/cxx_coding_style
Комплексные задачи. Котик следует за мышкой
В этой практике вы начнёте по шагам решать комплексные задачи, двигаясь от математической модели и псевдокода к готовой программе
https://ps-group.github.io/ps1/sfml_workshop_1
Массовые столкновения
На этом занятии вы научитесь программировать игры уровня Бильярда или Arkanoid
https://ps-group.github.io/ps1/sfml_workshop_2
Ещё одна практика на SFML
На этом занятии вы освоите более гибкие приёмы работы с SFML: виртуальную камеру, рисование произвольных фигур, проверку столкновения
https://ps-group.github.io/ps1/sfml_workshop_3
Основной проект курса: 2D игра
Цель проекта - самостоятельно написать комплексную программу, клон небольшой игры
https://ps-group.github.io/ps1/project
Задание | Спецификация проекта в виде MindMap
Чтобы составить видение проекта-игры, нужно визуализировать. Сделать это поможет MindMap.
https://docs.google.com/document/d/1Ki6DlbhDrZHskC6LED88FHeX8m-Se3-MrTpjwKYlcDk/edit?usp=sharing
Задание | План проекта в виде RoadMap
Чтобы справиться с известным проектом в известные сроки, нужно составить план действий. Сделать это поможет RoadMap.
https://docs.google.com/document/d/1zdW81SLmgVf3ZXyMwXkOXxIwOzBzkTTvi4TTMLdUw_E/edit
Пишем клон игры PacMan слой за слоем
В этой коллекции примеров слой за слоем на C++/SFML воссоздаётся урезанный клон игры PacMan
https://github.com/ps-group/sfml-packman
Схема оценки проекта-игры
В таблице записаны критерии оценки и примеры оценивания различных игр
https://docs.google.com/spreadsheets/d/1n7OzeQEDujPDboW3dFn4M4iXhcPvlCR7FQbPRSE4jwM/edit?usp=sharing
#cpp #programming
👉 @cpp_lib
60 антипаттернов для С++ программиста
Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в шутку, и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.
https://pvs-studio.ru/ru/blog/posts/cpp/1053/
#cpp #programming
👉 @cpp_lib
👨💻 Хотите использовать C на практике и решать задачи Middle-уровня?
Ответьте на 20 вопросов, чтобы проверить достаточно ли ваших навыков, чтобы работать с языком С и попасть на курс — «Программист С» от OTUS.
На полном курсе вы изучите основы архитектуры процессора и памяти, научитесь писать сетевые приложения, а также сможете понять, как С используется в играх и веб-приложениях
👉 Пройти тест — https://otus.pw/guki/
Реклама. Информация о рекламодателе на сайте www.otus.ru.
❓Хотите освоить востребованный и универсальный C++? Сейчас подходящее время!
⚡️В OTUS стартует специализация «C++ Developer». Обучение будет проходить последовательно: на первой ступени вы освоите принципы программирования, синтаксис языка, библиотеки, многопоточность, сетевое взаимодействие, а на второй изучите БД, принципы проектирования ПО, попробуете C++ в машинном обучении и многом другом.
🌟Преподаватели и ментор — ведущие C++ разработчики, которые будут давать фидбэк и отвечать на вопросы во время обучения. После 10 месяцев живых вебинаров, практики и работы над 2 выпускными проектами вы сможете претендовать на позицию Middle C++ разработчика с зарплатой от 90 тыс. рублей.
👇Начните учиться на курсе бесплатно: оставьте заявку на курс и получите открытый урок в подарок:
https://otus.pw/t2d1/
Подборка Telegram каналов для программистов
Системное администрирование 📌
/channel/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
/channel/sysadminof Книги для админов, полезные материалы
/channel/i_odmin Все для системного администратора
/channel/i_odmin_book Библиотека Системного Администратора
/channel/i_odmin_chat Чат системных администраторов
/channel/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
/channel/sysadminoff Новости Линукс Linux
/channel/tikon_1 Новости высоких технологий, науки и техники💡
/channel/mir_teh Мир технологий (Technology World)
/channel/rust_lib Полезный контент по программированию на Rust
/channel/golang_lib Библиотека Go (Golang) разработчика
/channel/itmozg Программисты, дизайнеры, новости из мира IT.
/channel/phis_mat Обучающие видео, книги по Физике и Математике
/channel/php_lib Библиотека PHP программиста 👨🏼💻👩💻
/channel/nodejs_lib Подборки по Node js и все что с ним связано
/channel/ruby_lib Библиотека Ruby программиста
1C разработка 📌
/channel/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
/channel/cpp_lib Библиотека C/C++ разработчика
/channel/cpp_knigi Книги для программистов C/C++
/channel/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
/channel/pythonofff Python академия. Учи Python быстро и легко🐍
/channel/BookPython Библиотека Python разработчика
/channel/python_real Python подборки на русском и английском
/channel/python_360 Книги по Python Rus
Java разработка 📌
/channel/BookJava Библиотека Java разработчика
/channel/java_360 Книги по Java Rus
/channel/java_geek Учим Java на примерах
GitHub Сообщество 📌
/channel/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
/channel/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
/channel/developer_mobila Мобильная разработка
/channel/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
/channel/frontend_1 Подборки для frontend разработчиков
/channel/frontend_sovet Frontend советы, примеры и практика!
/channel/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
/channel/game_devv Все о разработке игр
Вакансии 📌
/channel/sysadmin_rabota Системный Администратор
/channel/progjob Вакансии в IT
Чат программистов📌
/channel/developers_ru
Библиотеки 📌
/channel/book_for_dev Книги для программистов Rus
/channel/programmist_of Книги по программированию
/channel/proglb Библиотека программиста
/channel/bfbook Книги для программистов
/channel/books_reserv Книги для программистов
БигДата, машинное обучение 📌
/channel/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
/channel/bookflow Лекции, видеоуроки, доклады с IT конференций
/channel/coddy_academy Полезные советы по программированию
QA, тестирование 📌
/channel/testlab_qa Библиотека тестировщика
Шутки программистов 📌
/channel/itumor Шутки программистов
Защита, взлом, безопасность 📌
/channel/thehaking Канал о кибербезопасности
/channel/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
/channel/ux_web Статьи, книги для дизайнеров
Английский 📌
/channel/UchuEnglish Английский с нуля
Математика 📌
/channel/Pomatematike Канал по математике
Excel лайфхак📌
/channel/Excel_lifehack
Простое руководство по атомарности в C++
Часто возникает путаница с тем, что же понимается в компьютерных науках под «атомарностью». Как правило, атомарность – это свойство процесса, означающее, что он совершается за один шаг или операцию. Но в языке C++ атомарность определяется гораздо более специфичным образом. На самом деле, при использовании std::atomic с классами и типами еще не гарантируется, что весь код будет подлинно атомарным. Хотя, атомарные типы и входят в состав языка C++, сами атомарные операции должны поддерживаться на уровне того аппаратного обеспечения, на котором работает программа. Эта статья – простое руководство, помогающее понять, что же представляет собой атомарность в C++.
https://blog.devgenius.io/a-simple-guide-to-atomics-in-c-670fc4842c8b
#cpp #programming
👉 @cpp_lib
👥 Митап Yandex Infrastructure в Новосибирске
У Яндекса огромная инфраструктура хранения и обработки данных, многие ее составляющие — собственные разработки компании. За все эти технологии, процессы и продукты отвечает команда инфраструктуры.
Приглашаем вас на митап Yandex Infrastructure, где мы расскажем о некоторых из наших разработок:
1. Платформа для работы с данными (YDB):
Поговорим о том, как упрощается разработка клиентского приложения, когда на уровне платформы гарантирована атомарность вычитания данных из потока событий в топики и запись в таблицы.
2. Arc — собственная система контроля версий для монорепозитория:
Расскажем, зачем нужен монорепозиторий, как устроена внутренняя система контроля версий в Яндексе и виртуализация файловой системы.
3. Система сборки Ya make:
Разработка в монорепозитории большой компании предъявляет к системе сборки интересные и иногда неожиданные требования — расскажем, как мы со всем этим справляемся и с какими компромиссами нам приходится жить.
Ждем как интересующихся продуктами Open source, так и продвинутых разработчиков, сетевых инженеров, DevOps- и SRE-специалистов.
📍 Когда: 27 июля, 18:00.
📍 Где: Новосибирск (площадка уточняется).
📍 Регистрация — по ссылке.
Регистрируйтесь и добавляйте событие в календарь.
До встречи!
Изменение порядка параметров типа шаблона C++ для удобства использования и вывод типа из будущего
https://devblogs.microsoft.com/oldnewthing/20230609-00/?p=108318
#cpp #programming
👉 @cpp_lib
Разработка кросплатформенного приложения на Qt с использованием нейросетей, обученных на tensorflow
Раз уж Вы заинтересовались данной статьёй, то ожидается, что Вы умеете программировать на с++ с использованием библиотеки Qt и разрабатывать нейросети на Python c использованием библиотеки tensorflow.
Соответственно остаётся только понять как использовать обученные Вами нейросетевые модели в Qt проектах.
https://habr.com/ru/articles/719888/
#cpp #programming
👉 @cpp_lib
Поговорим о слоях абстракции C++ - Инбал Леви - CppNow 2023
Слои абстракции - один из самых сильных инструментов, которые мы используем для разработки программного обеспечения.
Этому учат на бакалавриате CS, и это широко используется в повседневном рабочем процессе разработки программного обеспечения.
В ходе этого выступления мы дадим определение и изучим слои абстракций C++, а также выявим ошибки прошлого и основные правила, в том числе на примерах из особенностей последних стандартов C++23 и C++26. Наконец, мы рассмотрим предложение по работе комитета ISO C++ WG21.
источник
#cpp #programming
👉 @cpp_lib
Хотите стать востребованным разработчиком? Изучите Golang! С его простым и понятным синтаксисом вы сможете создавать надежные и эффективные программные решения, и работать над проектами где требуется высокая производительность и масштабируемость.
Начните погружение в Go c пробного урока курса от OTUS, на котором 👨💻 Владимир Балун, ведущий разработчик в Ozon расскажет об актуальности и перспективах этого языка.
Какие темы затронем на встрече:
— что происходит в IT-бизнесе
— в какие проекты может сейчас попасть Golang-разработчик
— чем хорош этот язык программирования
— какие продукты создаются ТОЛЬКО на Go
— почему Go имеет отличные перспективы в индустрии.
👉 Регистрируйтесь и начните обучение бесплатно — https://otus.pw/T1Cd/
Реклама. Информация о рекламодателе на сайте www.otus.ru.
❓Хотите освоить язык C и создавать свои умные IoT-решения?
Пройдите тест по C и проверьте свои знания.
🔥Сможете ответить — пройдёте на курс "Программист С" от OTUS по специальной цене + получите доступ к открытым урокам по программированию на С.
👉 ПРОЙТИ ТЕСТ: https://otus.pw/Dj80/Нативная интеграция. Информация о продукте www.otus.ru
Yandex Infrastructure Meetup
🗓 13 июля в Казани пройдёт офлайн-митап Yandex Infrastructure.
На нем расскажем, как мы создаём и развиваем платформу для разработчиков Яндекса. Поговорим про устройство сети Yandex Cloud, про вычислительную платформу Яндекса Nirvana и технологию SRv6.
Митап будет полезен backend-разработчикам, DevOps, SRE и сетевым инженерам, а также всем тем, кому интересны продукты open source.
➡️ Участие бесплатное.
Регистрируйтесь по ссылке.
Стандартные атрибуты в C и C++, Timur Doumler - ACCU 2023
Этот доклад представляет собой углубленный экскурс по стандартным атрибутам, доступным в настоящее время в языках программирования C и C++.
https://www.youtube.com/watch?v=EpAEFjbTh3I
#cpp #programming
👉 @cpp_lib
CppCon 2022 Lightning Talks
How to Win at Coding Interviews - David Stone
Best Practices Every C++ Programmer Needs to Follow - Oz Syed
C++20 - A New Way of Meta-Programming? - Kris Jusiak
MP: Template Meta-Programming in C++ - Kris Jusiak
The Future of C++ - Neil Henderson
Dependency Injection for Modern C++ - Tyler Weaver
Cute Approach for Polymorphism in C++ - Liad Aben Sour Asayag
Finding the Average of 2 Integers - Tomer Vromen
The Lambda Calculus in C++ Lambdas - David Stone
find-move-candidates in Cpp - Chris Cotter
Все видео доступны на youtube
#cpp #programming
👉 @cpp_lib
❓Хотите начать разрабатывать смарт-контракты?
Начните с бесплатного урока - присоединияйтесь 13 июля в 20:00 мск к вебинару OTUS и создайте свой первый смарт-контракт!
👨🎓В рамках онлайн-курса «Solidity Developer» пройдет открытый урок «Введение в смарт-контракты». Вместе с экспертом мы сначала разберем, как развивались смарт-контракты, а затем перейдем от теории к практике — разработаем смарт-контракт.
🚩На вебинаре мы:
- Погрузимся в увлекательную историю смарт-контрактов, иллюстрируя их зарождение и развитие до сегодняшнего дня
- Рассмотрим области применения смарт-контрактов, представив реальные примеры их использования в различных сферах
- Создадим и задеплоим наш первый смарт-контракт с помощью онлайн-инструмента Remix IDE
- Обсудим известные случаи взлома смарт-контрактов, рассмотрим основные уязвимости и способы их устранения.
🔥После вебинара вы сможете продолжить обучение на курсе, доступном в рассрочку.
✔️Для участия зарегистрируйтесь https://otus.pw/GxXk/
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. 2RanykkkR4k
Создание классического MINESWEEPER (Сапёр ) на C++ и SFML
Code https://github.com/Kofybrek/Minesweeper
источник
#cpp #programming
👉 @cpp_lib
The evolution of statements with initializers in C++
https://www.sandordargo.com/blog/2022/10/26/statements-with-initializers-part-1-conditionals
#cpp #programming
👉 @cpp_lib
Просто о шаблонах C++
Статья написана с целью максимально просто, на живых примерах рассказать о шаблонах C++.
Как создатели языка пришли к концепции шаблонов? Почему шаблонов не стоит бояться? Как они помогают сделать код чище? Почему стоит изучать шаблоны уже сегодня, несмотря на существующий к ним скепсис?
Статья пытается ответить на все эти и многие другие вопросы.
https://habr.com/ru/articles/599801/
#cpp #programming
👉 @cpp_lib