SlideShare a Scribd company logo
1 of 131
Download to read offline
Antony Polukhin
Полухин Антон
Незаменимый C++
Содержание
●
На C++ больше не пишут?
●
C++ vs. Asm
●
C++ vs. Rust
●
C++ vs. Go
●
C++ vs. (Java + C#)
●
Слабые места C++
●
Что с этим делать
Незаменимый C++
Asm
C++20
Заблуждение №1
На C++ больше не пишут программ
Незаменимый C++
Программы
Незаменимый C++ 5 / 131
Программы ●
Поисковые движки
Незаменимый C++ 6 / 131
Программы ●
Поисковые движки
●
Большинство высоконагруженных програм (Такси)
Незаменимый C++ 7 / 131
Программы ●
Поисковые движки
●
Большинство высоконагруженных програм (Такси)
●
Игры
Незаменимый C++ 8 / 131
Программы ●
Поисковые движки
●
Большинство высоконагруженных програм (Такси)
●
Игры
●
Браузеры
Незаменимый C++ 9 / 131
Программы ●
Поисковые движки
●
Большинство высоконагруженных програм (Такси)
●
Игры
●
Браузеры
●
Спецэффекты и анимация
Незаменимый C++ 10 / 131
Программы ●
Поисковые движки
●
Большинство высоконагруженных програм (Такси)
●
Игры
●
Браузеры
●
Спецэффекты и анимация
●
Компиляторы (не только компиляторы для С++)
Незаменимый C++ 11 / 131
Программы ●
Поисковые движки
●
Большинство высоконагруженных програм (Такси)
●
Игры
●
Браузеры
●
Спецэффекты и анимация
●
Компиляторы (не только компиляторы для С++)
●
«Виртуальные машины»
Незаменимый C++ 12 / 131
Программы ●
Поисковые движки
●
Большинство высоконагруженных програм (Такси)
●
Игры
●
Браузеры
●
Спецэффекты и анимация
●
Компиляторы (не только компиляторы для С++)
●
«Виртуальные машины»
●
Научные программы (CERN и Бозон Хиггса)
Незаменимый C++ 13 / 131
Программы ●
Поисковые движки
●
Большинство высоконагруженных програм (Такси)
●
Игры
●
Браузеры
●
Спецэффекты и анимация
●
Компиляторы (не только компиляторы для С++)
●
«Виртуальные машины»
●
Научные программы (CERN и Бозон Хиггса)
●
Части ОС (Драйверы, userspace)
Незаменимый C++ 14 / 131
Программы ●
Поисковые движки
●
Большинство высоконагруженных програм (Такси)
●
Игры
●
Браузеры
●
Спецэффекты и анимация
●
Компиляторы (не только компиляторы для С++)
●
«Виртуальные машины»
●
Научные программы (CERN и Бозон Хиггса)
●
Части ОС (Драйверы, userspace)
●
Автопром
Незаменимый C++ 15 / 131
Программы ●
Поисковые движки
●
Большинство высоконагруженных програм (Такси)
●
Игры
●
Браузеры
●
Спецэффекты и анимация
●
Компиляторы (не только компиляторы для С++)
●
«Виртуальные машины»
●
Научные программы (CERN и Бозон Хиггса)
●
Части ОС (Драйверы, userspace)
●
Автопром
●
Заводы
Незаменимый C++ 16 / 131
Программы ●
Поисковые движки
●
Большинство высоконагруженных програм (Такси)
●
Игры
●
Браузеры
●
Спецэффекты и анимация
●
Компиляторы (не только компиляторы для С++)
●
«Виртуальные машины»
●
Научные программы (CERN и Бозон Хиггса)
●
Части ОС (Драйверы, userspace)
●
Автопром
●
Заводы
●
Биржа
Незаменимый C++ 17 / 131
Программы ●
Поисковые движки
●
Большинство высоконагруженных програм (Такси)
●
Игры
●
Браузеры
●
Спецэффекты и анимация
●
Компиляторы (не только компиляторы для С++)
●
«Виртуальные машины»
●
Научные программы (CERN и Бозон Хиггса)
●
Части ОС (Драйверы, userspace)
●
Автопром
●
Заводы
●
Биржа
●
Офисные приложения
Незаменимый C++ 18 / 131
ОК, чем C++ привлекает
сегодня?
Незаменимый C++
C++
Незаменимый C++ 20 / 131
C++ + zero-overhead
Незаменимый C++ 21 / 131
C++ + zero-overhead
+ неограниченные возможности
Незаменимый C++ 22 / 131
C++ + zero-overhead
+ неограниченные возможности
+ поддержка огромного количества платформ
Незаменимый C++ 23 / 131
C++ + zero-overhead
+ неограниченные возможности
+ поддержка огромного количества платформ
+ безопасность
Незаменимый C++ 24 / 131
C++ + zero-overhead
+ неограниченные возможности
+ поддержка огромного количества платформ
+ безопасность?
Незаменимый C++ 25 / 131
C++ + zero-overhead
+ неограниченные возможности
+ поддержка огромного количества платформ
+ безопасность?
+ небольшой рантайм
Незаменимый C++ 26 / 131
Сравним с другими языками!
Незаменимый C++
С++ vs. Asm
Незаменимый C++
C++ vs. Asm
Незаменимый C++ 29 / 131
C++ vs. Asm + Ассемблер позволяет выжать максимум из
железа
Незаменимый C++ 30 / 131
C++ vs. Asm + Ассемблер позволяет выжать максимум из
железа
- непереносимый код
Незаменимый C++ 31 / 131
C++ vs. Asm + Ассемблер позволяет выжать максимум из
железа
- непереносимый код
- очень медленная разработка
Незаменимый C++ 32 / 131
C++ vs. Asm + Ассемблер позволяет выжать максимум из
железа
- непереносимый код
- очень медленная разработка
- не всегда быстрее
Незаменимый C++ 33 / 131
C++ vs. Asm + Ассемблер позволяет выжать максимум из
железа
- непереносимый код
- очень медленная разработка
- не всегда быстрее
Незаменимый C++ 34 / 131
Заблуждение №2
Большие программы на C++ работают медленнее чем
на ASM
Незаменимый C++
C++ vs. Asm (или как завалить Asm разработчика)
x % 2361 == 7
Незаменимый C++ 36 / 131
C++ vs. Asm (или как завалить Asm разработчика)
Незаменимый C++ 37 / 131
C++ vs. Asm (или как завалить Asm разработчика)
Незаменимый C++ 38 / 131
С++ vs. Rust
Незаменимый C++
C++ vs. Rust
Незаменимый C++ 40 / 131
C++ vs. Rust + Отличная безопасность?
Незаменимый C++ 41 / 131
C++ vs. Rust + Отличная безопасность?
+ Потенциальная возможность оптимизировать
лучше C++
Незаменимый C++ 42 / 131
Заблуждение №3
Rust более/такой же производительный как C++
Незаменимый C++
Анатомия компилятора (упрощённо)
Незаменимый C++
С++С Rust ...
Middle end
Ada Go
IR
IR
Power PCx86 Alpha ...Arm x86_64
44 / 131
C++ vs. Rust
Незаменимый C++ 45 / 131
Где UB ?
Незаменимый C++ 46 / 131
C++ vs. Rust
Незаменимый C++ 47 / 131
C++ vs. Rust
Незаменимый C++ 48 / 131
C++ vs. Rust
Незаменимый C++ 49 / 131
C++ vs. Rust
Незаменимый C++ 50 / 131
C++ vs. Rust Вроде норм.
Незаменимый C++ 51 / 131
C++ vs. Rust Вроде норм.
Переходим на Rust?
Незаменимый C++ 52 / 131
C++ vs. Rust Вроде норм.
Переходим на Rust?
Oh, wait!..
Незаменимый C++ 53 / 131
C++ vs. Rust Вроде норм.
Переходим на Rust?
Oh, wait!..
C C++ — noop→
C Rust — PAIN!!!!!!!→
Незаменимый C++ 54 / 131
C Rust→
●
unsafe {} нет безопасности→
Незаменимый C++ 55 / 131
C Rust→
●
unsafe {} нет безопасности→
●
Нет возможности использовать C headers
●
Надо генерировать свои
– Обновление библиотек — БОЛЬ!
– Надо headers руками допатчивать
– Мучительные страдания с borrow checker на
сложных С проектах
[https://hackernoon.com/why-im-dropping-
rust-fd1c32986c88]
Незаменимый C++ 56 / 131
Заблуждение №4
Программа написанная на языке Rust X не содержит
ошибок
Незаменимый C++
Anything
●
unsafe или аналоги нет безопасности→
Незаменимый C++ 58 / 131
Anything
●
unsafe или аналоги нет безопасности→
●
если ваша программа компилится, это ещё не
значит что всё ОК
Незаменимый C++ 59 / 131
С++ vs. Go
Незаменимый C++
C++ vs. Go
Незаменимый C++ 61 / 131
C++ vs. Go - <великое множество>
Незаменимый C++ 62 / 131
C++ vs. Go - <великое множество>
+ Асинхронность и многопточность на основе
корутин
Незаменимый C++ 63 / 131
C++ vs. Go - <великое множество>
+ Асинхронность и многопточность на основе
корутин
●
Boost.Fibers
Незаменимый C++ 64 / 131
C++ vs. Go - <великое множество>
+ Асинхронность и многопточность на основе
корутин
●
Boost.Fibers
●
Yandex.Taxi userver
Незаменимый C++ 65 / 131
C++ vs. Go - <великое множество>
+ Асинхронность и многопточность на основе
корутин
●
Boost.Fibers
●
Yandex.Taxi userver
●
Quantum
Незаменимый C++ 66 / 131
C++ vs. Go - <великое множество>
+ Асинхронность и многопточность на основе
корутин
●
Boost.Fibers
●
Yandex.Taxi userver
●
Quantum
●
Folly fibers
Незаменимый C++ 67 / 131
C++ vs. Go - <великое множество>
+ Асинхронность и многопточность на основе
корутин
●
Boost.Fibers
●
Yandex.Taxi userver
●
Quantum
●
Folly fibers
●
Coroutines TS
Незаменимый C++ 68 / 131
C++ vs. Go - <великое множество>
+ Асинхронность и многопточность на основе
корутин
●
Boost.Fibers
●
Yandex.Taxi userver
●
Quantum
●
Folly fibers
●
Coroutines TS
●
C++20
Незаменимый C++ 69 / 131
Python vs. Go Go скорее конкурент Python, чем C++
Незаменимый C++ 70 / 131
Заблуждение №5
Бенчмарки показывают что прогарммы на X быстрее
C++
Незаменимый C++
Добро пожаловать в мир
«честных» бенчмарков!
Незаменимый C++
Типичные
ошибки
●
Отключается сборщик мусора
Незаменимый C++ 73 / 131
Типичные
ошибки
●
Отключается сборщик мусора
●
Код написан не на C++
Незаменимый C++ 74 / 131
Типичные
ошибки
●
Отключается сборщик мусора
●
Код на C++ написан в стиле float* f = new float;
Незаменимый C++ 75 / 131
Типичные
ошибки
●
Отключается сборщик мусора
●
Код на C++ написан в стиле float* f = new float;
●
На Х написана другая программа
Незаменимый C++ 76 / 131
Типичные
ошибки
●
Отключается сборщик мусора
●
Код на C++ написан в стиле float* f = new float;
●
На Х написана другая программа
●
Тестируется библиотека а не язык
Незаменимый C++ 77 / 131
Заблуждение №6
Сборщик мусора не добавляет накладных расходов
Незаменимый C++
Mark and sweep
Незаменимый C++ 79 / 131
structures
struct list_node {
list_node* next;
list_node* prev;
};
struct slist_node {
slist_node* next;
};
Незаменимый C++ 80 / 131
structures
vector<void*> root;
Незаменимый C++ 81 / 131
structures
vector<void*> root; // root[0] — это slist_node или list_node?
Незаменимый C++ 82 / 131
structures
vector<void*> root; // Сколько указателей и где они?
vector<Object*> root;
Незаменимый C++ 83 / 131
structures
struct list_node {
__meta vptr;
list_node* next;
list_node* prev;
};
struct slist_node {
__meta vptr;
slist_node* next;
};
Незаменимый C++ 84 / 131
Stop the world ●
Все потоки останавливаются
Незаменимый C++ 85 / 131
Stop the world ●
Все потоки останавливаются
●
Проходим по всем узлам графа, помечая
достижимые узлы
Незаменимый C++ 86 / 131
Stop the world ●
Все потоки останавливаются
●
Проходим по всем узлам графа, помечая
достижимые узлы
●
????
Незаменимый C++ 87 / 131
Stop the world ●
Все потоки останавливаются
●
Проходим по всем узлам графа, помечая
достижимые узлы
●
????
●
Profit
Незаменимый C++ 88 / 131
Stop the world ●
Все потоки останавливаются
●
Проходим по всем узлам графа, помечая
достижимые узлы
●
????
●
Profit
●
На современном железе больше 1 ядра!
Незаменимый C++ 89 / 131
Stop the world ●
Все потоки останавливаются
●
Проходим по всем узлам графа, помечая
достижимые узлы
●
????
●
Profit
●
На современном железе больше 1 ядра!
●
При каждой сборке мусора мы проходимся по
всем узлам постоянно перепроверяя живые→
узлы
Незаменимый C++ 90 / 131
No stop the
world
●
Ничего не останавливается
Незаменимый C++ 91 / 131
No stop the
world
●
Ничего не останавливается
●
Многопоточно разбираем мусор
Незаменимый C++ 92 / 131
No stop the
world
●
Ничего не останавливается
●
Многопоточно разбираем мусор
●
Ура!
Незаменимый C++ 93 / 131
No stop the
world
●
Ничего не останавливается
●
Многопоточно разбираем мусор
●
Ура!
●
НО
Незаменимый C++ 94 / 131
No stop the
world
●
Ничего не останавливается
●
Многопоточно разбираем мусор
●
Ура!
●
НО
●
Нам нужно синхронизировать все потоки через
атомарные инструкции
Незаменимый C++ 95 / 131
No stop the
world
●
Ничего не останавливается
●
Многопоточно разбираем мусор
●
Ура!
●
НО
●
Нам нужно синхронизировать все потоки через
атомарные инструкции
●
Это очень дорого, если не мы последними
трогали ресурс
Незаменимый C++ 96 / 131
No stop the
world
●
Ничего не останавливается
●
Многопоточно разбираем мусор
●
Ура!
●
НО
●
Нам нужно синхронизировать все потоки через
атомарные инструкции
●
Это очень дорого, если не мы последними
трогали ресурс
●
Мы делаем это при каждой сборке мусора!
Незаменимый C++ 97 / 131
+ Не проходим
лишние разы
Незаменимый C++ 98 / 131
structures
struct list_node {
shared_ptr<list_node> next; // atomic refcounter
shared_ptr<list_node> prev; // atomic refcounter
};
struct slist_node {
shared_ptr<slist_node> next; // atomic refcounter
};
Незаменимый C++ 99 / 131
Это ещё не всё!
shared_ptr<Object> some;
Незаменимый C++ 100 / 131
Это ещё не всё!
shared_ptr<Object> some; // Скоро будет больно!
Незаменимый C++ 101 / 131
Это ещё не всё!
shared_ptr<Object> some; // Скоро будет больно!
shared_ptr<Object> prev = some.a; // ...
Незаменимый C++ 102 / 131
Это ещё не всё!
shared_ptr<Object> some; // Скоро будет больно!
shared_ptr<Object> prev = some.a; // ...
prev.a = some; // Циклические ссылки!
Незаменимый C++ 103 / 131
Trade-offs
Незаменимый C++ 104 / 131
Trade-offs ●
Плавающий мусор
Незаменимый C++ 105 / 131
Trade-offs ●
Плавающий мусор
●
… или удар по производительности
Незаменимый C++ 106 / 131
Trade-offs ●
Плавающий мусор
●
… или удар по производительности
●
Останавливать все потоки и тормозить с
непредсказуемыми задержками
Незаменимый C++ 107 / 131
Trade-offs ●
Плавающий мусор
●
… или удар по производительности
●
Останавливать все потоки и тормозить с
непредсказуемыми задержками
●
… или ничего не останавливать и тратить CPU
такты впустую
Незаменимый C++ 108 / 131
Trade-offs ●
Плавающий мусор
●
… или удар по производительности
●
Останавливать все потоки и тормозить с
непредсказуемыми задержками
●
… или ничего не останавливать и тратить CPU
такты впустую
●
Плата за Object*
Незаменимый C++ 109 / 131
С++ vs. (Java + C#)
Незаменимый C++
C# ?? Java
Незаменимый C++ 111 / 131
C# ?? Java ●
См. «Сборщики Мусора»
Незаменимый C++ 112 / 131
Logstash – Программа для сбора, трансформации и
складирования логов.
Бесплатное и очень популярное Open Source
приложение на Java.
Что может пойти не так?
Незаменимый C++ 113 / 131
Logstash – Программа для сбора, трансформации и
складирования логов.
Бесплатное и очень популярное Open Source
приложение на Java.
Что может пойти не так?
Незаменимый C++ 114 / 131
Слабые места C++
Незаменимый C++
C++
Незаменимый C++ 116 / 131
C++ - скрытый высокий порог вхождения
- неограниченные возможности
- проблемы с безопасностью
Незаменимый C++ 117 / 131
C++ - скрытый высокий порог вхождения
- неограниченные возможности
- проблемы с безопасностью
- отсутствие изкоробочности
- крошечная стандартная библиотека
- отсутствие готовой инфраструктуры
Незаменимый C++ 118 / 131
ОК, а что делать то?
Незаменимый C++
Незаменимый C++ 120 / 131
Итоги
Незаменимый C++
Итоги
Незаменимый C++ 122 / 131
Итоги ●
C++ везде
Незаменимый C++ 123 / 131
Итоги ●
C++ везде
●
C++ крайне популярен
Незаменимый C++ 124 / 131
Итоги ●
C++ везде
●
C++ крайне популярен
●
С++ - самый производительный инструмент для
написания больших приложений
Незаменимый C++ 125 / 131
Итоги ●
C++ везде
●
C++ крайне популярен
●
С++ - самый производительный инструмент для
написания больших приложений
●
Относитесь со скепсисом к бенчмаркам
Незаменимый C++ 126 / 131
Итоги ●
C++ везде
●
C++ крайне популярен
●
С++ - самый производительный инструмент для
написания больших приложений
●
Относитесь со скепсисом к бенчмаркам
●
Не верьте managed языкам, которые говорят что
они быстрее C++
Незаменимый C++ 127 / 131
Итоги ●
C++ везде
●
C++ крайне популярен
●
С++ - самый производительный инструмент для
написания больших приложений
●
Относитесь со скепсисом к бенчмаркам
●
Не верьте managed языкам, которые говорят что
они быстрее C++
●
С++ не идеален!..
Незаменимый C++ 128 / 131
Итоги ●
C++ везде
●
C++ крайне популярен
●
С++ - самый производительный инструмент для
написания больших приложений
●
Относитесь со скепсисом к бенчмаркам
●
Не верьте managed языкам, которые говорят что
они быстрее C++
●
С++ не идеален!..
●
...но это исправимо
Незаменимый C++ 129 / 131
Спасибо
Полухин Антон
Старший разработчик Yandex.Taxi
antoshkka@yandex-team.ru
antoshkka@gmail.com
https://github.com/apolukhin
https://stdcpp.ru/

More Related Content

Similar to Незаменимый С++. Антон Полухин. CoreHard Spring 2019

Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Ontico
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
it-people
 
Взаимодействие Go и C-библиотек. Go и Erlang
Взаимодействие Go и C-библиотек. Go и ErlangВзаимодействие Go и C-библиотек. Go и Erlang
Взаимодействие Go и C-библиотек. Go и Erlang
DevDay
 
20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov
Computer Science Club
 

Similar to Незаменимый С++. Антон Полухин. CoreHard Spring 2019 (20)

Контроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времениКонтроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времени
 
Характеристики языка С++
Характеристики языка С++Характеристики языка С++
Характеристики языка С++
 
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
 
PVS-Studio vs Chromium
PVS-Studio vs ChromiumPVS-Studio vs Chromium
PVS-Studio vs Chromium
 
Эффективный C++
Эффективный C++Эффективный C++
Эффективный C++
 
C++ трюки из Такси. Антон Полухин ➠ CoreHard Autumn 2019
C++ трюки из Такси. Антон Полухин ➠ CoreHard Autumn 2019C++ трюки из Такси. Антон Полухин ➠ CoreHard Autumn 2019
C++ трюки из Такси. Антон Полухин ➠ CoreHard Autumn 2019
 
Профилирование кода на C/C++ в *nix-системах / Александр Алексеев (Postgres P...
Профилирование кода на C/C++ в *nix-системах / Александр Алексеев (Postgres P...Профилирование кода на C/C++ в *nix-системах / Александр Алексеев (Postgres P...
Профилирование кода на C/C++ в *nix-системах / Александр Алексеев (Postgres P...
 
Mixing c++ and python
Mixing c++ and pythonMixing c++ and python
Mixing c++ and python
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
 
C++0x
C++0xC++0x
C++0x
 
низкоуровневое программирование сегодня новые стандарты с++, программирован...
низкоуровневое программирование сегодня   новые стандарты с++, программирован...низкоуровневое программирование сегодня   новые стандарты с++, программирован...
низкоуровневое программирование сегодня новые стандарты с++, программирован...
 
Взаимодействие Go и C-библиотек. Go и Erlang
Взаимодействие Go и C-библиотек. Go и ErlangВзаимодействие Go и C-библиотек. Go и Erlang
Взаимодействие Go и C-библиотек. Go и Erlang
 
20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov
 
Use Grunt Luke
Use Grunt LukeUse Grunt Luke
Use Grunt Luke
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Когда в C# не хватает C++
Когда в C# не хватает C++Когда в C# не хватает C++
Когда в C# не хватает C++
 
Deep c slides_oct2011_rus
Deep c slides_oct2011_rusDeep c slides_oct2011_rus
Deep c slides_oct2011_rus
 
Drupal conf2011 2_kolosov
Drupal conf2011 2_kolosovDrupal conf2011 2_kolosov
Drupal conf2011 2_kolosov
 
Tech Talks @NSU: Технологии кросс-платформенной разработки мобильных бизнес-п...
Tech Talks @NSU: Технологии кросс-платформенной разработки мобильных бизнес-п...Tech Talks @NSU: Технологии кросс-платформенной разработки мобильных бизнес-п...
Tech Talks @NSU: Технологии кросс-платформенной разработки мобильных бизнес-п...
 

More from corehard_by

C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
corehard_by
 
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia KazakovaC++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
corehard_by
 
C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...
C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...
C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...
corehard_by
 

More from corehard_by (20)

C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
 
C++ CoreHard Autumn 2018. Что должен знать каждый C++ программист или Как про...
C++ CoreHard Autumn 2018. Что должен знать каждый C++ программист или Как про...C++ CoreHard Autumn 2018. Что должен знать каждый C++ программист или Как про...
C++ CoreHard Autumn 2018. Что должен знать каждый C++ программист или Как про...
 
C++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений Охотников
C++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений ОхотниковC++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений Охотников
C++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений Охотников
 
C++ CoreHard Autumn 2018. Знай свое "железо": иерархия памяти - Александр Титов
C++ CoreHard Autumn 2018. Знай свое "железо": иерархия памяти - Александр ТитовC++ CoreHard Autumn 2018. Знай свое "железо": иерархия памяти - Александр Титов
C++ CoreHard Autumn 2018. Знай свое "железо": иерархия памяти - Александр Титов
 
C++ CoreHard Autumn 2018. Информационная безопасность и разработка ПО - Евген...
C++ CoreHard Autumn 2018. Информационная безопасность и разработка ПО - Евген...C++ CoreHard Autumn 2018. Информационная безопасность и разработка ПО - Евген...
C++ CoreHard Autumn 2018. Информационная безопасность и разработка ПО - Евген...
 
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья ШишковC++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
 
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
 
C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...
C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...
C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...
 
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...
 
C++ CoreHard Autumn 2018. Concurrency and Parallelism in C++17 and C++20/23 -...
C++ CoreHard Autumn 2018. Concurrency and Parallelism in C++17 and C++20/23 -...C++ CoreHard Autumn 2018. Concurrency and Parallelism in C++17 and C++20/23 -...
C++ CoreHard Autumn 2018. Concurrency and Parallelism in C++17 and C++20/23 -...
 
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
 
C++ Corehard Autumn 2018. Обучаем на Python, применяем на C++ - Павел Филонов
C++ Corehard Autumn 2018. Обучаем на Python, применяем на C++ - Павел ФилоновC++ Corehard Autumn 2018. Обучаем на Python, применяем на C++ - Павел Филонов
C++ Corehard Autumn 2018. Обучаем на Python, применяем на C++ - Павел Филонов
 
C++ CoreHard Autumn 2018. Asynchronous programming with ranges - Ivan Čukić
C++ CoreHard Autumn 2018. Asynchronous programming with ranges - Ivan ČukićC++ CoreHard Autumn 2018. Asynchronous programming with ranges - Ivan Čukić
C++ CoreHard Autumn 2018. Asynchronous programming with ranges - Ivan Čukić
 
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia KazakovaC++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
 
C++ CoreHard Autumn 2018. Полезный constexpr - Антон Полухин
C++ CoreHard Autumn 2018. Полезный constexpr - Антон ПолухинC++ CoreHard Autumn 2018. Полезный constexpr - Антон Полухин
C++ CoreHard Autumn 2018. Полезный constexpr - Антон Полухин
 
C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...
C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...
C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...
 
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
 
Как помочь и как помешать компилятору. Андрей Олейников ➠ CoreHard Autumn 2019
Как помочь и как помешать компилятору. Андрей Олейников ➠  CoreHard Autumn 2019Как помочь и как помешать компилятору. Андрей Олейников ➠  CoreHard Autumn 2019
Как помочь и как помешать компилятору. Андрей Олейников ➠ CoreHard Autumn 2019
 
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019
 
Статичный SQL в С++14. Евгений Захаров ➠ CoreHard Autumn 2019
Статичный SQL в С++14. Евгений Захаров ➠  CoreHard Autumn 2019Статичный SQL в С++14. Евгений Захаров ➠  CoreHard Autumn 2019
Статичный SQL в С++14. Евгений Захаров ➠ CoreHard Autumn 2019
 

Незаменимый С++. Антон Полухин. CoreHard Spring 2019