C++ 1MIT осень 1 2020 — различия между версиями
Материал из CSC Wiki
(→Общее) |
(→Софт) |
||
Строка 13: | Строка 13: | ||
* По-хорошему должно собираться gcc/clang/visual studio на Windows, но не у всех есть, поэтому не требуем жёстко. | * По-хорошему должно собираться gcc/clang/visual studio на Windows, но не у всех есть, поэтому не требуем жёстко. | ||
− | На Windows можно использовать Visual Studio, но в любом случае требуется поставить GCC/Clang. Для этого можно либо поставить WSL 1 + Ubuntu (и внутри будет обычная линуксовая консоль), либо msys2 с пакетом <code>mingw-w64-x86_64-gcc</code> (это будет gcc, который компилирует под Windows). Егор использует оба варианта, чтобы показывать поведение и под Windows, и под Linux. | + | На Windows можно использовать Visual Studio, но в любом случае требуется поставить GCC/Clang. Для этого можно либо поставить [https://docs.microsoft.com/ru-ru/windows/wsl/install-win10 WSL 1] + Ubuntu (и внутри будет обычная линуксовая консоль), либо [https://msys2.org msys2]] с пакетом [https://packages.msys2.org/package/mingw-w64-x86_64-gcc <code>mingw-w64-x86_64-gcc</code>] (это будет gcc, который компилирует под Windows). Егор использует оба варианта, чтобы показывать поведение и под Windows, и под Linux. |
== Лекции == | == Лекции == |
Версия 10:51, 1 октября 2020
Содержание
Общее
Организация курса: https://github.com/hse-spb-2020-cpp
- Дз 0: Lab 0: Hello, World! (попробовать классрум, необязательное, не на баллы)
- Дз 1: Lab 1: BigInt
- Общее для всех групп, обязательное.
- Дедлайн: 1 октября (четверг) 23:59.
Софт
- Основной компилятор: gcc со стандартной библиотекой libstdc++ под Linux. С добавлением Address Sanitizer, Memory Sanitizer, UB Sanitizer, Valgrind.
- Также должно собираться clang со стандартной библиотекой libc++ под Linux.
- По-хорошему должно собираться gcc/clang/visual studio на Windows, но не у всех есть, поэтому не требуем жёстко.
На Windows можно использовать Visual Studio, но в любом случае требуется поставить GCC/Clang. Для этого можно либо поставить WSL 1 + Ubuntu (и внутри будет обычная линуксовая консоль), либо msys2] с пакетом mingw-w64-x86_64-gcc
(это будет gcc, который компилирует под Windows). Егор использует оба варианта, чтобы показывать поведение и под Windows, и под Linux.
Лекции
Лектор: Суворов Егор Федорович (egor_suvorov@mail.ru]), в теме письма обязательно указывать [hse] [cpp]
и слово "вопрос", если там вопрос.
Базовые материалы
- Специализация "Искусство разработки на современном C++" на Coursera. Ближе всего идеологически, особенно в начале — начинается не с Си, а сразу с современного C++.
- Про зарезервированные имена в Си и C++ (нижние подчёркивания и не только): stackoverflow.com/a/228797/767632
- Детальный справочник по C++. Содержит сильно больше, чем надо в курсе. Лучше искать и читать понятные подмножества по конкретным темам вроде
std::sort
или member functions).
Общее развитие
- ISO C++ Wiki
- C++ Core Guidelines
- GotW (Guru of the Week by Herb Sutter)
- TotW (Tips of the Week by Google)
- Что угодно от Scott Meyers
- Что угодно от Andrei Alexandrescu
- P1705R0 Enumerating Core Undefined Behavior — попытка перечислить хоть какие-то UB.
- More C++ Idioms Wikibook
Дополнительные материалы
- Серия статей про детали базовых элементов C++ на русском (перегрузки, массивы, операторы...)
- Scott Meyers "Type Deduction and Why You Care" (видеодоклад)
- Получение доступа к приватным типам через друзей и шаблоны (пример кода)
- Klaus Iglberger "Back to Basics: Move Semantics (part 1 of 2)"
- Klaus Iglberger "Back to Basics: Move Semantics (part 2 of 2)"
- Черновик последней версии стандарта C++ (уже после C++20)
C++20 и метапрограммирование
- Концепты в C++20
- SFINAE и member detection
- Доклад "Сериализация объектов с блэкджеком и метапрограммированием"
- Библиотека Boost.Hana для метапрограммирования
Практика 1: Алфёров
Почта: vasily.v.alferov@gmail.com
Телега: vasiliyalferov
Практика 2: Лапшин
Контакт: au-cpp@ldvsoft.net
Материалы: Github repo
Практика 3-4: Суворов
Материалы: https://github.com/hse-spb-2020-cpp/practice-suvorov