Синтез общего языка программирования (Python) с учетом языка (PureData/MaxMSP/ChucK)
Я изучаю Python, потому что он мне нравится как математик, но у меня также есть много полезных библиотек для научных вычислений, обработки изображений, веб-приложений и т. Д. И т. Д.
Меня расстраивает то, что для некоторых моих интересов (электронная музыка или инсталляционное искусство) существуют очень специфические языки программирования, которые кажутся лучше подходящими для этих целей, такие как Max/MSP, PureData и ChucK - все это довольно увлекательно.
У меня вопрос: как подойти к этим разным языкам? Должен ли я просто изучать Python и управлять другими, используя в них плагины и интерпретаторы Python? Есть ли хорошие инструменты для интеграции языков, или это правильный способ просто выучить их все?
4 ответа
Я бы сказал, учить их всех. Несмотря на то, что многие языки могут делать много вещей, специализированные языки обычно более выразительны и их легче использовать для конкретной задачи. Например, в то время как большинство языков допускают взаимодействие с оболочкой и управление процессами, очень немногие так же подходят для этой задачи, как сценарии bash.
Плагины и библиотеки могут преодолеть разрыв между общими и специализированными языками, но по моему опыту это не всегда лишено недостатков - будь то скорость, стабильность или сложность. Нередко приходится компилировать дополнительные библиотеки, устанавливать исправления или использовать ненадежные и плохо поддерживаемые модули. Также не редкость, что результирующий интерфейс все еще сложнее использовать, чем исходный язык.
Я хорошо знаю около 15 языков и некоторые из них очень хорошо. Я не использую свои предпочтительные языки, когда другой более подходит.
Этот поток немного староват, но я хотел бы отметить, что большинство зрелых сред разработки аудио, например, supercollider/max-msp/pure data, можно контролировать с помощью открытого управления звуком. Вы можете составить более подробное описание OSC, но достаточно сказать, что оно позволяет отправлять управляющие данные на синтезаторы, построенные в этих средах, подобно тому, как работает MIDI, но гораздо более обширно. Это не решает проблему фактического создания синтезаторов в python как таковых, но позволяет вам "управлять" этими другими средами, не зная все тонкости языка.
Python был бы отличным языком для изучения, так как он хорошо работает со многими другими языками. Это отличный язык общего назначения, а также "клейкий" язык. Потратьте время на изучение языков, которые вас интересуют, и сохраняйте знания Python для его гибкости и мощи. Я не думаю, что я бы порекомендовал попытаться выучить их все, если у вас действительно нет времени.
Возможно, вам будет интересно узнать, что PureData имеет расширение Python.
Вполне возможно создать хорошие интерфейсы из Python для таких специализированных языков: одним из примеров является RPy, который позволяет вам использовать R (для статистики) из Python (для всех видов универсальных задач).
Конечно, нужно быть компетентным в обоих языках - и таких мостов, к сожалению, уже не будет для каждой данной пары одного языка общего назначения и одного специализированного. "Изучение всех их", если вы хотите использовать их все, остается королевской дорогой!