[Numpy-discussion] Request for advice: project to get NumPy working in IronPython
David Cournapeau
david at ar.media.kyoto-u.ac.jp
Sun Oct 28 22:58:38 EDT 2007
Travis E. Oliphant wrote:
>>> An IronPython compatible version of NumPy would be great. Of course
>>> it could be done by using C# to write NumPy, but I'm not sure that this
>>> would really be any less work than creating a "glue" layer that allowed
>>> most (or all) C-Python extensions to work with IronPython.
>>>
> I'm curious about why all the discussion is about putting Python and its
> extensions on top of C# and very little discussion about just using
> C#-based tools as an extension from CPython.
>
> Python .NET is a great example of what I'm referring to.
>
> The C# language and the CLR does solve some problems, but it does not
> solve all the problems related to scientific computing that it could.
> In particular, I wish it's cross-platform visibility where higher. Mono
> is a great start, but there are a lot of C# libraries that just don't
> get made to work on Linux or Mac OS X.
I think it is useful to separate C# and the CLR: you can do C# without
the CLR (with mono at least), and you can do CLR without C#. What is C#
? At the core, it is a language with a C-like syntax with automatic
memory management, and a huge framework. C is still, by far, the best
language for interoperability. None (and this includes C++) comes even
close. For a library, C is the best language to use if you care about
interoperability, so I don't see how it would be a bad choice.
So I don't see the point of C#, at least related to numpy.
>
> The task of moving scipy to sit on top of the CLR seems rather large
> without some automatic tool to allow calling CPython extensions from the
> CLR that works in a cross-platform way.
>
> I don't really see the benefit that the CLR offers (unless all the hype
> is just so you can write code that runs in a browser --- in which case,
> are you really going to run matrix inversion on the CLR in a browser?)
I don't think running in a browser is the only useful thing of the CRL;
I can see why this would be useful for some, but at least, for me, this
is not interesting (in my current, PhD student position at least :) ).
In a windows centric world, running on the CLR means having access to
the whole windows framework. C# is not really an interesting language,
frankly, the only thing which really matters is that it does automatic
memory management, and is endorsed by MS, meaning access to the windows
ecosystem. This by itself is already so huge that any other things is a
detail.
No, the important point is the following: once you have an
implementation on the CLR, you can use it from any language. For a less
hyped based discussion of this, you can read the B. Meyer article (B.
Meyer is quite involved with his company in .net, but at least, this
article focus on the technology):
http://archive.eiffel.com/doc/manuals/technology/bmarticles/sd/dotnet.html
As a concrete example, look at F#: if numpy can run on the CLR, you can
use it from C#, IronPython and F#. F# is, basically, OCAML on the .NET.
And as much as I don't have much interest into C#, I consider F# to be
much more interesting (before considering python + numpy as my
environment of choice for all my numeric-based projects, I considered
OCAML).
http://www.ffconsultancy.com/products/fsharp_for_visualization/index.html
If numpy can be used from F#, this would be interesting. But is this at
all possible ? For example, are the semantic compatible (indexing,
etc...) ? I have no idea.
Implementation-wise, this is an interesting problem to solve.
cheers,
David
More information about the NumPy-Discussion
mailing list