Я некоторое время размышлял над написанием библиотеки подгонки. Я хорошо знаю Python и планирую реализовать все на Python, но предвижу, что мне, возможно, придется повторно реализовать некоторые основные подпрограммы на компилированном языке.
IIRC, одна из исходных реплик Python была как язык прототипирования, однако Python довольно либеральна в предоставлении функций, функторов, объектов, передаваемых функциям и методам, тогда как я подозреваю, что это не так, как говорят C или Fortran.
Что мне знать о проектировании функций/классов, которые, как я предполагаю, придется взаимодействовать с компилируемым языком? И сколько из этих потенциальных проблем решаются такими библиотеками, как cTypes, bgen, SWIG, Boost.Python, Cython или Python SIP?
В этом конкретном случае использования (подходящая библиотека) я предполагаю, что позволяет пользователям определять математические функции (гуассианские, лоренцевые и т.д.) как функции Python, которые затем могут передаваться интерпретируемым библиотекой скомпилированного кода. Передача и возврат массивов также важны.