Chromakode wrote:
Hi everyone,
I'm Max, another student working on the Drizzle client team with Andreas
and Eric Day. I'd like to solicit your input regarding some choices
about the language we will write the client in.
We're currently leaning towards implementing the client in Python.
Initially, the project was to be in C++, but we would like to use Python
because of its elegance, portability, and ease of use. We feel the
client will be easier to maintain and extend if it is written in Python.
Thus, we have a few questions...
1) How do you feel about Python as a language choice? Would Python be a
good language to code a Drizzle client in?
Yes, and no. :) I'm a huge Python fan (the whole Drizzle automation
suite is written in Python after all) and I agree it is an elegant,
portable, and easy to use language. It also has an enormous library of
modules that make it quick to get a prototype up and running quickly
without writing a ton of code.
That said, it has a serious problem with its global interpreter lock for
threading. If the design of this new client is to allow a user to take
advantage of the non-blocking async IO libdrizzle API, this could be a
problem for Python.
So...I guess for me it depends on whether the focus of the client is
going to be functionality and portability vs. the possibility of using
the client for performance-intensive things like bulk-loading in
parallel, etc.
2) Would you be unable to use a client written in Python 3? What is the
oldest version of Python we should support?
I would advise against it b/c of Monty's mentioned issues regarding
availability on platforms as well as the fact that there aren't many
modules ported to Python 3 at this time. Python 2.5+ or even 2.6+ is a
safer bet.
3) How important a factor is performance in our language choice and
design of the client?
Well, this will depend on who is using the client and for what purposes.
It also depends on whether the view of the community is that the
client should focus on functionality, ease of use and portablity over
performance, and that performance-intensive tasks like parallel bulk
loading should be written as separate client tools (in, say, C++).
Personally, I would prefer the drizzle client to be feature-rich and
scriptable, and build separate high-performance tools for
high-performance tasks in C++. But, this is just my 2 cents.
> What sort of demand, in terms of network, disk,
and CPU usage, should we design our client to handle? Is it acceptable
to choose a language that may be slower in some cases for the task?
Depends on the view of the community re: your above question :)
Cheers!
Jay
_______________________________________________
Mailing list: https://launchpad.net/~drizzle-discuss
Post to : [email protected]
Unsubscribe : https://launchpad.net/~drizzle-discuss
More help : https://help.launchpad.net/ListHelp