Ну, начнем извергаться (обещал два дня назад, да занят был).
Применительно ко мне лично. В очередной работе я существенно использую компьютер, поэтому передо мной и встал вопрос, публиковать ли код соответствующей программы. Но, разумеется, это не моя лично уникальная ситуация, когда в работе, не относящейся к вычислительной математике в собственном смысле, существенно используется компьютер. Самые хрестоматийные примеры --- это проблема четырех красок, и проблема тринадцати шаров.
Коллизия состоит в том, что имеются аргументы как за, так и против публикации кода.
Начнем с аргументов за. Научная работа, очевидно, должна обладать свойством воспроизводимости, в том или ином (зависящем от специальности) смысле. Применительно к математике воспроизводимость работы означает, что статья должна быть такова, чтобы читатель, при наличии нужных знаний, мог воссоздать у себя в голове все опущенные мелкие детали рассуждений, и проделать собственноручно все опущенные вычисления. Так было в классическую эпоху.
Но, что означает воспроизводимость для вычисления, использующего компьютер ? Если автор говорит просто
"я посчитал это с помощью компьютера", то возникает вопрос, а как именно ? Почему мы должны ему верить ? Но, допустим даже, что автор описал используемые им алгоритмы более-менее подробно. Это не устранит проблему воспроизводимости, а только уменьшит. В самом деле, чтобы проверить утверждение автора, читатель должен будет воспроизвести данный алгоритм на своем комьютере. А это требует немаленьких затрат времени и сил, как правило: надо запрограммировать, отладить, и потом собственно посчитать. Поэтому тут проверяемость весьма условная.
(Замечу, что во многих статьях даже алгоритм описывается не более-менее подробно (когда бы заинтересованному читателю осталось только его запрограммировать), а в таких общих словах, что там не о программировании идет речь, а вообще непонятно, в чем сам алгоритм состоит !)
Короче, полная проверяемость, по мне, требовала бы представить: (1) собственно код, (2) подробные комментарии к этом коду, так как без комментариев прочитать код, зачастую, нельзя (да что я тут объясняю !), и тем самым проверить головой (устно, теоретически, просмотрев глазами, проще говоря), что он правилен
(3) набор тестов для отдельных частей кода, чтобы убедиться в его предполагаемой правильности
практически-экспериментально, и (4) описание вычислений, как этот код был использован.
А иначе получается не теорема, а "теорема на доверии" (как в Черноморске в "Золотом теленке" были
"товарищества на вере", которые лопались, а зицпредседатель Фунт садился).
Теперь аргументы против. Допустим, я в ту статью, что сейчас пишу, включу код (и пошлю статью в некий
приличный отечественный журнал). Ну, разумеется, мне ее вернут, с явным удивлением, "а что это такое ?".
Почему вернут ? Во-первых, так не принято. Но "так не принято" --- это всего лишь некое социальное
соглашение, а есть ли более глубокие причины ?
Есть известная "пропорция Парето", что 20 процентов усилий дают 80 процентов результата, а остальные 80 процентов усилий --- оставшиеся 20 процентов результата. Встречал я и более радикальные суждения
частных лиц, что на самом деле соотношние не 20/80, а 10/90. Примерно так, наверное, и для описания компьютерных вычислений: описание собственно алгоритма занимает 10% по длине, и содержит 90% идей, а сам код --- 90% по длине, а по идейности всего 10%. То есть, "идейная насыщенность" кода по сравнению с описанием собственно алгоритма ---
! (Это условная цифра, конечно, в общем, речь о нескольких дестках раз). Так зачем его публиковать в журнале, тем более достаточно высокого уровня ? Это было бы растратой журнального пространства, полиграфических ресурсов и т.д. А для подписчиков журнала это означает пустую растрату денег, и т.д.
И притом, заметим, недостаток воспроизводимости при отсутствии собственно кода --- это нечто не абсолютное, а относительное. То есть связанное не с идейной дефектностью, а с трудоемкостью. Еще проще говоря, код --- это вещь не сверхъестественная. Кому очень уж будет надо, тот на основе общих идей алгоритма сам код напишет !
Ну вот, по всем этим причинам программные коды как таковые и не публикуются в журналах. Есть другие
механизмы их распространения, более рациональные с точки зрения общественной пользы. Например,
поместить в какой-то общедоступный репозиторий. В гитхаб, скажем. А в статье дать ссылку на
данный репозиторий. А в моем случае я, возможно, сделаю так: кроме того, что пошлю статью в журнал,
помещу некоторый расширенный вариант и в Архив, куда в качестве приложения включу и код. (Благо в
данном случае там вообще фигня, 200 строчек на сях. Но это, конечно, такой простой случай.)
(Ладно, потом еще может какие мысли добавлю, а пока хватит.)