5 ms·
The main dynamic this article basically fails to describe clearly is that the status quo for scientific computing is that you do your nice, high level modeling
by gfodor 13y ago
The main dynamic this article basically fails to describe clearly is that the status quo for scientific computing is that you do your nice, high level modeling in MATLAB or R, and then when you get good results, you port it over to C/C++/Java for production. It's usually a write-only process since the code you end up with in Java for example completely obfuscates the clean algorithm you designed in MATLAB. Julia's core value proposition (if I understand it correctly) is that you can build your models and algorithms in a MATLAB-like environment (with macros!) and then, lo and behold, you can actually just tune and deploy this code right where it is, without having to do a port.
- mturmon 13y agoThis is a good point. The article puts up a straw man ("one language to rule them all") when it would be just as effective to lay out the actual situation in scientific computing -- it's uncomfortably heterogeneous at the moment. Having one language that spans more of the space from the bare metal (C-like fine-grained numerical manipulation) to the top level (say, training a complex model on a large dataset in a REPL) would be very helpful.
- stmartin 13y agoYes, that language is called utopia.
- Derbasti 13y agoAlso, having Macros and a built-in C-FFI. Now give me some plotting and good Qt bindings, and I'm all set!
- thinkpad20 13y agoThere are a few plotting libraries for Julia; I'm not sure how robust they are though. http://julialang.org/downloads/ http://julialang.org/downloads/
- bch 13y agoI see that the julia page says that Julia can call out to C functions[0], but can C functions call into Julia? ie: make a program "myprog" like: cc -o myprog myprog.c -ljulia and be able to call julia_domath()? edit: reference to julia documentation [0] http://docs.julialang.org/en/latest/manual/calling-c-and-fortran-code/ http://docs.julialang.org/en/latest/manual/calling-c-and-for...
- sveme 13y agoIt is a bit hidden, but calling julia from C is possible in the 0.3 prerelease: http://docs.julialang.org/en/latest/manual/embedding/ http://docs.julialang.org/en/latest/manual/embedding/
- bch 13y agoThat is _exactly_ what I was imagining, and very exciting. Let the experimenting begin!
- bch 13y agoI don't see an 0.3.0rc or obvious github branch -- what's the best way to follow 0.3.0?
- ihnorton 13y agoNo RC yet, 0.3-pre is the github trunk.
- zmk_ 13y agoYou can get compiled nightlies at http://status.julialang.org/ http://status.julialang.org/ Otherwise building the master branch will get you prerelease.
- pygy_ 13y agoIt is developed on the master branch, and there's a v0.3 milestone for the related issues. https://github.com/JuliaLang/julia/issues?milestone=7&page=1&state=open https://github.com/JuliaLang/julia/issues?milestone=7&page=1... You can find recent binaries here: http://status.julialang.org/ http://status.julialang.org/ You can also check the dev mailing list: https://groups.google.com/forum/?fromgroups#!forum/julia-dev https://groups.google.com/forum/?fromgroups#!forum/julia-dev
- carterschonwald 13y agoWell articulated! I'm actually working on related prototyping then deploy tools myself for numerical computing. Albeit using ghc Haskell as the substrate so I'm making a different set of tradeoffs than julia.
- blah32497 13y ago(Note: I haven't tried Julia yet) This would save so many man hours... At my shop, for every MATLAB engineer (mostly older guys) you need a C++ guru (mostly younger guys) to translate his stuff into something that will run fast. On the other hand having seen the code the MATLAB folks write... I'd be worried. It's possible to write MATLAB in a way that is clean and makes the core algorithm presentable but that's rarely a priority. The real advantage of MATLAB is the quick development cycle. With the right packages you can make C++ look comparable... sorta. Fundamentally the problem with MATLAB engineers is that they don't understand how to optimize code b/c they don't understand what's going on under the hood and they don't understand how to organize code b/c they don't have a concept of object oriented development, writing to interfaces, design patterns etc. etc. EDIT: Just to clarify, I don't mean to denigrate MATLAB engineers. I'm just saying that in the current system you have two groups that specialize in different things. One focuses on algorithm development, and one on programming. I'm just speculating that maybe there is a good reason for it, and it may be unreasonable to ask one person to do both.
- StefanKarpinski 13y agoThis is why one of the design goals of Julia is to have a fairly transparent performance model. In particular, if you write C-like code, you get C-like performance. A lot of the most twisted and impenetrable Matlab code exists because Matlab forces you to vectorize everything to get acceptable performance. Generic programming and design are also very important in Julia. It takes a while to get the hang of it, but people do seem to after a little bit.
- Blahah 13y agoIs there a guide to performance optimisation in Julia anywhere?
- StefanKarpinski 13y agoIt's by no means comprehensive, but http://docs.julialang.org/en/latest/manual/performance-tips/ http://docs.julialang.org/en/latest/manual/performance-tips/ is a decent start. http://docs.julialang.org/en/latest/stdlib/profile/#stdlib-profiling http://docs.julialang.org/en/latest/stdlib/profile/#stdlib-p... is also helpful.