On Don, 2014-04-03 at 18:41 -0400, Jonathan Wilkes wrote:
On 04/03/2014 05:42 PM, Roman Haefeli wrote:
On Don, 2014-04-03 at 17:33 -0400, Jonathan Wilkes wrote:
So yes, it's rather extreme of me to advise users to just use global symbols and switch languages when they run into problems. But I think there's an assumption on this list that most users know enough about other programming languages to judge for themselves the level of expressiveness in Pd. I don't think that's true, and I think it's important to remind people just how clunky Pd is in these respects compared to other modern languages.
Clunky or not, Pd is the language I feel the most expressive with. YMMV.
Sorry, I'm not using the best terminology here. I'm talking about the practical expressivity of the language.
For just one example-- let's say you wanted to make a polyphonic patch with 30 oscillators, and send them messages to set initial frequency and amplitude. Let's use "Old-school Pd" which doesn't have abstractions.
You make a subpatch, get it the way you want it, copy it, then paste it 29 times. Now when you need to make changes to the subpatch, you need to delete the other 29, copy the one you changed and paste it 29 times.
That sucks.Now let's look at "New-school Pd" which has abstractions. In this case you get your abstraction the way you want it, instantiate it on a canvas, copy it, and paste it 29 times. Now when you want to make a change to the abstraction, you click "Save" and Pd automatically pushes your changes to all instances of your abstraction. You don't have to copy/paste everything again. That's very simple, but it's one of the ways abstractions can make Pd more expressive.
So you can express yourself by programming in either version of the language. But the "New-school" version makes it easier to do that. That may be clearer with the example of abstractions-- which you no doubt use all the time-- than with examples of scope that don't rely on $0. But that's why I refer to other modern languages which don't suffer from that roadblock.
Thanks for your remarks. You probably caught me in the act of feeling comfortable in an actually not so comfortable situation. It's true that people get accustomed to the environment they grow up in. I've never challenged myself into thinking how things could be different as I found ways to cover my needs with the clunky locality of $0.
Not yet fully seeing the impact, you convinced me that a more 'true' locality would probably make some things easier.
And that is certainly not everything where Pd is clunky. I still find myself using dynamic patching for problems I don't know how to solve otherwise and that is not even an officially supported feature with a definitely clunky interface.
Roman