10 ms·
Julia: A Fast Language for Numerical Computing
- sdegutis 11y agoSee also, Julia's home page: https://julialang.org/ https://julialang.org/ I toyed around with it for a while, and really liked it. I wondered to myself "what makes this language specific to numerical computing? it seems generic enough to be used wherever I'd want to use Ruby or Haskell..." But then I tried using it. And even though the language is generic enough, the standard library just plain assumes you're only doing numerical computing, and makes everything else needlessly hard by trivial omissions. That was like 2013 though, so maybe things are different now?
- gravypod 11y agoI was really REALLY interested in the language due to the clustering ability and their JIT they build into it. But it does seem like the language was build without any systems-usage in mind. How sad. Nothing will ever quench my thirst for clustering.
- vegabook 11y agoso... it was built for clustering but it doesn't quench your thirst for clustering? Please could you clarify.
- KenoFischer 11y agoWhile numerical computing is the first target, that's definitely not the sole goal of the language, so if there's something simple that you feel is missing, I would be very curious to know what that is.
- skybrian 11y agoIt seems to be offline.
- KenoFischer 11y agoHTTP site is up. It's hosted on Github Pages so HTTPS may not work.
- noam87 11y agoInteresting, I've had the opposite reaction. I find it to be about the nicest programming language to work with. I even started writing a little toy database in Julia, and find it really easy to reason about. Package management system is its only weak point IMO. It makes a lot of counter-intuitive decisions (having to build a package from the packages directory? that's just strange). Cargo / Bundler to me feel like the gold standard in package management... most alternatives I've seen would be better off just copying those workflows unless there's a really good reason to try something new.
- jernfrost 11y agoI haven't used Julia for any big projects but I routinely use it for small projects or utilities. I have used it for: 1) Obfuscating source code 2) Reading and presenting iOS provisioning profile data 3) Simple social science related simulations ported from Ruby or Python. 4) Code completion plugin for TextMate etc So no huge projects, but I found Julia to be a very nice and versatile language to work in. I find I can write code which is clearer than its corresponding Python and Ruby version and which has less bugs because type info is a bit more explicit, but without getting too much in the way as is typical with statically typed languages. I tried Haskell for some of the same projects, but I got to say Haskell takes way longer time to get proficient in. For the stuff I did I also found the way the Julia type system worked, made code reuse much easier than Haskell. E.g. with the Julia Union type it was possible to define individual function across multiple specific types. E.g. I could make a particular implementation of f apply to type A, B and C, while another particular implementation of f applies to D and E. Function g could have a specific implementation of A and E. While another implementation of g is used for B and C.
- bitL 11y agoJust a question - I completely lost interest in Julia when I read it adopts many of the ugly language hacks of Matlab - why should I care about Julia when I can feel frustrated with Matlab already?
- kafkaesq 11y agoSuch as? I'd be curious.
- rspeer 11y agoThe literal syntax that you'd think would make an array of arrays concatenates the arrays instead. Sometimes. It depends on types. (Or have they fixed that now?) Also, although this is of course a preference, 1-based indexing. I would rather have compatibility with C and Python and I don't care one bit about compatibility with Matlab. These decisions make it seem that Julia just aspires to be "open source Matlab" when that already exists. It could instead aspire to be the good programming language that Matlab isn't.
- KenoFischer 11y ago> The literal syntax that you'd think would make an array of arrays concatenates the arrays instead. Sometimes. It depends on types. (Or have they fixed that now?) Yup, we fixed that (deprecated in the latest release, will be switched over). It was super annoying. There's been lots said on the 1-based indexing discussion, so I won't get into it here, but I can guarantee you that "open source Matlab" is not the ambition. Our ambition is to be the best possible programming language for technical computing and a great language for programming overall.
- kafkaesq 11y agoThere's been lots said on the 1-based indexing discussion, so I won't get into it here. It's not a deal-breaker, I suppose. Still, the rationale I've heard -- "We have chosen 1 to be more similar to existing math software"[1] (as opposed to basically every modern programming language out there) just seems... weird. Perhaps "compatibility with traditional sequence notation in math and physics" (upon which presumably most software packages are based) would be a better statement of the case for 1-based indexing. [1] https://github.com/JuliaLang/julia/issues/558 https://github.com/JuliaLang/julia/issues/558
- kafkaesq 11y agoBTW is it just me, or do other people find that the interpreter is very slow to start under older versions of OS X? That's one of my current obstacles to diving further into Julia.
- KenoFischer 11y agoIt used to be a big problem. It's still not super fast (~1s or so), but we've been doing quite a bit of working at making it faster. If it's significantly slower than that, something else must be going on.
- kafkaesq 11y agoThanks -- I'll definitely be giving it another shot, at some point.
- vonnik 11y agoThis is super. Fwiw, Java and Scala aren't bad for numerical computing either: http://nd4j.org/ http://nd4j.org/ https://github.com/deeplearning4j/nd4j/ https://github.com/deeplearning4j/nd4j/
- namelezz 11y agoHow is nd4j compared to Breeze and jblas, which are used in Spark MLlib[1]? [1] - http://spark.apache.org/docs/latest/mllib-data-types.html http://spark.apache.org/docs/latest/mllib-data-types.html
- vonnik 11y agoND4J supports n-dimensional arrays, while Breeze does not. jblas is great but it's not fast enough. We've relied on netlibblas in the past, and we're moving to faster computation libs now. We'd love for Spark MLlib to plug into ND4J at some point.
- agibsonccc 11y agoSee my post here: https://news.ycombinator.com/edit?id=11275071 https://news.ycombinator.com/edit?id=11275071 We have this concept of a backend where we had net lib java and jblas, but both are horribly slow/limited and need some updating which is why we added our approach to this. If a new matrix framework comes out, I will just write a backend for it and allow people to keep the same dsl. Breeze also isn't usable from java: http://stackoverflow.com/questions/27246348/using-breeze-from-java-on-spark-mllib http://stackoverflow.com/questions/27246348/using-breeze-fro... FWIW, we also support both row and column major (you can specify the data as well as ordering) very similar to numpy. If you come use nd4j, it will mainly be for a dsl that encourages vectorization just like any other numerical language.
- noobermin 11y agoJava certainly has obtained a bad reputation in the sciences, however.
- vonnik 11y ago
- samuell 11y agoIf Julia had Go-style concurrency primitives (channels and lightweight threads), and M:N thread multiplexing, it would be the perfect language to implement my upcoming data flow based scientific workflow language (http://github.com/samuell/scipipe http://github.com/samuell/scipipe). Now I'm instead trapped with Go, which lacks a REPL, and leaves a lot to wish in terms of metaprogramming capabilities needed to create a nice programmatic API. The lack of the mentioned features is my biggest concern with Julia.
- StefanKarpinski 11y agoThreading is already an experimental feature and Go-style concurrency will be a standard feature in the future. Well, technically it may be more like Cilk or TBB but it will be very similar to Go.
- elcritch 11y agoI implemented a test of a micro-benchmark posted on HN several weeks back. It took some extra tries but eventually the performance using the existing 'Task' feature was acceptable. Not Go level but decent and give the rate of development on Julia it'd probably be worthwhile to experiment.
- samuell 11y agoThat is interesting to know. But, so the Tasks (which is implemented with light-weight threads IIUC) will all run in the same os process/thread, unless you manually create new ones?
- wyager 11y ago
- knlje 11y agoHave they already fixed the need to "devectorize" the code to make it fast? This was the major drawback for me since I wish the code to be concise AND fast.
- elcritch 11y agoFound this to be pretty handy at times: [Devec](https://github.com/lindahua/Devectorize.jl https://github.com/lindahua/Devectorize.jl).
- chrispeel 11y agoI agree, this would be good. Intel's ParallelAccelerator.jl [1] is making some progress in this area. [1] http://julialang.org/blog/2016/03/parallelaccelerator http://julialang.org/blog/2016/03/parallelaccelerator
- irremediable 11y agoWhat's the best way to run a debugger through Julia code? I value an interactive debugger much more for this kind of nitty gritty numerical programming than I do for lots of other tasks.
- ced 11y agoWork on the debugger is underway, it should be in the 0.5 release in a few months.
- deleted 11y ago[deleted]
- deleted 11y ago[deleted]
- KKKKkkkk1 11y agoDoes Prof. Edelman have a financial stake in Julia? He is such an enthusiastic booster of the language, that either it must be truly amazing, or there is an undisclosed motive.
- deleted 11y ago[deleted]
- deleted 11y ago[deleted]
- KenoFischer 11y agoAlan is one of the people who started the language (which is mentioned in the article). He is also one of the cofounders of Julia Computing (the company we formed to provide support and other services for the company). So from my biased viewpoint, the language is both truly amazing and Alan has a motive to promote the language, if only since he has a significant chunk of time and effort into making it a reality. I don't think it's fair to call it undisclosed however.
- KKKKkkkk1 11y agoI think it's great that Prof. Edelman is dedicating his time to Julia and I hope he will be rewarded for it. However, I think that a statement of the sort you provided above should have appeared below the SIAM News article. This is something that would have been done in any major newspaper or scientific journal.
- KenoFischer 11y agoYes, I don't disagree. I don't know why the SIAM news editors didn't. I do hope my statement here makes clarifies the facts at least for people coming from here.
- deleted 11y ago[deleted]
- SixSigma 11y agoI recently started using Julia as my main platform as a replacement for Octave in my engineering classes. I have found it an excellent language, as easy as Python to pick up and some great numerical primitives. Using Juliabox in class means no installation woes and means whatever I do during lessons is available wherever I can get online. The ability to mix in markdown and code on the same page is brilliant for keeping notes. I realise that is not a feature of Julia but still, it is a benefit. I've not done any heavy work in it but I'm really looking forward to doing so. I can dump Python, Octave and Limbo all at the same time.