Сборочное окружение
Про что не будет в лекциях:
- Как администрировать свою Linux-систему
- Как ставить/удалять/обновлять пакеты
- Как эти пакеты называются в разных дистрибутивах
- Как настраивать какие-то службы
- …
А что делать, если всё это не сильно близко? Получить в ТГ-личке аккаунт на сервере LinuxApplicationDevelopment2022 (понадобится открытый ssh-ключ)
- Текстово-ориентированный интерфейс
Поскольку и сервер практикума, и демонстрируемый на лекциях инструментарий ориентированы на TUI, предлагается в течение семестр только TUI и пользоваться. В действительности это не слишком большое ограничение, потому что большая часть инструментов разработки — это преобразование исходных текстов (программ или файлов проекта), и их диагностика — это тоже текст.
Долг за прошлую лекцию: работа с GIT
TODO возможно, получится перенести в предыдущую лекцию (в 2022 году потеряли более получаса)
Базовый сайт: Pro GIT
VCS:
- Хранение
- Версионирвание
- Совместная разработка
DVCS:
- ∄ единого места хранения
- с точки зрения протокола взаимодействия, так-то оно может и быть
Общие понятия (не все):
- Репозиторий
- Локальная копия
- Репозиторий для публикации
- Рабочая копия
- Коммит как срез состояния репозитория на опередённый момент
- Обязательное описание коммита (commit message)
Цикл работы
клонирование (git clone)
(повторно и далее) Синхронизация (git pull = git fetch + git merge)
- Изменение
Отметка файлов для коммита (git add)
Коммит (git commit)
- Переход к 2. или 3.
Публикация (git push)
Свойства GIT:
Хранение всех версий исходников
Хранение полного репозитория в локальной копии
Отслеживание процесса разработки в виде орграфа (нам пока нужен только линейный)
- ⇒ понятие «ветка», «слияние веток» и т. п.
Стадии разработки приложения
Приложение:
Разработка
Исходный код, документация, мультимедиа
Сборка программного продукта
Тестирование и отладка
- Деплоймент
Локальный тестовый деплоймент
- Репозиторий и доставка
- Установка и развёртывание
- Сопровождение
Значком отмечены области, которые мы так или иначе затронем
Цикл разработки
(«Для самых маленьких»):
- Редактирование
- Сборка и подготовка к запуску
- Тестирование и запуск
Редактирование
Текстовый редактор для программирования — это:
синтаксис
рецепты сборки
многофайловые проекты и связи между файлами
инфоподдержка
- отладчик
- рецепты деплоймента
- чёрт в ступе…
Что делать:
- IDE: всё в одном
Eclipse, NetBeans, VisualStudio, JetBrains, VSCode…
- Mini-IDE: всё в одном, но по минимуму (зато простое)
Geany, CodeBlocks, …
Редактор + набор внешних инструментов ($$ \oo $$)
Консольные: mcedit, jed, micro
- Vim или EMACS + набор внешних инструментов ☺
- Vim:
- vimtutor
Внешние инструменты: командная строка + текстовый профиль
Сборка
Исходники → пригодные к тестированию бинарники.
- Как минимум, компилятор
Пример компиляции программы на FreeBSD
Запуск бинарника, почему ./a.out
- Си:
- препроцессор
- компилятор
- ассемблер
- компоновщик
Окружение
Linux:
- пакеты и репозитории; зависимости среди пакетов (не тема этого курса…)
Понятия:
- Эксплуатационно окружение
Всё, что нужно для запуска программного продукта
- эксплуатационные зависимости (например, библиотеки)
- Сборочное окружение
Всё, что нужна для автоматической сборки программного продукта
- Компилятор Си
+ много другого, например, devel-версии библиотек, .h-файлы и т. п.
- Окружение для разработки (инструментальное)
Всё, что нужно программисту для сборки программного продукта
- + редактор
- + удобные настройки редактора, shell и т. п.
- + инфопространство
- + … (всё тот же чёрт в ступе)
Д/З
TODO оформить полноценное Д/З с helloworld-ом
- Организовать себе рабочее место и репозиторий (доделать Д/З прошлой лекции, в т. ч. по необходимости)
- Редактор
Компилятор Си (лучше gcc)
git
Конечно же, Hello, World!.
Создать в репозитории Д/З подкаталог С именем 01_GitBuildReq, всё решение положить туда
«Всё решение» — это программа на Си, которая вводит строку и выводит текст «Hello, строка!» (где «строка» — это введённая строка)
Файл a.out и/или другие генраты в репозиотрий не класть!
- Не забыть опубликовать решение в публичном репозитории!