Исследовательская разработка программного обеспечения с помощью Python

Программное обеспечение (далее - ПО) теперь так же необходимо для исследований, как телескопы, пробирки и справочные библиотеки. Это означает, что исследователи должны знать, как создавать, проверять, использовать и распространять программы. Однако большинство вводных курсов посвящено разработке коммерческих приложений, а не изучению проблем, ответы на которые еще не известны.

Каждый исследователь должен знать, как писать короткие воспроизводимые программы для очистки и анализа данных, как использовать контроль версий и прочие технологии. Но точно так же, как некоторые астрономы тратят свою карьеру на проектирование телескопов, некоторые исследователи сосредотачиваются на создании ПО, которое делает исследования возможными. Людей, которые этим занимаются, называют инженерами-исследователями-программистами (research software engineer, rse). Цель этого курса — подготовить вас к этой роли, помогая перейти от написания кода для себя к созданию инструментов для сообщества.

Подход к разработке ПО для исследований основан на трех взаимосвязанных концепциях.

Люди часто смешивают эти три концепции, но они отличаются. Например, если вы делитесь своими данными и программами, которые их анализируют, но не документируете, какие шаги и в каком порядке нужно предпринять, то ваша работа будет открытой, но невоспроизводимой. И наоборот, если вы полностью автоматизируете свой анализ, но ваши данные доступны только людям в вашей лаборатории, то ваша работа воспроизводима, но не открыта.

Никто не спорит, что исследования должны быть невоспроизводимыми или неустойчивыми, но "не против" и активно их поддерживать — разные вещи. Академическое сообщество еще не знает, как поощрять людей за написание полезного исследовательского ПО, поэтому, хотя вас и можно поблагодарить, усилия, которые вы приложили для разработки, могут не превратиться в гарантированную работу и достойную оплату.

Некоторые люди беспокоятся, что если они сделают свои данные и код общедоступными, то кто-то другой воспользуется ими и опубликует результат, который они могли бы придумать сами. Такое не встречается на практике, но это не мешает использовать подобный аргумент в качестве запугивания. Другие люди боятся показаться глупыми или некомпетентными, делясь кодом, который может содержать ошибки.

С помощью этого курса мы надеемся предоставить исследователям инструменты и знания, чтобы стать разработчиками исследовательского ПО, быть более эффективными в своей работе, делать меньше ошибок и работать более открыто и воспроизводимо. Мы надеемся, что, имея больше исследователей с такими навыками и знаниями, исследовательская культура может улучшиться для решения проблем, затронутых выше.

Целевая аудитория курса


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

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

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

Николай стал программистом во время получения степени бакалавра в области прикладной математики, а затем устроился на работу в научно-исследовательский вычислительный центр университета. Типы приложений, которые они должны поддерживать, перешли от гидродинамики к анализу данных; этот курс научит его создавать и запускать конвейеры данных.

Чему вы научитесь


Вместо того, чтобы просто предоставить справочный материал о методах программирования, курс следует за Катей и Николаем, которые вместе работают над написанием пакета ПО для решения реальноой исследовательской проблемы. Задача анализа данных, на которой мы сосредоточены, связана с результатом в области количественной лингвистики. Закон Ципфа гласит, что второе по частоте слово в тексте встречается в два раза реже, чем самое распространенное, третье по частоте встречается втрое реже и так далее. Чтобы проверить, соблюдается ли закон Ципфа для коллекции классических романов, свободно доступных в Project Gutenberg, мы напишем программный пакет, который подсчитывает и проанализирует частотное распределение слов в произвольном тексте.

В процессе написания и публикации Python пакета для проверки закона Ципфа мы покажем, каким образом:

telegram Обсудить публикацию в [Telegram-канале]

"Research Software Engineering with Python. Building software that makes research possible"
by Damien Irving, Kate Hertweck, Luke Johnston, Joel Ostblom, Charlotte Wickham, Greg Wilson
https://merely-useful.tech/py-rse/
CC-BY 4.0 и MIT License.