help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: intralingua


From: Paul Kienzle
Subject: Re: intralingua
Date: Wed, 9 Nov 2005 00:39:56 -0500

On Nov 8, 2005, at 3:11 PM, John W. Eaton wrote:

On  8-Nov-2005, Paul Kienzle wrote:

| The alternative approach is to target a common underlying object system
| for all the languages that you are using.  With introspection you can
| make the compiled R methods directly available to Octave. You can then
| install the compiled R modules and make them available directly to
| Octave.  Since they are compiled, you do not need the R interpreter
| available to use them.  More importantly, once somebody does the work
| of wrapping e.g., the multivariate normal distribution functions in R,
| they are immediately available in Python and Octave.

Octave has a large run-time library written in a mixture of C++, C,
and Fortran (plus the scripting language code).  The run-time library
handles type dispatching for operators at run time.  How does this
work with something like Mono?  Can you link to the existing run-time
libraries, or do they have to be rewritten for the virtual machine?

You can link with native libraries:

        http://www.mono-project.com/Interop_with_Native_Libraries

Do variables in Octave live in its run-time system or in the Mono
interpreter (or does that question even make sense)?

I wrote some code to test calling native libraries with dense
vectors.  They act like they are pass by reference (at least on
the Mac OS X mono implementation I downloaded today.

The main advantage of interlingua is that we would have a common
implementation of basic numeric types (vector, matrix, arrays,
sparse) living in mono which we could operate on in any language.

There are potential stumbling blocks, such as 1-origin index
vectors in octave and named rows in R, which will require thought.

I don't know how easy it will be to implement dynamic typing,
but IronPython shows that it is possible and it can be fast.

Currently, Octave's parser and run-time are not completely separate,
and the interpreter runs by walking the parse tree.  Generating code
for some other kind of virtual machine from the parse tree should be
possible, but will require some work.

Indeed.  I didn't mean to suggest this was trivial.

Since mono is strongly typed this is just as much work
as translating into C.  FWIW, a simple for loop is about
300 times faster in mono than in Octave.

Support for eval would require a complete octave parser
available at runtime.

I agree that the best path for hooking scripting languages together is
a common virtual machine rather than a collection of bi-directional
links for each pair of languages.  I think RMS proposed Guile for this
purpose about 11 years ago, but there has never been sufficient
momentum behind Guile to really get things going, and as far as I
know, there has never been a successful translator for any language
that targets Guile.

Yes, because then we don't have to drop down to C to share code
between Octave and R.

Are the efforts for other languages closely linked with the core
languages?  How are updates to the Python internals (for example)
tracked by the project that implements Python for .Net?  Are they
implementing their own system from scratch?  How will the systems stay
in sync?

Many of them start from scratch.  Some of them use the existing
language via external calls.

For real success, I think these projects must be closely integrated,
otherwise code that will work in the standalone system could fail
or produce different results in the Mono/.Net system.

Agreed.

There are other problems.  For example Python extensions
generally do not work with Jython because the binding to the
C libraries is different.  Doing bindings automatically with
a tool like matwrap rather than coding them directly would
eliminate this problem once a C sharp wrapper is written.

Another concern is that submarine patents in the CLI and
CLR will kill mono once it starts to take off and probably
take Parrot out too.

- Paul



-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.

Octave's home on the web:  http://www.octave.org
How to fund new projects:  http://www.octave.org/funding.html
Subscription information:  http://www.octave.org/archive.html
-------------------------------------------------------------



reply via email to

[Prev in Thread] Current Thread [Next in Thread]