Как DVCS может помочь в научном программировании?
Я делаю предварительную работу по исследованию того, как DVCS (например, Git, Hg, Bazar) может помочь в процессе научного программирования, особенно для аспирантов. Я думаю, что у меня неплохая позиция для этого, так как я программирую уже несколько лет и в настоящее время начинаю программу Masters в области естественных наук. Цель состоит в том, чтобы провести короткую презентацию об этом через месяц или два.
Насколько я понимаю, помимо очевидного преимущества управления версиями, DVCS в настоящее время предоставляет следующие улучшения для повседневной жизни студента:
-
Ветвление:
Это большой. Из наблюдений за практикой DVCS ясно, что дешевое разветвление в основном стимулирует экспериментирование новых функций. Научное программирование - это ВСЕ о экспериментах. Для настройки параметров или алгоритмов могут быть созданы различные ветки. Это особенно важно, потому что большинство научных кодов не видели ни одной реферирующей системы на протяжении всей их жизни (большинство студентов-градоначальников даже не знают, что это такое), поэтому способность идти в разные отрасли приведет к некоторому методу типичного безумия. Быстрые коммиты также могут означать использование коммитов в качестве суррогата для лабораторных ноутбуков. Вычислительные результаты могут быть помечены специальными хэш-кодами фиксации для воспроизводимых исследований.
-
Нажатие на серверы:
Так как большинство научных кодов в настоящее время запускаются на каком-то кластере, DVCS можно использовать как своего рода более продвинутый Rsync, который многие уже используют, чтобы подтолкнуть "производственный" код к кластерам HPC. Это сочетается с ветвлением, чтобы легко запускать несколько версий кода, не выходя из
-
Сотрудничество с документами:
Мне нужно больше сказать? Бумаги с несколькими авторами работают точно так же, как небольшие проекты с открытым исходным кодом. Сотрудничество с документами должно быть естественным подходом, когда авторы все пишут в LaTex, с дополнительными осложнениями, если запись выполняется в чем-то вроде Word. Здесь комментарии комментирования могут играть большую роль.
Мой вопрос: что, по вашему мнению, может сделать DVCS для научных программистов? Я вижу много разговоров о переходе на контроль источника в сообществе, но большинство из них все еще смотрит в Subversion. Из моих беглых заметок это звучит так, как DVCS должна быть идеальной парадигмой рабочего процесса для новых студентов градиента. Я ошибаюсь? Или научное кодирование просто слишком сильно отстает, чтобы даже слышать о инструментах DVCS?
по теме:
Ответы
Ответ 1
Обучение - настоящая проблема. Я знаю немало физиков-частиц (большая наука с большими проектами программирования), чье общее знание управления источниками - это запуск наивных версий cvs checkout
, cvs update
и cvs commit
.
Да, CVS. Я знаю руководителя группы программ, который отложил переход на Subversion из-за этих людей.
На следующем уровне мастерства они также знают команды diff
и stat
и как указывать ветки или теги, но могут избегать создания или объединения ветвей.
Если вы планируете внедрить DVCS, планируйте интенсивную, постоянную программу обучения и поддержки. Ученые (или, по крайней мере, физики), как правило, имеют небольшую формальную подготовку в области информатики и могут иметь только самую туманную концепцию программного процесса.
Ответ 2
Относительно ваших основных моментов:
- "Очевидное преимущество DVCS": повторяет, что, особенно в академической среде с потенциально жесткими ИТ-правилами для не допускающего внешнего подключения, DVCS позволяет работать с репозитаром локальный. Это означает, что вам не нужно "подключаться" к одному центральному репо, чтобы получить доступ к полной истории проекта, и что здесь может быть основной вклад DVCS в научных программистов.
Но это также означает, что у вас должна быть какая-то политика, чтобы позволить любой данной работе "объединиться" и быть объединенной в один репозиторий, что не означает, что будет только одна "центральная" база: можно было бы представить несколько центральных репозиториев для нескольких крупных проектов. Тем не менее, это требует администрирования (чтобы не быть недооцененным).
И этот процесс консолидации может быть довольно сложным из-за вашего основного первого пункта:
- ветвление: студент должен внимательно отследить (так как это так просто). Я видел свою долю ветки с именем "toto", "Monday", "myName",...: однажды опубликованную в другое (более центральное) репо, что мы должны делать с ними? Если 20+ веток должны быть слияниями, чтобы завершить один общий код,... процесс может стать очень подверженным ошибкам.
Краткие комментарии по другим вопросам:
-
развертывание (что вы называете "нажатием на сервер" ): да DVCS может использоваться для какого-то развертывания, но это означает, что вы организовали свое репо, чтобы включить какой-то "компонент выпуска" (набор файлов, которые вы хотите нажать на сервере), и вы их выпустили. И управление выпуском включает в себя множество других шагов, которые невозможно запомнить в DVCS, например, процесс девариализации, в котором вы заменяете переменную в файлах конфигурации фактическими значениями, адаптированными к целевому серверу (номера портов, локальные пути,...), Вы можете попытаться управлять этими конфигурационными файлами, напрямую оцениваемыми через ветки, но по моему опыту он становится слишком сложным, чтобы следовать.
-
: это не зарезервировано для DVCS. (VCS также предлагает их). Обратите внимание, что для некоторого формата (Word Document) их внутренняя система ревизий может быть более эффективной.
Ответ 3
Одна большая проблема с DVCS для научного программирования - двоичные данные. Часто бывает, что научное программирование требует ввода/вывода гигантских файлов, и это очень быстро убивает действия на каждом DVCS, о котором я знаю (bzr, hg, git). Эта область, где svn намного лучше в настоящее время.
Я думаю, что DVCS может быть весьма полезен и для бумаг, но это значит, что ваш соавтор знает и DVCS.