Just to play the devil's advocate (that's the C devil's advoCate), here
is some source from Tcl (*not* Tcl source):
/*
* This structure describes per-instance state of a tcp based channel.
*/
typedef struct TcpState {
Tcl_Channel channel; /* Channel associated with this file. */
int fd; /* The socket itself. */
int flags; /* ORed combination of the bitfields
* defined below. */
Tcl_TcpAcceptProc *acceptProc;
/* Proc to call on accept. */
ClientData acceptProcData; /* The data for the accept proc. */
} TcpState;
Admittedly, the concepts are fairly low level: sockets, flags, and such,
but this is code that can be maintained! This is undoubtedly open
source at its best.
I guess the problem here is predicting the evolution of open source. It
certainly started with C (Stallman, Torvald, etc.), but will it stay
there? Obviously, I don't know.
John
Thomas Beale wrote:
>
> "John S. Gage" wrote:
>
> > Perl and Python are open source projects written in C, I believe. Which
> > programmers do you want contributing to medical open source? The one's
> > who wrote Perl and Python or the one's who use them? The only reasons
> > to go to higher level languages is to 1) involve domain experts in
> > coding, which as we have seen will never happen or 2) increase
> > productivity. It then becomes a question of who's productivity will be
> > increased: the programmer's or the clinician's. Would anyone really
> > argue that if there were a very large group of C programmers devoted to
> > medical open source that they should be forced to program in another
> > language?
>
> Not just productivity. THe two most important qualities to imbue in a
> software product are:
>
> - maintainability - tha ability to economically find and fix bugs;
> predicated on _comprehensibility_ of both design and implementation
> - extensibility - the ability to be able to enhance the product according to
> new requirements.
>
> These two activities together constitute more than 50% of the total cost of
> most software over its lifetime, and are primary quality factors. You cannot
> afford to ignore them.
>
> These qualities are provided quite differently by programming in C versus
> say Eiffel or some other high-level language. Languages like PERL and C both
> require serious effort to ensure maintainability because you can do almost
> anything you want (PERL especially). I'm not saying don't use these
> languages, just that there is a cost involved in using them properly, a cost
> that you will bear for years after deployment potentially.
>
> - thomas beale