Кстати, посмотрел на выходных на Django

В очередной раз возникла идея одного веб-приложения — ну и на выходных нашел часочек для прохождения Django tutorial. Выводов для себя сделал три:

— лепить веб-приложения с функциональностью CRUD может даже дрессированная мартышка;
— даже мартышке приходится слишком много делать руками;
— научившись делать руками несколько стандартных телодвижений, мартышка может считать себя неибаццо программистом.

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

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

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

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

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

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