[PD-dev] stripping down Pd-extended's default libs
Mathieu Bouchard
matju at artengine.ca
Mon Feb 23 03:09:42 CET 2009
On Fri, 20 Feb 2009, Hans-Christoph Steiner wrote:
> On Feb 18, 2009, at 2:57 PM, Mathieu Bouchard wrote:
>> That said, I'm not very fond of declarations, but I don't think that it's
>> an issue of programmers vs non-programmers, it's a matter of people who
>> like to declare vs people who don't, and that's a quite different split.
>> There are quite a lot of serious programming languages that avoid
>> declarations as much as possible.
> Can you give some examples of how other langauges handle this kind of thing
> without delcarations?
Not really...
In Smalltalk you don't have declarations like this, because there are no
namespaces, and because there are no files to load.
In Ruby you load files, but they don't have to be tied with any classnames
in particular. Loading a file can be considered a declaration if you wish,
but it's an action. There are namespaces, but you import them by
performing the action of adding a superclass to the class that you are in
(even though all ruby docs deny that this constitutes
multiple-inheritance... go figure!)
In Tcl, there are namespaces, though many libraries don't use them. You
have file-loading just like Ruby's, and you have packages implemented in
terms of file-loading. Declarations are really actions in this language
too. Namespaces exist, but were added after many years of existence of the
language. (Not counting the other kind of namespace called "ensemble" and
that has nothing to do with the newer feature called "namespace"). The
import feature is probably similar to Python's, I don't know; it works as
an action as well, of course.
A big difficulty with namespaces in Pd is that the user doesn't control
the loading order of objects, and objects aren't "run" in the way a
program is, so [import] has to be very special. If Pd were more like one
of the above systems, you'd be able to [loadbang] an [import] before the
rest of the patch loads; but this is only one way of thinking about the
correspondence between languages... depending on how we decide to map
concepts across languages, we would get to different possible equivalences
of features.
Tcl and Ruby don't have a two-in-one load-and-import "declaration",
whereas Python and Perl do. Some other languages may look like they have a
load-and-import declaration, but instead have only an import declaration,
and do all the loading automagically: for example, in Java, you can say
java.util.Vector and it gets loaded, no need to import.
About declarations in general and languages that avoid them, it's
something that doesn't apply so well to namespaces as it does to other
language features that don't apply to Pd.
Something you could take from Java is that creating the objectbox
[zexy/foo] would cause the loading of zexy.pd_linux if it is found. Maybe.
My main advice would still be to avoid having to use any declarations for
things that ought to be internal classes in Pd but aren't. That's very
subjective. For example, much of zexy and iemguts could go in that
category, imho, and much of many other libraries as well.
_ _ __ ___ _____ ________ _____________ _____________________ ...
| Mathieu Bouchard - tél:+1.514.383.3801, Montréal, Québec
More information about the Pd-dev
mailing list