On 3/20/07, Charles D Hixson <[EMAIL PROTECTED]> wrote:
rooftop8000 wrote:
> ...
> I think we should somehow allow people to use all the program languages they 
want.
>
That "somehow" is the big problem.  Most approaches to dealing with it
are...lamentable.
> ...
> You can use closed modules if you have meta-information on
> how to use them and what they do. It's like having an API and not
> worrying about the inner workings...
>
Module level communication is probably too low a level.   Socket level
communication can work easily between arbitrary languages, but it's
cumbersome, so it's generally best if you have large sections devoted to
any particular language.

P.S.:  There are exceptions.  E.g. D claims to work well with C, and
Pyrex works well with C.  OTOH, D and Python each have their own garbage
collection mechanism, and they don't synchronize at all, so going from
Python to C to D (or conversely) is going to have a lot of overhead.
Add Java to the mix and you have THREE garbage collectors.  Haskell
would make four.  This isn't something you're going to want to carry
around for a small chunk of code.  Better if it's large pieces that talk
over TCP/IP, or something analogous.  (And TCP/IP is ubiquitous.)

The best solution I've seen for this to date in MS .NET and its open
source clone, Novell Mono. You can, for example, run C#, VB, J#, C++,
IronPython, IronRuby and many more languages on the same platform in
the same process. While this is also true of the JVM, there are some
explicit aspects of .NET that make it appealing for multiple
languages. It has a standard for source code generation so that tools
that do so can work with any language (that provides a simple
adapter). It has callbacks/delegates which are found in many languages
and thereby makes it easier to get those languages working and
efficient. Upcoming .NET enhancements, such as in-language query, are
also being designed in a language independent fashion from the get go.

Also, MS hired the developer of IronPython to work on it full time and
also inform them on making .NET an even better platform for dynamic
languages. He had previously implemented Python on Java (called
Jython) and I find it interesting that the .NET version performs
substantially faster (see
http://weblogs.asp.net/jezell/archive/2003/12/10/42407.aspx).

Regarding communication between modules, I agree with others that
there are better choices than English, but more importantly, if you're
going to really push for multiple contributors, the best might be to
encourage them to use one or more from a set such as:

* json data
* xml data
* csv
* first order logic
* lojban
* Simple English (http://en.wikipedia.org/wiki/Simple_English_Wikipedia)
* English

And then let the "marketplace" work it out. Your language or library
could provide automatic views of objects, classes, etc. in a couple of
these formats.

-Chuck

-----
This list is sponsored by AGIRI: http://www.agiri.org/email
To unsubscribe or change your options, please go to:
http://v2.listbox.com/member/?list_id=303

Reply via email to