C++ 1MIT осень 1 2020 — различия между версиями

Материал из CSC Wiki
Перейти к:навигация, поиск
(Общее развитие)
(Общее развитие)
Строка 39: Строка 39:
  
 
=== Общее развитие ===
 
=== Общее развитие ===
 +
Обращайте внимание, для какого стандарта вы читаете рекомендации. Минимальный — C++11, C++03 — это совсем другой язык. Следующие огромные изменения ожидаются в C++20.
 +
 
* [https://isocpp.org/wiki/faq ISO C++ Wiki]
 
* [https://isocpp.org/wiki/faq ISO C++ Wiki]
 
* [http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines C++ Core Guidelines]
 
* [http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines C++ Core Guidelines]
 
* [http://www.gotw.ca/gotw/ GotW] (Guru of the Week by Herb Sutter)
 
* [http://www.gotw.ca/gotw/ GotW] (Guru of the Week by Herb Sutter)
 
* [https://abseil.io/tips/ TotW] (Tips of the Week by Google)
 
* [https://abseil.io/tips/ TotW] (Tips of the Week by Google)
* Что угодно от Scott Meyers
+
* Что угодно от [https://www.aristeia.com/books.html Scott Meyers]
* Что угодно от Andrei Alexandrescu
 
 
* [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1705r0.html P1705R0 Enumerating Core Undefined Behavior] — попытка перечислить хоть какие-то UB.
 
* [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1705r0.html P1705R0 Enumerating Core Undefined Behavior] — попытка перечислить хоть какие-то UB.
 
* [https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms More C++ Idioms Wikibook]
 
* [https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms More C++ Idioms Wikibook]

Версия 12:41, 3 ноября 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.

Установка clang и stdc++ на Ubuntu

  1. До Ubuntu 20.04: добавляем в конец /etc/apt/sources.list две строчки, соответствующие вашей версии Ubuntu (смотри /etc/lsb-release). Например, для Ubuntu 16.04.1 LTS:
deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-10 main
deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-10 main
  1. sudo apt update
  2. sudo apt install clang-10 libc++-10-dev libc++abi-10-dev

Можно установить на Ubuntu 18.04 после этих шагов.

Потом можно компилировать при помощи команды clang++-10 -stdlib=libc++ main.cpp -o main. Почти все флаги как у GCC, включая warnings.

Лекции

Лектор: Суворов Егор Федорович (egor_suvorov@mail.ru]), в теме письма обязательно указывать [hse] [cpp] и слово "вопрос", если там вопрос.

Также есть Telegram: yeputons

Базовые материалы

Материалы с лекций: https://github.com/hse-spb-2020-cpp/lectures

Общее развитие

Обращайте внимание, для какого стандарта вы читаете рекомендации. Минимальный — C++11, C++03 — это совсем другой язык. Следующие огромные изменения ожидаются в C++20.

Дополнительные материалы

C++20 и метапрограммирование

Практика 1: Алфёров

Василий Алфёров.

Почта: vasily.v.alferov@gmail.com

Телега: vasiliyalferov

GitHub: vasalf

Практика 2: Лапшин

Дмитрий Лапшин.

Контакт: au-cpp@ldvsoft.net

GitHub: LDVSOFT

Материалы: Github repo

Практика 3-4: Суворов

Егор Суворов.

Почта: egor_suvorov@mail.ru], в теме письма обязательно указывать [hse] [cpp] и слово "вопрос", если там вопрос.

Telegram: yeputons

GitHub: yeputons

Материалы: https://github.com/hse-spb-2020-cpp/practice-suvorov

Проверяющий: Малышева

Мария Малышева.

Telegram: isomethane

GitHub: isomethane

Проверяющий: Прокопцев

Дмитрий Прокопцев.