Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

This kind of frankensteinism was one of the motivating reasons for creating Julia (see this InfoWorld interview: http://www.infoworld.com/d/application-development/new-julia..., please ignore the misleading title). Python, although it can get you closer to single-language scientific computing, can't quite get you there because of the split language model: at the very least, libraries have to be written in C for adequate performance; often complex projects end up requiring parts written in C.

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.



I think it's hard to overstate how important this is.

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...


Being able to call libraries in language A from language B is only half of the solution. Automatic compatibility layers won't be able to convert semantic differences between the languages. What you will end up is writing language A in language B. For example "writing C in python" or "writing Java in python", instead of writing pythonic code. I think most people will agree that Java is a better Java than python is.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: