Julia, Python and Cython
groups.google.com
groups.google.com
(Imagine using a C++ library from any other language like this. Wait, you can't.)
This statement doesn't make sense to me. First, I use Python for scientific/numerical work, and I definitely use it "for the language" - at least, certain aspects of it that are rare elsewhere.
Second, the language, community, and libraries are all interdependent. The design of a language strongly influences the tone of its community, as well as the libraries available (both the number and the types).
I certainly think this is true, and I think that Dag's underestimating the importance of the underlying Python language here.
At the same time, a lot of scientists I know are used to just using whatever language has the right library in it (either for functionality, or to duplicate another paper's results). I know that in grad school I used Python, Matlab, IDL, Fortran, and Java, all on the same scientific project (if not the same software project). I used each language less because I liked it, but because it had this one important piece that I really wanted to use.
And while that was a Frankenstein of a project, it wasn't all that unusual compared to the other researchers I knew. We weren't full-time software developers, we wanted to avoid re-implementing anything we could... so the libraries won, all the time.
Need to set up a quick and dirty batch processing queue to churn through a series of simulations on my workstation: `import multiprocessing` and set up a worker pool. Need to automate the creation of several hundred simulation config scripts, simple with standard library string templating. Need to work with hdf5 files: `import h5py`, etc, etc. That and its been dead simple to wrap existing c code with cython and write small compiled modules for cpu intensive tasks when needed. And IPython for interactive data exploration and development.
So from that perspective, I'd be much more interested in calling Julia from within Python, or writing some small function that needs optimization in Julia and then calling it from Python, than the other way around.
Doing practical scientific computing only using code implemented in Julia is completely unrealistic. At the very least, a lot of fast kernels (BLAS, LAPACK, etc.) are going to be implemented in C and/or Fortran for the foreseeable future. What Julia brings to the table is the ability to call C/Fortran libraries without writing anything but Julia code — you can just load a .so file and call functions without compiling anything (see http://julialang.org/manual/calling-c-and-fortran-code/). If we could have the same level of trivial interoperability with Python, then you could potentially use scientific libraries written in Python, while still only ever writing Julia code. That helps alleviate the "frankenstein project" problem without throwing out all the excellent work that's been done by the SciPy community.
In the other direction, there are people who already have projects that are all or mostly Python. Forcing them to have some random piece in Julia just to use a nice bit of Julia functionality is making the frankenstein problem worse. If they can trivially call Julia code (perhaps via a .so, as it were just a library written in C), then that's one less frankenstein project in the world.
Consider the number of bolt-in solutions there are to get decent performance in python: numexpr, weave, pysco (dead), the emerging island of NumPyPy, theano, the brilliant/crazy chimera language cython, and now perhaps numba.
The multi-modal nature of development affects libraries (too few devs needing too many hammers) and even the very sustainability of the ecosystem -- as evidenced by myriad numpy-discussion threads in the past year [0][0.1] about core implementation issues with 100-150+ messages, but about three people [1] of those who have the requisite interest, C chops, Python and CPython API understanding, and time to do work in the NumPy core. As a result the core has been mostly stuck in a local maximum for years now.
Contrast Julia: Arrays are written in the language itself [2]. Folks practically off-the-street with single-digit weeks of Jl experience are implementing non-trivial array datatypes [3][4]. Julia appears to have the flexibility to allow the kind of fine-tuned optimizations that are seen in the guts of a BLAS library [5] while simultaneously facilitating carefree, throw-away data exploration scripts by MATLAB refugees.
If anything, I fear that Julia may be susceptible to the LISP curse if extreme care is not taken to ensure the interoperability that is needed to build an ecosystem. (The Python straitjacket is a blessing in this respect). On the other hand, maybe this time github will help balance the equation...
[0] http://thread.gmane.org/gmane.comp.python.numeric.general/44...
[0.1] http://thread.gmane.org/gmane.comp.python.numeric.general/48...
[1] http://thread.gmane.org/gmane.comp.python.numeric.general/49...
[2] https://github.com/JuliaLang/julia/blob/master/base/array.jl
[3] https://groups.google.com/d/topic/julia-dev/YYRa6Iveevg/disc...
[4] https://groups.google.com/d/topic/julia-dev/x3xFSa8iCog/disc...
[5] https://groups.google.com/d/msg/julia-dev/vETgqnpesDk/OuZaB7...
The following years are going to be exciting for open-source numerical work. But I fear fragmentation might ruin it for everybody.