низкоуровневое программирование сегодня новые...
-
Upload
comaqaby -
Category
Technology
-
view
963 -
download
0
Transcript of низкоуровневое программирование сегодня новые...
Низкоуровневое программирование сегодня:
новые стандарты С++, программирование
контроллеров, тренды IoT
Антон Семенченко
Обо мне
Антон Семенченкоавтоматизированное тестирование, низкоуровневая разработка, управление, продажиОснователь DPI.SolutionsМенеджер в EPAM SystemsТренер по автоматизации и
управлению
Примеры проектов
1. Холодильник спамер2. Безопасный фитнес браслет и стоимость безопасности3. Умный дом симпатизирующий грабителям4. ПО для Атомных Реакторов5. Умный дом, Ардуино, и дети дошкольного возраста6. Умные устройства: например, активные камеры7. Камеры – «хакеры»8. Google Translate и смерть Эсперанто9. Готовь сани \ лыжи летом10.Эмуляция тяжелой техники и снежные истории страховых
агентов11.Дополненая реальность: Магазин, Музей и Банк12.Виртуальная реальность13.Дубайские рассказы о самом умном роботе в мире из
сердца Сибири
Разнообразие
Сокращается ли внутреннее разнообразие систем в процессе эволюции?
Живая и неживая природа, язык, культура, технологии
История С++
1983 – зарождение языка
1998 – стандарт С++ 98
2003 – стандарт С++ 03
2011 – С++ 11
2014 – С++ 14
2015 – C++ Core Guidelines
2017 – C++ 17 (ожидаемо)
C++ Core Guidelines
Бьерн Страуструп
Герб Саттер
● Опубликованы в сентябре 2015● Open source (github)● MIT-style (contributor) лицензия● Открыты для дополнения● Сейчас: около 250 страниц А4
https://github.com/isocpp/CppCoreGuidelines
Core Guidelines: идеология
"Within C++ is a smaller, simpler, safer language struggling to get out." - Bjarne Stroustrup
● Современный С++ 11/14/17 (прицел на будущее)● Автоматизируемые правила, где возможно● Безопасность и простота кода● Фокус на высокоуровневых вещах:
○ типы и интерфейсы○ управление ресурсами (в т.ч. памятью)○ потокобезопасность
Core Guidelines: цели
● Использование накопленных годами знаний● Унификация практик между организациями● Получить качественный код:
○ статически типо-безопасный○ без утечки ресурсов○ с ранней диагностикой ошибок в логике
● Помочь новичкам в изучении С++
1. Непосредственно правила2. Guideline Support Library (GSL, header-only) -
функции и типы, рекомендуемые Гайдланамиhttps://github.com/Microsoft/GSL
3. Checker Tool (Visual Studio Add-in) - автоматическая проверка правилhttps://blogs.msdn.microsoft.com/vcblog/2015/12/03/c-core-guidelines-checkers-available-for-vs-2015-update-1/
Core Guidelines: компоненты
С++: полезные ссылки
https://isocpp.org/ – сайт, посвященный работе комитета стандартизации С++ и сопутствующим вопросам
http://open-std.org/JTC1/SC22/WG21/docs/papers/2016/n4606.pdf – черновой вариант следующего стандарта С++17
https://google.github.io/styleguide/cppguide.html – Google C++ Style Guide
http://www.codingstandard.com/section/index/ – High Integrity C++ Coding Standard
Литература по С++
1. Гради Буч «Объектно-ориентированный анализ и проектирование с примерами приложений на С++»На мой взгляд это одна из лучших книг для настоящего, а не шапочного, знакомство с ООП.2. Scott Meyers «Effective C++» / «More Effective C++», издание 1, 2 и 3Книга состоит из набора атомарных советов – областей С++. Это одна из настоятельно рекомендованных к прочтению книг в большинстве топовых IT компаний, например Microsoft.3. Scott Meyers «Effective STL»Советую прочитать книгу хотя бы раз и в дальнейшем обращаться как к справочнику.4. Саттер Герб «Решение сложных задач на С++», часть 1 и 2.Очень советую прочитать обе книги дважды от корки до корки, а потом самостоятельно прорешать предложенные задачи.5. Scott Meyers «Effective Modern C++»Советую прочитать дважды. Книга состоит из набора атомарных советов – областей С++. Это одна из настоятельно рекомендованных к прочтению книг в большинстве топовых IT компаний, например Microsoft.
CoreHard C++ Community
https://corehard.by/ – сайт сообщества
http://conference.corehard.by/ – сайт конференций сообщества