@seb-harmonik.ar
You can do a lot in vanilla but there are definitely things that are way easier to do even in c. A good example is any list processing, or any searching or sorting algorithm, or any manipulations of more complex data structures.
Personally I like to use pd for signal-graphs and some message glue, with lua doing the structure and sequencing (with pdlua) and c doing the complex low-level or data structure stuff.
This point shouldn't be overlooked.
There's a reason why graphical patchers never took over the programming world: they are actually quite bad at a lot of the things that typical programs have to do. (MSP himself admits as much.) Note, I'm not saying that graphical patchers can't, only that it's likely to be faster and clearer to express in other languages. Sufficiency != usability.
Pd: t b f b --> initialize float box to 0, then "until" --> float box --> t f f --> increment counter, and use the index into something else --> final bang to output the result
C: for(i = 0; i < n; i++) ...
A bit ugly but already more concise.
SuperCollider: n.do { |i| ... }
or if n is the size of an array, simply array.do
or array.collect
with a function body.
I recently watched a student struggle with the concept of recursive function calls in Lua, which showed me something about the way that patching wires can help visualize the process. So I'm not ignoring the appeal of patchers. But I don't want to use patchers for complex algorithms. (One concrete point: it's painful when you have to add an outlet in the middle of a t object. Really awful.)
I do understand the point of the discipline of doing it with vanilla. I'd suggest that there's always going to be a dividing line between implementation details you need to know and those that can stay under the hood, and that the position of this dividing line may be different for different people or circumstances. Coming to grips with pd list iteration helps me feel better about patching; but most of the students in my class couldn't care less. They have no commitment at all to this way of doing things (and the ones who are interested have already jumped ship and picked up Max). It would be silly to force them. If there's just an object they can use to pick a list apart, that's fine for them (and if somebody else built that object, then maybe I have time for my own projects).
hjh