From 2314279558036f9655fbc0a75f4d371b3dd53f13 Mon Sep 17 00:00:00 2001 From: Georgiy Yakovlev Date: Sun, 21 Aug 2022 22:37:08 +0300 Subject: [PATCH] Update README.md Restructure FAQ, add some resources --- README.md | 242 ++++++++++++++++++++++++++---------------------------- 1 file changed, 116 insertions(+), 126 deletions(-) diff --git a/README.md b/README.md index 54d43bb..6809b34 100644 --- a/README.md +++ b/README.md @@ -2,20 +2,30 @@ В этом репозитории собрана основная информация с часто задаваемыми вопросами и полезными источниками. +```TODO``` (Если вы нашли что-то интересное из мира С++, обнаружили, что какая-то информация устарела - [оповестите нас](https://github.com/JoshuaJakowlew/cppfaq/issues)!) + --- -### :pushpin: Как оно работает :pushpin: ### -##### Основные источники к которым обращаются разработчики на С++ когда возникает вопрос, а как это работает (должно работать) ##### +### :pushpin: Справочная информация + +##### Стандарт языка и документация * [Документация по С++ (cppreference)](https://en.cppreference.com/w) +* [Документация по С++ от Microsoft (MSDN)](https://docs.microsoft.com/en-us/cpp/cpp/cpp-language-reference?view=msvc-170) * [Последний драфт стандарта (Working Draft)](http://eel.is/c++draft/) -* [Платформа вопросов и ответов по программированию (stackoverflow)](https://stackoverflow.com/questions/tagged/c%2b%2b) -* [Взгляните на свой исходный код глазами компилятора (C++ Insights)](https://cppinsights.io) ---- +##### Список выпущенных стандартов языка и изменения которые они привнесли -### :pushpin: Где (как) запустить, посмотреть и поделиться кодом :pushpin: ### -##### Основные сервисы с помощью которых можно собрать, запустить, протестировать, разместить ваш програмный код ##### +- Нововведения С++11 [📄Текст](https://en.cppreference.com/w/cpp/11) [📺Видео](https://www.youtube.com/watch?v=ZOmZCj5ijck&ab_channel=PVS-StudioRu) +- Нововведения С++14 [📄Текст](https://en.cppreference.com/w/cpp/14) [📺Видео](https://www.youtube.com/watch?v=5TTS9zr9PGk&ab_channel=PVS-StudioRu) +- Нововведения С++17 [📄Текст](https://en.cppreference.com/w/cpp/17) [📺Видео](https://www.youtube.com/watch?v=rRMgJEZVY04&ab_channel=PVS-StudioRu) +- Нововведения С++20 [📄Текст](https://en.cppreference.com/w/cpp/20) [📺Видео](https://www.youtube.com/watch?v=KPuYn_fUdxc&t=3s&ab_channel=PVS-StudioRu) +- Нововведения С++23 [📄Текст](https://en.cppreference.com/w/cpp/23) [📺Видео](https://www.youtube.com/watch?v=mQzijnbnTO4&t=968s) +- [Список нововведений С++11-23 с примерами](https://github.com/AnthonyCalandra/modern-cpp-features) + +### :pushpin: Онлайн-сервисы + +##### Основные сервисы с помощью которых можно собрать, запустить, протестировать, разместить ваш програмный код - Сервисы для сборки и запуска кода: * :heavy_plus_sign: [GodBolt - Сборник компиляторов/дизассемблеров](https://godbolt.org) @@ -25,90 +35,71 @@ - поддерживает несколько популярных библиотек (ranges, {fmt}, …) - отличный текстовый редактор с несколькими курсорами, режим VIM, темный режим, … - возможен обмен кода между Compiler Explorer, C++ Insights и Quick Bench + * [Onlinegdb - Онлайн компилятор и отладчик](https://www.onlinegdb.com/) + - С++03 - C++20 + - GDB отладчик * [Wandbox - Сборник компиляторов](https://wandbox.org/) - GCC, Clang, C++03 - C++2a, Boost * [CPP.SH - Сборник компиляторов](https://cpp.sh/) - Clang, C++03 - C++23 (experimental) +- Как оно работает + * [Взгляните на свой исходный код глазами компилятора (C++ Insights)](https://cppinsights.io) + - Сервисы для профилирования кода: * :heavy_plus_sign: [Perfbench](https://perfbench.com/) * [Quick-Bench](https://quick-bench.com/) - + - Сервисы для размещение кода: * :heavy_plus_sign: [GitHub Gist](https://gist.github.com) * [Pastebin](https://pastebin.com) ---- -### :pushpin: Где (кто) мне может помочь, проконсультировать :pushpin: ### -##### Основные сообщества в различных социальных сетях, где можно поучаствовать в обсуждении вопросов и решение проблем ##### +### :pushpin: Сообщество + +##### Основные форумы и Q&A площадки + +- :heavy_plus_sign: [StackOverflow](https://stackoverflow.com/) +- [StackOverflow (Русская ветка)](https://ru.stackoverflow.com/) +- [CyberForum](https://www.cyberforum.ru/) + +##### Основные сообщества в различных социальных сетях, где можно поучаствовать в обсуждении вопросов и решение проблем - Telegram каналы * [pro.cxx (Для людей с опытом)](https://t.me/ProCxx) * [supapro.cxx (Чат для тех, кто немного знает C++)](https://t.me/supapro) - + * [pro.buildsystems (Чат про системы сборки)](https://t.me/probuildsystems) + * [C/C++ UA (Чат на Украинском языке)](https://t.me/cppua) + * [Qt](https://t.me/qt_chat) + * [Android NDK](https://t.me/ndk_ru) - Беседы в Vk.com * [Nemezida C++](https://vk.me/join/7tQtOXRZLIPkOh46aN5nN4WNEir47wHYtBE=) * [Nemezida Flood](https://vk.me/join/r2GYEBn3TqU9UI5hXBq917IrDXCTOTpT5mU=) - * [С++ беседа от группы code blog](https://vk.me/join/nvk47HgezGDt485EsI9V9AT6f2I7SGGQSOc=) + * [С++ беседа от группы CODE BLOG](https://vk.me/join/nvk47HgezGDt485EsI9V9AT6f2I7SGGQSOc=) -```TODO``` (Если вы знаете еще какие-то интересные сообщества, [оповестите нас](https://github.com/JoshuaJakowlew/cppfaq/issues)!) +```TODO``` (Если вы знаете еще какие-то интересные сообщества, [оповестите нас](https://github.com/JoshuaJakowlew/cppfaq/issues)!) ---- +### :pushpin: Учебные материалы -### :heavy_check_mark: Нововведения С++ :heavy_check_mark: ### -##### Список выпущенных стандартов языка и изменения которые они привнесли ##### +##### Книги на которые стоит обратить свое внимание (разделены на 3 уровня сложности) -- [Нововведения С++11 (Видео)](https://www.youtube.com/watch?v=ZOmZCj5ijck&ab_channel=PVS-StudioRu) - * [Список нововведений С++11](https://en.cppreference.com/w/cpp/11) -- [Нововведения С++14 (Видео)](https://www.youtube.com/watch?v=5TTS9zr9PGk&ab_channel=PVS-StudioRu) - * [Список нововведений С++14](https://en.cppreference.com/w/cpp/14) -- [Нововведения С++17 (Видео)](https://www.youtube.com/watch?v=rRMgJEZVY04&ab_channel=PVS-StudioRu) - * [Список нововведений С++17](https://en.cppreference.com/w/cpp/17) -- [Нововведения С++20 (Видео)](https://www.youtube.com/watch?v=KPuYn_fUdxc&t=3s&ab_channel=PVS-StudioRu) - * [Список нововведений С++20](https://en.cppreference.com/w/cpp/20) -- [Нововведения С++23 (Видео)](https://www.youtube.com/watch?v=mQzijnbnTO4&t=968s) - * [Список нововведений С++23](https://en.cppreference.com/w/cpp/23) -- [Список нововведений С++11-23 с примерами](https://github.com/AnthonyCalandra/modern-cpp-features) - -### Учебные материалы - ---- - -### :heavy_check_mark: Ресурсы с задачами для практики и тренировок :heavy_check_mark: ### -##### Список сайтов на которых можно применить и отточить свои знания ##### - -* [Hackerrank](https://www.hackerrank.com/domains/cpp) -* [CodeForces](https://codeforces.com/) -* [Codewars](https://codewars.com/kata/search/cpp?q=&&beta) -* [LeetCode](https://leetcode.com/) - ---- - -### :heavy_check_mark: Книги для изучения языка :heavy_check_mark: ### -##### Список книг на которые стоит обратить свое внимание (разделены на 3 уровня сложности) ##### - -* :green_book: Начальный :green_book: - - Стенли Б. Липпман - Язык программирования C++. Базовый курс. [[Скачать книгу](https://disk.yandex.ru/i/O_9ghFjZMr8bBA)] +* :green_book: Начальный + - :heavy_plus_sign: Стенли Б. Липпман - Язык программирования C++. Базовый курс. [[Скачать книгу](https://disk.yandex.ru/i/O_9ghFjZMr8bBA)] - Стивен Прата - Язык программирования C++. Лекции и упражнения [[Скачать книгу](https://disk.yandex.ru/i/QSR598p9CpG5tA)] - Бьёрн Страуструп - Принципы и практика с использованием C++ [[Скачать книгу](https://disk.yandex.ru/i/1EJ6hlr7g_glhw)] -* :blue_book: Средний :blue_book: +* :blue_book: Средний - Скотт Мейерс - Эффективный и современный С++. 42 совета по использованию C++11 и C++14 [[Скачать книгу](https://disk.yandex.ru/i/BKzDWpscRPl_lQ)] - Яцек Галовиц - C++17 STL. Стандартная библиотека шаблонов [[Скачать книгу](https://disk.yandex.ru/i/UcSk25yhTVBNVg)] -* :orange_book: Выше среднего :orange_book: +* :orange_book: Выше среднего + - Ivor Horton Peter Van Weert "Beginning C++20 - From Novice to Professional" (6th edition) + - Nicolai M. Josuttis "С++17 The Complete Guide" + - Marc Gregorie "Professional C++" (4th edition) + - Vardan Grigoryan, Shunguang Wu "Expert C++ - Become a proficient programmer by learning coding best practices with C++17 and C++20's latest features" + - David Vandevoorde, Nicolai M. Josuttis, Douglas Gregor "C++ Templates - The Complete Guide" (2nd edition) + - Antony Polukhin, Boost C++ Application Development Cookbook + - Bjorn Andrist, Viktor Sehr, C++ High Performance: Master the art of optimizing the functioning of your C++ code (2nd Edition) -"Жизнь после Праты" -- Ivor Horton Peter Van Weert "Beginning C++20 - From Novice to Professional" (6th edition) -- Nicolai M. Josuttis "С++17 The Complete Guide" -- Marc Gregorie "Professional C++" (4th edition) -- Vardan Grigoryan, Shunguang Wu "Expert C++ - Become a proficient programmer by learning coding best practices with C++17 and C++20's latest features" -- David Vandevoorde, Nicolai M. Josuttis, Douglas Gregor "C++ Templates - The Complete Guide" (2nd edition) -- Antony Polukhin, Boost C++ Application Development Cookbook -- Bjorn Andrist, Viktor Sehr, C++ High Performance: Master the art of optimizing the functioning of your C++ code (2nd Edition) - ---- - -### :heavy_check_mark: Курсы по С++ для начинающих и не только :heavy_check_mark: ### +##### Онлайн-курсы - Для ознакомления с языком, если у вас вообще нет опыта. * [Введение в программирование C++ ](https://stepik.org/course/363/promo) @@ -117,75 +108,31 @@ * [ [OTUS] "С++ для начинающих разработчиков 2020"](https://disk.yandex.ru/d/kcsmDi1uDcKdcw?w=1) - Для тех, кто имеет уже базовые знания в языке. -- * [ [Яндекс Практикум] "Разработчик C++"](https://practicum.yandex.ru/profile/cpp/) - * [ [МФТИ] "Искусство разработки на современном C++"](https://ru.coursera.org/specializations/c-plus-plus-modern-development) //ЗАКРЫ + * [ [Яндекс Практикум] "Разработчик C++"](https://practicum.yandex.ru/profile/cpp/) * [ [OTUS] "Разработчик C++ 2020"](https://disk.yandex.ru/d/01KzEC-oIrpUqA?w=1) * [ [Повторение материала] ](https://thispointer.com/c11-tutorial/) - ---- - -### :heavy_check_mark: Полезные, а также интересные лекции и статьи в мире С++ :heavy_check_mark: ### -- Лекционный материал. +##### Лекционный материал - * [ [Константина Владимирова (LLVM Compiler Devloper)] Великолепные лекции по С++](https://www.youtube.com/channel/UCvmBEbr9NZt7UEh9doI7n_A/featured) - * [ [Константина Владимирова (LLVM Compiler Devloper)] C++ базовый курс, MIPT, ILab](https://www.youtube.com/watch?v=Bym7UMqpVEY&list=PL3BR09unfgciJ1_K_E914nohpiOiHnpsK) - --- - * [Лекторий ФПМИ (Введение в С++ (1 курс, осень 2020) ЧАСТЬ №1)](https://www.youtube.com/playlist?list=PL4_hYwCyhAvazfCDGyS0wx_hvBmnAAf4h) - * [Лекторий ФПМИ (Введение в С++ (1 курс, весна 2021) ЧАСТЬ №2)](https://www.youtube.com/playlist?list=PL4_hYwCyhAvYTzwME4vQoDO8ZINM5trra) - * [Лекторий ФПМИ (Введение в С++ (1 курс, осень-весна 2021-2022))](https://www.youtube.com/playlist?list=PLSaMkqCXRp4Jen1F8YHJpxlj64hJhdoCS) - --- - * [ [Computer Science Center] Программирование на C++, часть 1 (осень 2018)](https://www.youtube.com/playlist?list=PLlb7e2G7aSpTFea2FYxp7mFfbZW-xavhL) - * [ [Computer Science Center] Программирование на C++, часть 2 (весна 2019)](https://www.youtube.com/playlist?list=PLlb7e2G7aSpRs7YafQ1GgJvyRku10m1RN) +- Константина Владимирова (LLVM Compiler Devloper) + * [Великолепные лекции по С++](https://www.youtube.com/channel/UCvmBEbr9NZt7UEh9doI7n_A/featured) + * [C++ базовый курс, MIPT, ILab](https://www.youtube.com/watch?v=Bym7UMqpVEY&list=PL3BR09unfgciJ1_K_E914nohpiOiHnpsK) +- Лекторий ФПМИ + * [Введение в С++ (1 курс, осень 2020) ЧАСТЬ №1](https://www.youtube.com/playlist?list=PL4_hYwCyhAvazfCDGyS0wx_hvBmnAAf4h) + * [Введение в С++ (1 курс, весна 2021) ЧАСТЬ №2](https://www.youtube.com/playlist?list=PL4_hYwCyhAvYTzwME4vQoDO8ZINM5trra) + * [Введение в С++ (1 курс, осень-весна 2021-2022)](https://www.youtube.com/playlist?list=PLSaMkqCXRp4Jen1F8YHJpxlj64hJhdoCS) +- Computer Science Center + * [Программирование на C++, часть 1 (осень 2018)](https://www.youtube.com/playlist?list=PLlb7e2G7aSpTFea2FYxp7mFfbZW-xavhL) + * [Программирование на C++, часть 2 (весна 2019)](https://www.youtube.com/playlist?list=PLlb7e2G7aSpRs7YafQ1GgJvyRku10m1RN) -- Конференции - * [C++ User Group](https://www.youtube.com/channel/UCJ9v015sPgEi0jJXe_zanjA) +##### Ресурсы с задачами для практики и тренировок -- Полезные статьи - * [Отличные статьи по С++](http://scrutator.me/) - * [User-defined литералы и магия на интринсиках (разные статьи)](https://wunkolo.github.io/) - * [Настоящая производительность виртуальных функций](https://johnysswlab.com/the-true-price-of-virtual-functions-in-c/) +* [Hackerrank](https://www.hackerrank.com/domains/cpp) +* [CodeForces](https://codeforces.com/) +* [Codewars](https://codewars.com/kata/search/cpp?q=&&beta) +* [LeetCode](https://leetcode.com/) -- Полезные выступления - * [ [CppCon 2021] Branchless Programming in C++ - Fedor Pikus](https://www.youtube.com/watch?v=g-WPhYREFjk) - * [ [CppCon 2021] Beyond struct: Meta-programming a struct Replacement in C++20 - John Bandela](https://www.youtube.com/watch?v=FXfrojjIo80) - -- Сборник материалов на Английском языке (Сюда стоит посмотреть) - * [Jason Turner (C++ Weekly)](https://www.youtube.com/user/lefticus1) - * [Сборник разных гайдов/примеров по cmake](https://github.com/onqtam/awesome-cmake) - * [Modern C++ and Native Code (converting from bfilipek.com)](https://www.cppstories.com/) - * [CppNuts](https://www.youtube.com/user/MrRupeshyadav) - * [CppStories](https://www.cppstories.com/p/start-here/) - * [CppCon](https://www.youtube.com/channel/UCMlGfpWw-RUdWX_JbLCukXg) - * [Bisqwit](https://www.youtube.com/channel/UCKTehwyGCKF-b2wo0RKwrcg) - * [Programming and Technology Tutorials(javidx9)](https://www.youtube.com/c/javidx9/videos) - * [Molly Rocket(Handmade Hero)](https://www.youtube.com/c/MollyRocket/videos) - ---- - -### :heavy_check_mark: Полезные материалы по Cmake :heavy_check_mark: ### - -- Основные ссылки - * [Официальный сайт системы автоматизации сборки программного обеспечения Cmake](https://cmake.org/) - * [Документация](https://cmake.org/documentation/) - -- Cтатьи - * [Полное руководство по CMake. Часть первая: Синтаксис](https://habr.com/ru/post/431428/) - * [Полное руководство по CMake. Часть вторая: Система сборки](https://habr.com/ru/post/432096/) - * [Полное руководство по CMake. Часть третья: Тестирование и пакетирование](https://habr.com/ru/post/433822/) - -- Лекции/Видео/Tutorials - * [Сборка проектов на C++ с использованием CMake [OTUS]](https://www.youtube.com/watch?v=LZwEtbc9gEA) - * [CMake с нуля [SimpleCODING!] :)](https://www.youtube.com/playlist?list=PL6x9Hnsyqn2UwWjSvjCzAY6sEOBrHY7VH) - -- Книги/Справочники - * [Open Source Книга от разработчиков CMake "Mastering CMake"](https://cmake.org/cmake/help/book/mastering-cmake/) - * [Программирование: система построения проектов cmake [Дубров Д.В.]](https://disk.yandex.ru/i/IvnzEcNJseJbMw) - * [CMake Cookbook](https://disk.yandex.ru/i/jwBzh2_JcIViTw) - ---- - -### :heavy_check_mark: Материалы для изучения алгоритмов и структур данных :heavy_check_mark: ### +##### Материалы для изучения алгоритмов и структур данных - [Алгоритмы - Теория и Реализация](https://ru.algorithmica.org/cs/graph-traversals/cycle/) - [Лекции Павла Марвина](https://www.youtube.com/c/pavelmavrin) @@ -207,6 +154,49 @@ - [Алгортимы Ч.1 от Принстонского университета ( Coursera ) ](https://ru.coursera.org/learn/algorithms-part1?action=enroll#syllabus) - [Алгортимы Ч.2 от Принстонского университета ( Coursera ) ](https://ru.coursera.org/learn/algorithms-part2) ---- +##### Интересные (и местами случайные) конференции, статьи и выступления в мире С++ +- Конференции + * [CppCon](https://www.youtube.com/user/CppCon) + * [C++ User Group](https://www.youtube.com/channel/UCJ9v015sPgEi0jJXe_zanjA) -```EOF``` :floppy_disk: +- Статьи + * [Отличные статьи по С++](http://scrutator.me/) + * [User-defined литералы и магия на интринсиках (разные статьи)](https://wunkolo.github.io/) + * [Настоящая производительность виртуальных функций](https://johnysswlab.com/the-true-price-of-virtual-functions-in-c/) + +- Выступления + * [ [CppCon 2021] Branchless Programming in C++ - Fedor Pikus](https://www.youtube.com/watch?v=g-WPhYREFjk) + * [ [CppCon 2021] Beyond struct: Meta-programming a struct Replacement in C++20 - John Bandela](https://www.youtube.com/watch?v=FXfrojjIo80) + +- Сборник материалов на Английском языке (Сюда стоит посмотреть) + * [Jason Turner (C++ Weekly)](https://www.youtube.com/user/lefticus1) + * [Сборник разных гайдов/примеров по cmake](https://github.com/onqtam/awesome-cmake) + * [Modern C++ and Native Code (converting from bfilipek.com)](https://www.cppstories.com/) + * [CppNuts](https://www.youtube.com/user/MrRupeshyadav) + * [CppStories](https://www.cppstories.com/p/start-here/) + * [CppCon](https://www.youtube.com/channel/UCMlGfpWw-RUdWX_JbLCukXg) + * [Bisqwit](https://www.youtube.com/channel/UCKTehwyGCKF-b2wo0RKwrcg) + * [Programming and Technology Tutorials(javidx9)](https://www.youtube.com/c/javidx9/videos) + * [Molly Rocket(Handmade Hero)](https://www.youtube.com/c/MollyRocket/videos) + +### :pushpin: Системы сборки + +##### Материалы по Cmake + +- Основные ссылки + * [Официальный сайт системы автоматизации сборки программного обеспечения Cmake](https://cmake.org/) + * [Документация](https://cmake.org/documentation/) + +- Cтатьи + * [Полное руководство по CMake. Часть первая: Синтаксис](https://habr.com/ru/post/431428/) + * [Полное руководство по CMake. Часть вторая: Система сборки](https://habr.com/ru/post/432096/) + * [Полное руководство по CMake. Часть третья: Тестирование и пакетирование](https://habr.com/ru/post/433822/) + +- Лекции/Видео/Tutorials + * [Сборка проектов на C++ с использованием CMake [OTUS]](https://www.youtube.com/watch?v=LZwEtbc9gEA) + * [CMake с нуля [SimpleCODING!] :)](https://www.youtube.com/playlist?list=PL6x9Hnsyqn2UwWjSvjCzAY6sEOBrHY7VH) + +- Книги/Справочники + * [Open Source Книга от разработчиков CMake "Mastering CMake"](https://cmake.org/cmake/help/book/mastering-cmake/) + * [Программирование: система построения проектов cmake [Дубров Д.В.]](https://disk.yandex.ru/i/IvnzEcNJseJbMw) + * [CMake Cookbook](https://disk.yandex.ru/i/jwBzh2_JcIViTw)