Современные инструменты и
технологии программирования
09.04.04, Программная инженерия
Внимание!
Осторожно! У вас ведёт занятие преподаватель Кафедры системного программирования СПбГУ, но ваша группа возможно ещё не заполняла опрос «Давайте познакомимся»? Это очень опасная ситуация.
Не ждите, пока (и если) преподаватель скажет. Заполняйте!
Материалы
Коммуникация
+ Пока что общий групповой чатик в Telegram
Лекционные материалы
«Про Git» (английская версия актуальнее)
Руководство по командной оболочке
Любое общее руководство, например это
Общее содержание (один из вариантов =))
Введение
Почему, для кого и зачем этот курс
Общая историческая справка
Основной инструментарий продвинутого пользователя и программиста
Введение: Задачи, решаемые с помощью ЭВМ, понятия алгоритма и данных
Среды исполнения программ: Unix-подобные системы, командные оболочки, сборка простой программы на C
Основы конфигурационного управления: версионирование: система Git; сервисы GitHub/GitLab/BitBucket
Язык программирования C: программирование, структура и сборка проектов
Основы C: функции, операторы, примитивные типы данных; стиль кодирования. Aлгоритмизация и программирование простых задач на практике.
Основы C: массивы, указатели, строки, структуры и объединения. Алгоритмизация и программирование простых задач на практике.
Основы C: препроцессор, система юнитов. Алгоритмизация и программирование простых задач на практике.
Конфигурационное управление: сборка проектов. Инструменты Make, CMake.
Опционально: язык прогарммирования C++
История, мотивация, основные возможности
Стандарты языка
Актуальные возможности С++11, 14, 17 и 20
Библиотеки, инструментальные средства и продвинутое конфигурационное управление
Инструментальные средства разработки, отладки и профилирования. Инструменты GDB/LLDB, gprof, VS Code.
Использование внешних библиотек. Pkgconfig, Conan.
Тестирование. Автоматизация тестирования, модульные тесты.
Конфигурационное управление: непрерывная интеграция. GitHub Actions.
Опционально: элементы архитектуры вычислительных систем
Виды архитектур
Основы схемотехники
Современные семейства процессоров
Решение вычислительных задач с использованием различных аппаратных платформ.
Решение простых вычислительных задач. Суммирования рядов Тейлора, решение СЛАУ методом Гаусса, реализация длинной арифметики, хэш-функций и простых функций симетричного шифрования.
Кросс-разработка: кросс-компиляция для аппаратных платформ RISC-V и ARM; запуск и отладка на симуляторах.
Софт
Операционная система и окружение
Универсальные средства разработки
Любой хороший текстовый редактор
Для пользователей GNU/Linux
Git and VS Code as system packages
GCC or CLang, recent versions
Make, CMake
DGB & LLDB
Valgrind
Qemu
Для пользователей OS X
Инсталлируйте то же самое при помощи Homwbrew
Для пользователей Windows:
Unix-подобные подсистемы и указанные выше пакеты (GCC и т.д.)
C++ support for Visual Studio (и немного несвежие инструкции)
Литература
Керниган, Б. В. Язык программирования C : учебник / Б. В. Керниган, Д. М. Ричи. — 2-е изд. — Москва : ИНТУИТ, 2016. — 313 с. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/100543
Довек, Ж. Введение в теорию языков программирования / Ж. Довек, Ж. -. Леви. — Москва : ДМК Пресс, 2013. — 134 с. — ISBN 978-5-94074-913-4. — Текст : электронный // Лань : электронно-библиотечная система (доступно по подписке СПбГУ). — URL: https://e.lanbook.com/book/82826
Сартасов С.Ю. Практикум на ЭВМ. [Электронный ресурс] http://hdl.handle.net/11701/15461