Тезисы
- Целью курса является обучение заинтересованных слушателей программированию под Linux.
- В «программировании под Linux» можно выделить два аспекта: идеологический (широкое использование и заимствование/модификация кода имеющихся библиотек/разработок в проекте, являющееся следствием открытого процесса разработки, господствующего в данной среде) и инструментальный (использование распространённых в данной среде инструментов, тулкитов, фреймоворков). Они в некоторой степени независимы, но для полноты картины необходимо рассказывать оба.
- Без активной практики обучение такой практической вещи, как программирование, невозможно, посему в рамках курса для успешного выполнения поставленной цели необходимо практическое вовлечение студентов.
- Так как господствующей практикой при решении поставленных задач программистом является интеграция имеющихся решений и/или присоединение к имеющемуся проекту, планируется этот проект в рамках курса иметь.
Предлагаемый подход
- Предлагается создать модельный учебный проект, который должен активно использовать как различные технологические решения по workflow, так и различные прикладные фреймворки.
- Студентам предлагается принять участие в данном проекте.
План
Количество недель |
Лекционные темы |
Темы практических занятий |
Ключевые люди |
2—3 |
Общее вопросы, касающиеся открытого проекта: лицензирование, структура, инструменты, использующиеся для взаимодействия (список рассылки, вики, SCM). Проектирование, общие подходы в линуксе/FOSS, выбор языка, стандартные фреймворки. Подход frontend/backend, совмещение скриптовых языков с биндингами к С/С++. Многообразии библиотек, KISS и т.п. |
Постановка задачи. Заведение проекта на публичном хостинге. Обсуждение архитектуры, выбор инструментария. Инициальное заполнение вики. |
|
1 |
Среды разработки и редакторы. Повседневный инструментарий: ctags, diff/patch, … |
Формирование кода ядра проекта. Распределение задач по участникам. Предоставление результатов своей работы в виде patch в список рассылки. |
|
1 |
Системы управления исходным кодом. Git. |
Использование git при работе с проектом. |
GQ, hades |
1 |
Системы сборки. Make, cmake. |
Добавление в проект cmake. |
ManMachine (cmake), hades (cmake) |
1 |
Оформление кода, оформление коммитов, кодинг/форматтинг стайл, код-ревью. |
|
|
1 |
Инструменты отладки. Gdb. Strace/ltrace. Valgrind. |
|
Ximaera (strace), Glider (valgrind) |
1 |
Тестирование. Buildbot. Документация. Doxygen. |
|
hades (buildbot), Ximaera (Doxygen) |
2—3 |
Различные прикладные тулкиты и фреймворки. Локализация. |
|
GQ (Qt) |