Что такое системы контроля версий

Когда программист или группа программистов разрабатывают программное обеспечение, неизбежно возникают ошибки, которые нужно исправлять. Иногда заказчик ПО требует что-то добавить или убрать в программном продукте. Если проект небольшой, то исправления не займут много времени. А если разработка содержит огромное количество файлов? Ситуация может еще более усложниться, если члены команды работают удаленно друг от друга — при корректировке программы может начаться путаница с верными и неверными версиями проекта.

Чтобы упростить жизнь программистам, были придуманы системы контроля версий. Они сохраняют все изменения в процессе разработки проекта в специальном хранилище, из которого можно восстановить версию ПО на любой стадии его создания.

«Приведу простой пример использования систем контроля версий. Предположим, что завтра команда должна сдать заказчику проект, который делала 3−4 месяца. Но произошел какой-нибудь технический сбой, и написанная программа была потеряна. Если в системе контроля версий сохранен предыдущий вариант проекта, то разработчики могут презентовать хотя бы его. Ведь заказчику главное видеть результат работы, пусть и промежуточный», — пояснил Максим Скороходов.

Решение проблемы

Максим Скороходов на HackDay#41
Максим Скороходов на HackDay#41

Сейчас системы контроля версий работают по разным принципам. В некоторых вариантах этой программы ее использование становится неудобным и нефункциональным.

«У меня есть опыт работы инженером-программистом. Иногда случались такие ситуации, когда я делал простейшие изменения в программном коде, например, менял местами две функции, а система контроля версий считала, что я заменил целый файл. Она просто считывала изменения по принципу „такие-то строчки добавлены, такие-то удалены“. Это было неудобно, поэтому я решил исследовать эту тему, чтобы исправить недочет», — сказал участник Science Slam ITMO University.

Для решения проблемы Максим Скороходов предлагает представлять исходные коды в виде так называемых абстрактных синтаксических деревьев. Это такая структура данных, которая распределяет программные файлы «по старшинству». Так, корень дерева — это программный файл, далее идут его функции, каждая функция выполняет некоторые операции и так далее.

«Возможности этого решения можно пояснить на том же примере с заменой функций в программном коде. В обычной системе контроля версий это приведет к удалению одной области и добавлению другой, что равноценно замене целого файла. А если использовать „деревья“, то разница между двумя версиями будет составлять одну строчку», — прокомментировал студент.

Как можно реализовать разработку

Кроме программирования, разработка молодого ученого может использоваться и в других областях. В частности, это любые задачи, направленные на сравнение текстов.

«Такие программы можно использовать для улучшения систем антиплагиата. Либо сравнивать перевод текста с оригиналом, чтобы в переводе не нарушалась общая структура текста, последовательность изложенных фактов. Дело в том, что системы контроля версий с использованием абстрактных синтаксических деревьев оперируют не содержимым, которое может быть одинаковым в двух текстах, написанных по-разному, а именно структурой текста. Возможно использование этой программы и в других сферах», — отметил Максим Скороходов.

Университет ИТМО. HackDay#41
Университет ИТМО. HackDay#41

По завершении своего продукта он хочет представить его в Интернете как Open Source проект. Это может дать толчок к коммерциализации программы, если ей заинтересуется бизнес.

«Такие студенческие конкурсы, как лига Science Slam Университета ИТМО, и хакатоны, в которых я стараюсь участвовать, являются не только местом развития навыков презентации и продажи своего продукта, но и местом популяризации науки и запуска стартапов. Многие проекты, прошедшие через подобные мероприятия, затем коммерциализируются. Кроме того, это безумно здорово реализовывать какую-либо идею вместе с такими же мотивированными людьми, если говорить именно о командных конкурсах», — заключил Максим Скороходов.