Про Python, программистов и математиков…

…или зачем математикам программирование, или программистам – математика.

Посмотрел краем глаза на один прожект, где слепили обработку загружаемых пользователем аудиофайлов на Python, разумеется, с использованием SciPy (на это ума хватило). “Обработка” – громко сказано, на самом деле все сводится к обычной линейной алгебре. Беда в том, что файлы немаленькие – скажем, два канала с частотой дискретизации 44,1 кГц и разрядностью в 16 бит. Часовая запись – это уже 600 Мб, которые для использования SciPy надо полностью загрузить в память. Заодно там надо как-то хранить и промежуточные результаты вычислений – и в результате объем сожранной питоном памяти растет просто катастрофически.

Впрочем, память сейчас кажется дешевой, а подход “закидать проблему железом” – работающим. Так вот, при желании почти всю “обработку”, которая есть в этом проекте, можно было бы сделать практически “в режиме онлайн”, со скоростью загрузки или чтения файла с данными, а заодно – с в разы меньшим потреблением памяти. Нечто подобное я как-то делал даже для микроконтроллеров класса “за 2$ на алиэкспресс”, с каким-нибудь ядром наподобие Cortex-M3, а лучше M4, и десятком-другим килобайт ОЗУ.

Беда в том, что условные “математики”, сделавшие первую демонстрацию алгоритмов на SciPy (это модно и “научно”), не хотят лезть в программирование, а программисты не понимают примерно ничего из написанного на SciPy (ну например, хотя бы того, что делает функция numpy.dot).

С другой стороны, конечно, никакая оптимизация тому проекту не поможет – при 1 пользователе эта демонстрашка работает, при 10 придется докинуть памяти, при 100 пользователях может возникнуть проблема – компьютеры с потребным количеством памяти делает разве что IBM; другое дело, что 100 пользователей у того проекта никогда не будет.

Ответить

Или воспользуйтесь входом по OpenID: