Новый пост «Как разработчики могут помочь в борьбе с коронавирусом?» появился в блоге Fluent{C++}. У нас есть практическое соображение на эту тему, хотя оно и не имеет прямого отношения к COVID-19. Если программисты хотят сделать что-то полезное в этом отношении, мы рекомендуем направить усилия на общее развитие исследовательских библиотек в области медицины и смежных приложений. По крайней мере, даже если разработчики не могут добавлять новые возможности, они могут работать над качеством этих проектов.

Итак, вот оригинальная статья, которая привлекла мое внимание: Как разработчики могут помочь в борьбе с коронавирусом? Предполагается, что если кто-то знает программные проекты, так или иначе (прямо или косвенно) связанные с оказанием помощи пациентам с COVID-19, то волонтеры могут помочь в разработке этих программ.

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

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

Особенность таких проектов в том, что их сложно разрабатывать без погружения в предметную область. Например, я понятия не имею, как можно создать исследовательскую библиотеку, улучшив возможности исследования пептидов. Я даже не знаю, что это за пептиды. Однако вы можете сделать мир лучше, хотя бы путем исправления ошибок и рефакторинга. Да, программист на C++ может не знать, что такое пептиды, но он знает, что следующие циклы работают некорректно:

bool Peptide::operator==(Peptide& p) {
  ...
  for (i = 0, j = 0;
       i < this->stripped.length(), j < p.stripped.length();
       i++, j++) { 
  ...
}

Это не выдуманный фрагмент кода. Этот код взят из библиотеки Trans-Proteomic Pipeline (TPP), предназначенной для изучения белков и их взаимодействия в живых организмах. Об этой и других подобных ошибках я писал в статье Анализ проекта Trans-Proteomic Pipeline (TPP).

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

Для поиска ошибок я, как один из создателей PVS-Studio, однозначно предлагаю использовать именно этот статический анализатор кода. С его помощью можно улучшить код проектов на C, C++, C#, Java. В свою очередь наша команда готова поддержать энтузиастов, помочь настроить анализатор, интегрировать его в процесс сборки и так далее. Не стесняйтесь писать нам.

Доступно несколько вариантов свободного лицензирования. Например, если вы планируете использовать PVS-Studio для открытого проекта на GitHub, то вы просто получаете бесплатную лицензию на год и начинаете работать.

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

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