On Dec 11, 2007, at 3:45 PM, Hans-Christoph Steiner wrote:
On Dec 11, 2007, at 8:29 AM, Frank Barknecht wrote:
Hallo, Jamie Bullock hat gesagt: // Jamie Bullock wrote:
Actually, please don't be quiet! When this was discussed some
time ago, you mentioned Python as a solution, and my feeling was that if I
write a piece and it uses some database connectivity, I don't really want to have to distribute a Python runtime, relevant Python SQL module,
[py] and all the respective dependencies with it. I just (at most)
want to include an external, and the databse library it uses. If I write a piece, I can't reasonably expect a performer to resolve all of this themselves - it needs to "just work". I also want to minimise as
much as possible the number of discrete components in the system that could possibly go wrong.That's quite sensible. As soon as a DB interface is involved, one already has entered dependency hell, so minimizig further
dependencies may be a valid goal. However a dependency on flext is just a dependency at compile time, so it's not really an additional dependency at runtime. A dependency on Python is kind of a dependency at runtime, as you need a possibly large Python installation. A dependency on Lua is also a runtime dependency, however as Lua is small, including it with the binaries will make the runtime
dependency not matter.An immediate advantage of both Python and Lua is, that once the
system is set up (easy with Lua, a bit tricky with pyext), the actual object code is just a textfile with a script. Especially as so far it's not even clear, how the SQL class in Pd should behave, this would allow rapid turnaround cycles in development. (For example I posted a working SQL object in Lua some weeks ago, and in Pyext some months ago, that took me about 20 minutes to write, including help-patch. In the case of Lua, I had never written SQL code in that language
before. I wasn't so fast because I would be a genius programmer, but because the language is easier and no compilation is involved.)For a general purpose DB interface I would generally still prefer Python because threading is possible, but if ease of installation
is a higher goal, Lua IMO even beats C-externals.Things are easy to compile only if your machine is setup for
compiling. Pd patches and binaries shipped as part of Pd are by
far the easiest to use. Getting distribution working in a non- trivial task, so unless lua and/or python are built as part of Pd- extended, I would not consider it easy.Other than that, Python, PHP, Perl, Lua, etc all have native
interfaces to databases (some likely written in C), I think Pd
should also have a native interface for databases. Pd is written
in C, we have working C code, Pd externals written in C have a
proven track record of ease of use, so it makes sense to write this
interface in C as well.
I just wanted to add, I am not anti-python or lua or whatever. It's
just a practical matter. Pd is written in C, therefore it's going to
be much easier to manage Pd code written in C. C is a pain, that's
true, but that's what we got. Perhaps someone could write another pd
in Lua! :D
.hc
That said, I think we have a solid interface sketched out, I think
it's time to write some code and try it out. I've started porting
the mysql external from Max to Pd. Let me know if you guys want
specific help with psql and sqlite. Ultimately, I think these all
should be part of a 'sql' library, and then we can also add the
query building objects too..hc
As we enjoy great advantages from inventions of others, we should
be glad of an opportunity to serve others by any invention of ours;
and this we should do freely and generously. - Benjamin
Franklin
"Free software means you control what your computer does. Non-free
software means someone else controls that, and to some extent
controls you." - Richard M. Stallman