├── LICENSE └── README.md /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 JoshuaJakowlew 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # C++ FAQ 2 | В этом репозитории собрана основная информация с часто 3 | задаваемыми вопросами и полезными источниками. 4 | 5 | ```TODO``` (Если вы нашли что-то интересное из мира С++, обнаружили, что какая-то информация устарела - [оповестите нас](https://github.com/JoshuaJakowlew/cppfaq/issues)!) 6 | 7 | --- 8 | 9 | ### :pushpin: Справочная информация 10 | 11 | ##### Стандарт языка и документация 12 | 13 | * [Документация по С++ (cppreference)](https://en.cppreference.com/w) 14 | * [Документация по С++ от Microsoft (MSDN)](https://docs.microsoft.com/en-us/cpp/cpp/cpp-language-reference?view=msvc-170) 15 | * [Последний драфт стандарта (Working Draft)](http://eel.is/c++draft/) 16 | 17 | ##### Список выпущенных стандартов языка и изменения которые они привнесли 18 | 19 | - Нововведения С++11 [📄Текст](https://en.cppreference.com/w/cpp/11) [📺Видео](https://www.youtube.com/watch?v=ZOmZCj5ijck&ab_channel=PVS-StudioRu) 20 | - Нововведения С++14 [📄Текст](https://en.cppreference.com/w/cpp/14) [📺Видео](https://www.youtube.com/watch?v=5TTS9zr9PGk&ab_channel=PVS-StudioRu) 21 | - Нововведения С++17 [📄Текст](https://en.cppreference.com/w/cpp/17) [📺Видео](https://www.youtube.com/watch?v=rRMgJEZVY04&ab_channel=PVS-StudioRu) 22 | - Нововведения С++20 [📄Текст](https://en.cppreference.com/w/cpp/20) [📺Видео](https://www.youtube.com/watch?v=KPuYn_fUdxc&t=3s&ab_channel=PVS-StudioRu) 23 | - Нововведения С++23 [📄Текст](https://en.cppreference.com/w/cpp/23) [📺Видео](https://www.youtube.com/watch?v=mQzijnbnTO4&t=968s) 24 | - [Список нововведений С++11-23 с примерами](https://github.com/AnthonyCalandra/modern-cpp-features) 25 | 26 | ### :pushpin: Онлайн-сервисы 27 | 28 | ##### Основные сервисы с помощью которых можно собрать, запустить, протестировать, разместить ваш программный код 29 | 30 | - Сервисы для сборки и запуска кода: 31 | * :heavy_plus_sign: [GodBolt - Сборник компиляторов/дизассемблеров](https://godbolt.org) 32 | - позволяет запускать код через множество разных компиляторов GCC, Clang, MSVC ... 33 | - показывает хорошо аннотированный вывод сборки 34 | - множество компиляторов с множеством разных версий, в том числе с экспериментальными функциями 35 | - поддерживает несколько популярных библиотек (ranges, {fmt}, …) 36 | - отличный текстовый редактор с несколькими курсорами, режим VIM, темный режим, … 37 | - возможен обмен кода между Compiler Explorer, C++ Insights и Quick Bench 38 | * [Onlinegdb - Онлайн компилятор и отладчик](https://www.onlinegdb.com/) 39 | - С++03 - C++20 40 | - GDB отладчик 41 | * [Wandbox - Сборник компиляторов](https://wandbox.org/) 42 | - GCC, Clang, C++03 - C++2a, Boost 43 | * [CPP.SH - Сборник компиляторов](https://cpp.sh/) 44 | - Clang, C++03 - C++23 (experimental) 45 | 46 | - Как оно работает 47 | * [Взгляните на свой исходный код глазами компилятора (C++ Insights)](https://cppinsights.io) 48 | 49 | - Сервисы для профилирования кода: 50 | * :heavy_plus_sign: [Perfbench](https://perfbench.com/) 51 | * [Quick-Bench](https://quick-bench.com/) 52 | 53 | - Сервисы для размещение кода: 54 | * :heavy_plus_sign: [GitHub Gist](https://gist.github.com) 55 | * [Pastebin](https://pastebin.com) 56 | 57 | 58 | ### :pushpin: Сообщество 59 | 60 | ##### Основные форумы и Q&A площадки 61 | 62 | - :heavy_plus_sign: [StackOverflow](https://stackoverflow.com/) 63 | - [StackOverflow (Русская ветка)](https://ru.stackoverflow.com/) 64 | - [CyberForum](https://www.cyberforum.ru/) 65 | 66 | ##### Основные сообщества в различных социальных сетях, где можно поучаствовать в обсуждении вопросов и решение проблем 67 | 68 | - Telegram каналы 69 | * [pro.cxx (Для людей с опытом)](https://t.me/ProCxx) 70 | * [supapro.cxx (Чат для тех, кто немного знает C++)](https://t.me/supapro) 71 | * [pro.buildsystems (Чат про системы сборки)](https://t.me/probuildsystems) 72 | * [Qt](https://t.me/qt_chat) 73 | - Беседы в vk.com 74 | * [Nemezida C++](https://vk.me/join/7tQtOXRZLIPkOh46aN5nN4WNEir47wHYtBE=) 75 | * [Nemezida Flood](https://vk.me/join/r2GYEBn3TqU9UI5hXBq917IrDXCTOTpT5mU=) 76 | - Локальные C++ User Groups 77 | * [C++ Moscow](https://t.me/cppmoscow_info) — Московское сообщество программистов на C++. 78 | 79 | ```TODO``` (Если вы знаете еще какие-то интересные сообщества, [оповестите нас](https://github.com/JoshuaJakowlew/cppfaq/issues)!) 80 | 81 | ### :pushpin: Учебные материалы 82 | 83 | ##### Книги на которые стоит обратить свое внимание (разделены на 3 уровня сложности) 84 | 85 | * :green_book: Начальный 86 | - :heavy_plus_sign: Стенли Б. Липпман - Язык программирования C++. Базовый курс. [[Скачать книгу](https://disk.yandex.ru/i/O_9ghFjZMr8bBA)] 87 | - Стивен Прата - Язык программирования C++. Лекции и упражнения [[Скачать книгу](https://disk.yandex.ru/i/QSR598p9CpG5tA)] 88 | - Бьёрн Страуструп - Принципы и практика с использованием C++ [[Скачать книгу](https://disk.yandex.ru/i/1EJ6hlr7g_glhw)] 89 | * :blue_book: Средний 90 | - Скотт Мейерс - Эффективный и современный С++. 42 совета по использованию C++11 и C++14 [[Скачать книгу](https://disk.yandex.ru/i/BKzDWpscRPl_lQ)] 91 | - Яцек Галовиц - C++17 STL. Стандартная библиотека шаблонов [[Скачать книгу](https://disk.yandex.ru/i/UcSk25yhTVBNVg)] 92 | * :orange_book: Выше среднего 93 | - Ivor Horton Peter Van Weert "Beginning C++20 - From Novice to Professional" (6th edition) 94 | - Nicolai M. Josuttis "С++17 The Complete Guide" 95 | - Marc Gregorie "Professional C++" (4th edition) 96 | - Vardan Grigoryan, Shunguang Wu "Expert C++ - Become a proficient programmer by learning coding best practices with C++17 and C++20's latest features" 97 | - David Vandevoorde, Nicolai M. Josuttis, Douglas Gregor "C++ Templates - The Complete Guide" (2nd edition) 98 | - Antony Polukhin, Boost C++ Application Development Cookbook 99 | - Bjorn Andrist, Viktor Sehr, C++ High Performance: Master the art of optimizing the functioning of your C++ code (2nd Edition) 100 | - Rainer Grimm, C++20: Get the Details 101 | - Paul Deitel, Harvey Deitel, C++20 for Programmers: An Objects-Natural Approach 102 | 103 | ##### Онлайн-ресурсы 104 | 105 | - [CppCoreGuidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) - список рекомендаций "как надо" от разработчиков языка. 106 | - [Johnny’s Software Lab](https://johnnysswlab.com/) - неплохие гайды по оптимизации структур данных. 107 | 108 | ##### Онлайн-курсы 109 | 110 | - Для ознакомления с языком, если у вас вообще нет опыта. 111 | * [Learn C++](https://learncpp.com/) - сайт с учебными материалами для новичков 112 | * [Введение в программирование C++ ](https://stepik.org/course/363/promo) 113 | * [Программирование на языке C++ ](https://stepik.org/course/7/promo) 114 | * [Изучение синтаксиса С++ с примерами](https://www.programiz.com/cpp-programming) 115 | * [ [OTUS] "С++ для начинающих разработчиков 2020"](https://disk.yandex.ru/d/kcsmDi1uDcKdcw?w=1) 116 | 117 | - Для тех, кто имеет уже базовые знания в языке. 118 | * [ [Яндекс Практикум] "Разработчик C++"](https://practicum.yandex.ru/profile/cpp/) 119 | * [ [Яндекс Практикум] "Курс «Мидл C++ разработчик»"](https://practicum.yandex.ru/promo/courses/middle-cpp-ts/) 120 | * [ [Бывшая Coursera] "Основы разработки на C++"](https://cppcourse.ru/) 121 | * [ [OTUS] "Разработчик C++ 2020"](https://disk.yandex.ru/d/01KzEC-oIrpUqA?w=1) 122 | * [ [Повторение материала] ](https://thispointer.com/c11-tutorial/) 123 | 124 | ##### Лекционный материал 125 | 126 | - Константина Владимирова (LLVM Compiler Devloper) 127 | * [Великолепные лекции по С++](https://www.youtube.com/channel/UCvmBEbr9NZt7UEh9doI7n_A/featured) 128 | * [C++ базовый курс, MIPT, ILab](https://www.youtube.com/watch?v=Bym7UMqpVEY&list=PL3BR09unfgciJ1_K_E914nohpiOiHnpsK) 129 | - Лекторий ФПМИ 130 | * [Введение в С++ (1 курс, осень 2020) ЧАСТЬ №1](https://www.youtube.com/playlist?list=PL4_hYwCyhAvazfCDGyS0wx_hvBmnAAf4h) 131 | * [Введение в С++ (1 курс, весна 2021) ЧАСТЬ №2](https://www.youtube.com/playlist?list=PL4_hYwCyhAvYTzwME4vQoDO8ZINM5trra) 132 | * [Введение в С++ (1 курс, осень-весна 2021-2022)](https://www.youtube.com/playlist?list=PLSaMkqCXRp4Jen1F8YHJpxlj64hJhdoCS) 133 | - Computer Science Center 134 | * [Программирование на C++, часть 1 (осень 2018)](https://www.youtube.com/playlist?list=PLlb7e2G7aSpTFea2FYxp7mFfbZW-xavhL) 135 | * [Программирование на C++, часть 2 (весна 2019)](https://www.youtube.com/playlist?list=PLlb7e2G7aSpRs7YafQ1GgJvyRku10m1RN) 136 | 137 | ##### Ресурсы с задачами для практики и тренировок 138 | 139 | * [Hackerrank](https://www.hackerrank.com/domains/cpp) 140 | * [CodeForces](https://codeforces.com/) 141 | * [Codewars](https://codewars.com/kata/search/cpp?q=&&beta) 142 | * [LeetCode](https://leetcode.com/) 143 | * [CppQuiz](https://cppquiz.org) 144 | 145 | ##### Материалы для изучения алгоритмов и структур данных 146 | 147 | - [Алгоритмы - Теория и Реализация](https://ru.algorithmica.org/cs/graph-traversals/cycle/) 148 | - [Лекции Павла Маврина](https://www.youtube.com/c/pavelmavrin) 149 | - [Реализациями большого количества алгоритмов на разных языках программирования](https://the-algorithms.com) 150 | 151 | - [Algorithms for Modern Hardware (книга по оптимизациям под современное железо)](https://en.algorithmica.org/hpc/) 152 | 153 | - [Тренировки по алгоритмам [Яндекс]](https://yandex.ru/yaintern/algorithm-training) 154 | * Тренировки по алгоритмам от Яндекса [Плейлист](https://www.youtube.com/watch?v=QLhqYNsPIVo&list=PL6Wui14DvQPySdPv5NUqV3i8sDbHkCKC5) 155 | 156 | - [ [OTUS] Алгоритмы для разработчиков 2020](https://disk.yandex.ru/d/JYgqgDt9-7_EXg?w=1) 157 | - [ [Яндекс.Практикум] Алгоритмы для разработчиков 2020](https://yadi.sk/d/igBICEE1ST6NNg) 158 | - [Книги для изучения алгоритмов](https://yadi.sk/d/dQkuPvG9E0nlqQ) 159 | - [Реализации алгоритмов на C++](https://github.com/TheAlgorithms/C-Plus-Plus) 160 | 161 | - Визуальное представление алгоритмов: 162 | * [VisualGo](https://visualgo.net/en) 163 | * [Algorithm Visualizer](https://algorithm-visualizer.org) 164 | 165 | - [Algorithms Specialization от Стэндфордского университета (Coursera)](https://www.coursera.org/browse/computer-science/algorithms) 166 | - [ФПМИ Алгоритмы и структуры данных](https://www.youtube.com/playlist?list=PL4_hYwCyhAvasUkSNdsUKoqcWpw9xl3i1) 167 | - [Алгортимы Ч.1 от Принстонского университета ( Coursera ) ](https://ru.coursera.org/learn/algorithms-part1?action=enroll#syllabus) 168 | - [Алгортимы Ч.2 от Принстонского университета ( Coursera ) ](https://ru.coursera.org/learn/algorithms-part2) 169 | 170 | ##### Интересные (и местами случайные) конференции, статьи и выступления в мире С++ 171 | - [Каталог конференций](https://github.com/PatriotRossii/cpp-conferences) 172 | - Статьи 173 | * [Отличные статьи по С++](http://scrutator.me/) 174 | * [User-defined литералы и магия на интринсиках (разные статьи)](https://wunkolo.github.io/) 175 | * [Настоящая производительность виртуальных функций](https://johnysswlab.com/the-true-price-of-virtual-functions-in-c/) 176 | 177 | - Выступления 178 | * [ [CppCon 2021] Branchless Programming in C++ - Fedor Pikus](https://www.youtube.com/watch?v=g-WPhYREFjk) 179 | * [ [CppCon 2021] Beyond struct: Meta-programming a struct Replacement in C++20 - John Bandela](https://www.youtube.com/watch?v=FXfrojjIo80) 180 | * [ [CppCon 2019] Non-conforming C++: the Secrets the Committee Is Hiding From You - Miro Knejp](https://www.youtube.com/watch?v=IAdLwUXRUvg) 181 | 182 | - Сборник полезных материалов (Сюда стоит посмотреть) 183 | * [Jason Turner (C++ Weekly)](https://www.youtube.com/user/lefticus1) 184 | * [Путеводитель C++ программиста по неопределенному поведению](https://github.com/Nekrolm/ubbook) 185 | * [Визуальные шпаргалки по разным темам языка C++](https://hackingcpp.com/) 186 | * [Сборник разных гайдов/примеров по cmake](https://github.com/onqtam/awesome-cmake) 187 | * [Modern C++ and Native Code (converting from bfilipek.com)](https://www.cppstories.com/) 188 | * [CppNuts](https://www.youtube.com/user/MrRupeshyadav) 189 | * [CppStories](https://www.cppstories.com/p/start-here/) 190 | * [CppCon](https://www.youtube.com/channel/UCMlGfpWw-RUdWX_JbLCukXg) 191 | * [Bisqwit](https://www.youtube.com/channel/UCKTehwyGCKF-b2wo0RKwrcg) 192 | * [Programming and Technology Tutorials(javidx9)](https://www.youtube.com/c/javidx9/videos) 193 | * [Molly Rocket(Handmade Hero)](https://www.youtube.com/c/MollyRocket/videos) 194 | 195 | ### :pushpin: Системы сборки 196 | 197 | ##### Материалы по Cmake 198 | 199 | - Основные ссылки 200 | * [Официальный сайт системы автоматизации сборки программного обеспечения Cmake](https://cmake.org/) 201 | * [Документация](https://cmake.org/documentation/) 202 | 203 | - Cтатьи 204 | * [Полное руководство по CMake. Часть первая: Синтаксис](https://web.archive.org/web/20220528140418/https://habr.com/en/post/431428) 205 | * [Полное руководство по CMake. Часть вторая: Система сборки](https://web.archive.org/web/20220528140444/https://habr.com/en/post/432096) 206 | * [Полное руководство по CMake. Часть третья: Тестирование и пакетирование](https://web.archive.org/web/20220528140513/https://habr.com/en/post/433822) 207 | 208 | - Лекции/Видео/Tutorials 209 | * [Сборка проектов на C++ с использованием CMake [OTUS]](https://www.youtube.com/watch?v=LZwEtbc9gEA) 210 | * [CMake с нуля [SimpleCODING!] :)](https://www.youtube.com/playlist?list=PL6x9Hnsyqn2UwWjSvjCzAY6sEOBrHY7VH) 211 | 212 | - Книги/Справочники 213 | * [Open Source Книга от разработчиков CMake "Mastering CMake"](https://cmake.org/cmake/help/book/mastering-cmake/) 214 | * [Программирование: система построения проектов cmake [Дубров Д.В.]](https://disk.yandex.ru/i/IvnzEcNJseJbMw) 215 | * [CMake Cookbook](https://disk.yandex.ru/i/jwBzh2_JcIViTw) 216 | --------------------------------------------------------------------------------