Я ищу ресурсы по шаблонам и принципам проектирования для числового программного обеспечения, возможно, но не обязательно, с упором на объектно-ориентированные подходы к числовым кодам.
Мне известен текст « Написание научного программного обеспечения: руководство по хорошему стилю» , но он по-прежнему во многом связан с такими вещами, как проблемы с плавающей запятой, как и когда оптимизировать и т. Д.
Я ищу информацию о более широкой картине проектирования числовых кодов, а не о чем-либо, касающемся алгоритмов и тому подобного.
Я надеюсь, что для этого есть ресурсы, и не нужно просто просматривать библиотеку за библиотекой, тем более что нет руководства по правильному проектированию, за исключением моего собственного знания хороших идиом и практик в C ++.
(Это не зависит от языка, но если есть контент для конкретного языка, я бы предпочел C ++.)
источник
Ответы:
Разработав числовое программное обеспечение в течение 20 лет, я обнаружил, что мы, вероятно, использовали большинство шаблонов проектирования, описанных в книге «Бандой четырех» ( см. Здесь ). В конце концов, числовое программное обеспечение - это просто крупномасштабное и сложное программное обеспечение, так что, возможно, неудивительно, что применяются те же конструктивные соображения, что и в других программах.
Конечно, есть ряд случаев, которые действительно характерны для численных алгоритмов (см., Например, здесь ), но знание «традиционного» набора шаблонов проектирования уже является хорошим началом.
источник
Я рекомендую это Мэтью G Knepley. Языки программирования для научных вычислений. Препринт arXiv arXiv: 1209.1711, 2012 ( https://arxiv.org/pdf/1209.1711.pdf )
Также советую посмотреть и прочитать другие коды, например, triangle, PETSc, MoAB, deal.II, fenics и многие другие. Не все решения будут работать для вас, но, в конце концов, копирование и обучение у других (опытных разработчиков и успешных кодов) - лучший урок, как разрабатывать код.
Более того, я думаю, что лучше присоединиться к существующему проекту и стать участником или разработчиком. Иногда вам нравится начинать что-то новое, но для этого нужны веские аргументы.
источник