Код Шрёдингера: о доступности исходных кодов научных программ

Мнение редакции может не совпадать с мнением автора

Современная наука немыслима без машинной обработки результатов, но всегда ли ученые понимают, какими программами они пользуются и можно ли им доверять? Вопрос особенно остро стоит в астрофизике, где результаты научных исследований не так-то легко проверить на практике. Выяснить, как на самом деле обстоят дела в этой области, решили авторы научной статьи, принятой к публикации одним из американских астрофизических журналов. Подробнее об этой статье и следующих из нее выводах по просьбе N + 1 рассказывает доктор физико-математических наук, заведующий отделом физики и эволюции звезд Института астрономии РАН Дмитрий Зигфридович Вибе.

Журналом Astrophysical Journal Supplement Series принята в печать статья с интересным названием «Код Шрёдингера: предварительное исследование доступности научных исходных кодов и выживаемости ссылок в астрофизике». Ее авторы решили проверить, насколько доступны для внешней проверки исходные коды программ, применяемых в астрономических исследованиях.

Доводы в пользу необходимости такого исследования следующие. Астрономия последних десятилетий (как и прочие отрасли науки) все больше полагается на использование самых разнообразных программ, однако исходные коды этих программ довольно редко становятся достоянием научной общественности, что иногда затрудняет проверку представленных в статьях результатов. Традиция не выставлять исходные коды на всеобщее обозрение сложилась довольно давно, но в прежние времена у этого были объективные причины: не очень удобно было распространять программы в виде распечаток, магнитных лент и стопок перфокарт.

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

Проблема очень многогранная, и авторы работы задались пока поисками ответа на довольно узкий вопрос: какова доля программ, использованных и четко идентифицированных в научных статьях, которые могут быть проверены другими исследователями? Даже это оказалось непростой задачей, так как в астрономических статьях часто не только не называют программу, которая применялась для решения определенной задачи, но и вовсе не пишут, что эта задача решалась программным методом (хотя сложность задачи делает это очевидным). Во многих случаях считается достаточным указывать не само использованное программное обеспечение (ПО), а ссылку на другую работу, в которой это ПО названо («Мы использовали тот же метод, что и в работе Иванова и др. 2013»).

Первоначально авторы рассмотрели статьи 2015 года в трех ведущих журналах: Monthly Notices of the Royal Astronomical Society (MNRAS), Astrophysical Journal (ApJ) и Astronomy & Astrophysics (A&A), однако затем сочли, что выборки статей из MNRAS и ApJ могут оказаться непредставительными, и в итоге ограничились только журналом A&A.

Всего в этом журнале в 2015 году было опубликовано 1805 статей. Из их числа авторы исключили письма и сообщения об ошибках, а потом выбрали для анализа каждую десятую работу, получив в итоге выборку из 166 статей. Эти статьи автоматически и вручную анализировались на предмет наличия упоминаний тех или иных программ, использованных при работе над статьей.

Поиск осуществлялся по 21 ключевому слову, и в результате в 166 статьях авторы нашли 715 упоминаний или намеков на использование программных кодов. Из этого числа были исключены упоминания, по которым невозможно установить использованное ПО (информация приведена в другой статье; использование ПО констатируется, но без указания конкретных названий; в статье очевидно использованы некие программы, однако прямого признания этого нет).

Всего после отбраковки осталось 418 упоминаний. Авторы разделили их на 10 категорий: A — исходный код доступен для немедленной загрузки, B — двоичные файлы доступны для немедленной загрузки, C — исходный код доступен только соавторам, N — код недоступен для загрузки (указанный сайт отсутствует, сайт загрузки не удается найти, сайт загрузки найден, но не работает URL для загрузки и пр.), W — код работает как онлайн-служба без предоставления исходного кода, GS (soft gate) — код автоматически доступен для немедленной загрузки после предоставления определенной информации (регистрации), GH (hard gate) — для получения доступа к коду требуются продолжительные действия (контакт с автором, регистрация без немедленного результата, посещение тренингов по программе и пр.), P1 — исходный код можно приобрести (в анализированной выборке это практически исключительно Numerical Recipes), P2 — необходимо коммерческое ПО, приобретаемое в виде исполняемых файлов (например, IDL), O — прочее.

Итог для найденных 418 упоминаний оказался таков: A — 262, B — 26, C — 4, N — 70, W — 21, GS — 5, GH — 16, P1 — 6, P2 — 6, O — 2. Эти 418 упоминаний соответствуют 285 уникальным программам. Среди них расклад такой: A — 162, B — 14, C — 4, N — 63, W — 16, GS — 2, GH — 10, P1 — 6, P2 — 6, O — 2. Самая популярная программа — IRAF — относится к категории A и использована в 31 статье из выборки. За ней идут SExtractor (10 упоминаний, категория A), HIPE (7 упоминаний, категория B) и GILDAS (5 упоминаний, категория A). Все это программы для обработки результатов наблюдений.

В целом, доля программ с легко доступными исходными кодами оказалась довольно высокой — около 60 процентов (категории A, GS и P1). Остальные 40 процентов либо доступны в виде «чёрных ящиков» (двоичные файлы или веб-службы, категории B и W), либо доступны ограниченному кругу исследователей, либо недоступны вообще. Авторы подчеркивают, что доступность исходного кода не гарантирует его работоспособности, так как они не проверяли, допускает ли лицензия широкое применение кода, компилируется ли он, доступна ли для загрузки именно та версия, что была использована в конкретном исследовании, и т. п.

Попутно авторы представили еще два статистических результата. Во-первых, они извлекли из всех статей журнала A&A 2015 года гиперссылки и проверили их работоспособность. Оказалось, что за два года (исследование проводилось в августе-октябре 2017 года) из примерно двух с половиной тысяч ссылок около 10 процентов уже не работают. Во-вторых, для выяснения доступности некоторых кодов им пришлось написать сообщения на электронную почту их авторов. На 46 отправленных писем они получили всего 19 ответов. В 12 ответах выражалось намерение рано или поздно предоставить код в открытый доступ. Всего в трех случаях авторы программ указали ссылки для их скачивания, и еще в одном случае код был передан для размещения в ASCL (Astrophysics Source Code Library). Иными словами из 46 попыток положительный результат был получен всего в 4 случаях.

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

Готов ли я сам выкладывать исходники написанных мною программ? И да, и нет. Если это будет просто публикация программ без дополнительных обязательств, почему бы и нет? Кому надо, пусть разбирается. Но вот затея с рецензированием кодов мне представляется довольно-таки нереальной. В современных программах, например для моделирования газодинамических процессов, миллионы строк, и рецензировать их попросту невозможно. Остается полагаться на старую добрую интуицию и надеяться, что крупная ошибка в коде каким-либо образом выдаст себя нефизичным результатом расчета.

Нашли опечатку? Выделите фрагмент и нажмите Ctrl+Enter.