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

Материал из CSC Wiki
Перейти к:навигация, поиск
(Базовые материалы)
(Установка clang и stdc++ на Ubuntu)
 
(не показано 12 промежуточных версий 4 участников)
Строка 3: Строка 3:
  
 
* Дз 0: [https://classroom.github.com/a/SUH4ybiX Lab 0: Hello, World!] (попробовать классрум, необязательное, не на баллы)
 
* Дз 0: [https://classroom.github.com/a/SUH4ybiX Lab 0: Hello, World!] (попробовать классрум, необязательное, не на баллы)
* Дз 1: [https://classroom.github.com/a/SUH4ybiX Lab 1: BigInt]
+
* Дз 1: [https://classroom.github.com/a/Iizc55i_ Lab 1: BigInt]
 
** Общее для всех групп, обязательное.
 
** Общее для всех групп, обязательное.
 
** Дедлайн: 1 октября (четверг) 23:59.
 
** Дедлайн: 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. Для этого можно либо поставить [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.
 +
 +
==== Установка clang и stdc++ на Ubuntu ====
 +
# До Ubuntu 20.04: добавляем в конец <code>/etc/apt/sources.list</code> две строчки, соответствующие вашей версии Ubuntu (смотри <code>/etc/lsb-release</code>). Например, для 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
 +
# <code>sudo apt update</code>
 +
# <code>sudo apt install clang-10 libc++-10-dev libc++abi-10-dev</code>
 +
 +
Можно установить на Ubuntu 18.04 после [http://robs-got-a-blog.blogspot.com/2019/10/installing-clang-9-on-ubuntu-1804-lts.html этих] шагов.
 +
 +
Потом можно компилировать при помощи команды <code>clang++-10 -stdlib=libc++ main.cpp -o main</code>. Почти все флаги как у GCC, включая warnings.
  
 
== Лекции ==
 
== Лекции ==
 
Лектор: Суворов Егор Федорович ([mailto:egor_suvorov@mail.ru?subject=%5bhse%5d%20%5bcpp%5d%20Вопрос '''egor_suvorov@mail.ru''']]), в теме письма обязательно указывать <code>[hse] [cpp]</code> и слово "вопрос", если там вопрос.
 
Лектор: Суворов Егор Федорович ([mailto:egor_suvorov@mail.ru?subject=%5bhse%5d%20%5bcpp%5d%20Вопрос '''egor_suvorov@mail.ru''']]), в теме письма обязательно указывать <code>[hse] [cpp]</code> и слово "вопрос", если там вопрос.
 +
 +
Также есть Telegram: [https://t.me/yeputons yeputons]
  
 
=== Базовые материалы ===
 
=== Базовые материалы ===
* [https://ru.coursera.org/specializations/c-plus-plus-modern-development#courses Специализация "Искусство разработки на современном C++"] на Coursera. Ближе всего идеологически.
+
Материалы с лекций: https://github.com/hse-spb-2020-cpp/lectures
 +
 
 +
* [https://ru.coursera.org/specializations/c-plus-plus-modern-development#courses Специализация "Искусство разработки на современном C++"] на Coursera. Ближе всего идеологически, особенно в начале — начинается не с Си, а сразу с современного C++.
 
* Про зарезервированные имена в Си и C++ (нижние подчёркивания и не только): [https://stackoverflow.com/a/228797/767632 stackoverflow.com/a/228797/767632]
 
* Про зарезервированные имена в Си и C++ (нижние подчёркивания и не только): [https://stackoverflow.com/a/228797/767632 stackoverflow.com/a/228797/767632]
 
* [https://en.cppreference.com/w/cpp Детальный справочник по C++]. Содержит сильно больше, чем надо в курсе. Лучше искать и читать понятные подмножества по конкретным темам вроде [https://en.cppreference.com/w/cpp/algorithm/sort <code>std::sort</code>] или [https://en.cppreference.com/w/cpp/language/member_functions member functions]).
 
* [https://en.cppreference.com/w/cpp Детальный справочник по C++]. Содержит сильно больше, чем надо в курсе. Лучше искать и читать понятные подмножества по конкретным темам вроде [https://en.cppreference.com/w/cpp/algorithm/sort <code>std::sort</code>] или [https://en.cppreference.com/w/cpp/language/member_functions member functions]).
Строка 36: Строка 59:
 
* [https://habr.com/ru/company/jugru/blog/467299/ Концепты в C++20]
 
* [https://habr.com/ru/company/jugru/blog/467299/ Концепты в C++20]
 
* [http://jguegant.github.io/blogs/tech/sfinae-introduction.html SFINAE и member detection]
 
* [http://jguegant.github.io/blogs/tech/sfinae-introduction.html SFINAE и member detection]
 +
* [https://2019.cppconf-piter.ru/2019/spb/talks/3iz1z0htlsvkb8a4kyitgd/ Доклад "Сериализация объектов с блэкджеком и метапрограммированием"]
 
* [https://www.boost.org/doc/libs/1_71_0/libs/hana/doc/html/index.html Библиотека Boost.Hana для метапрограммирования]
 
* [https://www.boost.org/doc/libs/1_71_0/libs/hana/doc/html/index.html Библиотека Boost.Hana для метапрограммирования]
  
 
== Практика 1: Алфёров ==
 
== Практика 1: Алфёров ==
 +
Василий Алфёров.
  
 
Почта: [mailto:vasily.v.alferov@gmail.com vasily.v.alferov@gmail.com]
 
Почта: [mailto:vasily.v.alferov@gmail.com vasily.v.alferov@gmail.com]
  
 
Телега: [https://t.me/vasiliyalferov vasiliyalferov]
 
Телега: [https://t.me/vasiliyalferov vasiliyalferov]
 +
 +
GitHub: [https://github.com/vasalf/ vasalf]
  
 
* [https://github.com/hse-spb-2020-cpp/practice-alferov/tree/master/pract04 Материалы с практики №4 (Дроби)]
 
* [https://github.com/hse-spb-2020-cpp/practice-alferov/tree/master/pract04 Материалы с практики №4 (Дроби)]
 +
* [https://github.com/hse-spb-2020-cpp/practice-alferov/tree/master/pract05 Материалы с практики №5 (array)]
  
 
== Практика 2: Лапшин ==
 
== Практика 2: Лапшин ==
 +
Дмитрий Лапшин.
 +
 +
Контакт: [mailto:au-cpp@ldvsoft.net au-cpp@ldvsoft.net]
 +
 +
GitHub: [https://github.com/LDVSOFT/ LDVSOFT]
 +
 +
Материалы: [https://github.com/hse-spb-2020-cpp/practice-lapshin Github repo]
  
 
== Практика 3-4: Суворов ==
 
== Практика 3-4: Суворов ==
 +
Егор Суворов.
 +
 +
Почта: [mailto:egor_suvorov@mail.ru?subject=%5bhse%5d%20%5bcpp%5d%20Вопрос '''egor_suvorov@mail.ru''']], в теме письма обязательно указывать <code>[hse] [cpp]</code> и слово "вопрос", если там вопрос.
 +
 +
Telegram: [https://t.me/yeputons yeputons]
 +
 +
GitHub: [https://github.com/yeputons/ yeputons]
 +
 
Материалы: https://github.com/hse-spb-2020-cpp/practice-suvorov
 
Материалы: https://github.com/hse-spb-2020-cpp/practice-suvorov
 +
 +
== Проверяющий: Малышева ==
 +
Мария Малышева.
 +
 +
Telegram: [https://t.me/isomethane isomethane]
 +
 +
GitHub: [https://github.com/isomethane/ isomethane]
 +
 +
== Проверяющий: Прокопцев ==
 +
Дмитрий Прокопцев.

Текущая версия на 12:51, 16 октября 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++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

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

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