В блоге Fluent{C++} появилась заметка "How Can Developers Help Fight Coronavirus?". У нас есть практическое соображение на эту тему, хотя напрямую оно и не связано с COVID-19. Если программистам хочется сделать что-то полезное, то предлагаем направить их усилия в целом на развитие исследовательских библиотек в сфере медицины и прикладных приложений. По крайней мере, если даже разработчики не смогут добавить новую функциональность, они могут поработать над качеством этих проектов.
Итак, вот исходная статья, которая привлекла моё внимание: How Can Developers Help Fight Coronavirus? Высказывается мысль, что если кто-то знает программные проекты, которые как-то связаны (напрямую или косвенно) с оказанием помощи больным 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. И можно поработать над их улучшением.