19 ms·
Why we created Julia - new language for fresh approach to technical computing
- ludwigvan 15y agoVery exciting. The real power of MATLAB likes in its toolboxes, though, I wonder if there will be an easy (and possibly automatic) way to convert toolboxes. One more thing: it would be awesome if the `manipulate` from Mathematica could be incorporated somehow in that web interface. See: http://www.wolfram.com/broadcast/videos/manipulate/ http://www.wolfram.com/broadcast/videos/manipulate/
- ViralBShah 15y agoMATLAB toolboxes are simply awesome for users, even though they are expensive. We hope that if enough people find julia useful, many such libraries will be built. Having written a ton of mex and matlab stuff, and a lot of julia libraries, I find that julia is nicer to use personally - but of course I am biased. :-) I do believe that open source + good compiler + simple C/Fortran calling interface will lead to others being able to write toolboxes in julia itself and plugin libraries when needed.
- andrewcooke 15y agothis is surprisingly complete for a relatively new(?) project. one notable restriction is that inheritance is only for interface, not implementation. also, can anyone find a sequence abstraction (like lists)? arrays seem to be fixed size and i don't see anything else apart from coroutines. am i missing something?! [perhaps not, if it's intended for numerical work. on reflection i am moving more and more towards generators (in python) and iterables (in java, using the guava iterables library to construct maps, filters etc) rather than variable length collections, so maybe this is not such a big deal. it's effectively how clojure operates, too...]
- pron 15y ago> one notable restriction is that inheritance is only for interface, not implementation. Not quite. You do inherit methods defined on abstract types.
- StefanKarpinski 15y agopron is right: you can inherit behavior from abstract types and abstract types, unlike interfaces, can have code written to them. (In single-dispatch OO languages, you are in the strange situation that you can write code to interfaces if they are arguments but not if they are the receiver of a method; thus, you're in a situation where you can either dispatch on an interface or you can write code for it, but never both at the same time.) Arrays are not fixed size: there are push, pop, shift and unshift operations on them just like Perl, Ruby, etc. This uses the usual allocation-doubling approach so that the entire array doesn't need to be copied every time, but it's still usually much better to pre-allocate the correct size. Of course for small arrays that are typical in Perl, Ruby, etc., it hardly matters. If you're building an vector of 1 billion floats, however, you don't want to grow it incrementally. The sequence/iterable abstraction is duck-typed: an object has to implement methods for three generic functions: i = start(x) done(x,i) next(x,i) The state i can be anything. Lack of implementation inheritance is one of those things that intro to OO books make a big deal of, but when you don't have it, you don't miss it at all — or at least I don't. I've never found tacking a few fields onto the end of an object to be very useful. I don't want to inherit memory layout — I want to inherit behavior. Julia's type system lets you write behavior to abstract types and inherit that for various potentially completely different underlying implementations.
- andrewcooke 15y agothanks guys.
- pron 15y agoI don't know if I'd call it duck-typing when methods are not grouped into interfaces. I think you could say that in Julia, each method is an interface. I find it much cleaner than actual "duck-typing" (the way it's done in , say, Scala with structural types) because then you have both an interface, which specifies a contract, as well as the method name, which also specifies a contract when duck-typing is used, even when it's found in different interfaces. Must compound types in Julia be concrete? I don't think I saw it in the documentation.
- 15y ago
- nnnnni 15y agoObligatory xkcd: http://xkcd.com/927/ http://xkcd.com/927/ It's about standards, but it still applies.
- StefanKarpinski 15y agoI realize this is just a comic, but it's one of the reasons that we try to be as compatible with C and Fortran libraries as possible — that's where the vast bulk of high-quality scientific computing work has been done, and we want to be as compatible with it as possible. The goal here is not to duplicate all the work that's already been done, but to allow existing high-quality libraries to be smoothly and easily used together in one environment. That's very much the same philosophy that NumPy and SciPy have, and indeed, it much the same goal. The biggest issue with NumPy, IMO, is that Python arrays aren't designed with linear algebra and interoperability with libraries like BLAS and LAPACK in mind. This leads to the somewhat maddening distinction between Python arrays and NumPy vectors and matrices — and lots of conversion back and forth between them.
- nnnnni 15y agoI also posted that comment without reading the article -- that was just my first response to "yet another programming language". I'm sure that it's filling a real need. I just wish that groups could cooperate to make a handful of languages/libraries better rather than having 100 competing ones.
- ViralBShah 15y agoActually, there is much more co-operation than is visible. Almost all the groups share the same libraries, same bugfixes, same patches, etc., which typically will account for much of the user experience. The different language approaches will typically compete on things like syntax, speed, etc., and this leads to innovation and cross-pollination of ideas. I personally prefer to have some choice, and use a number of languages for scientific computing myself - but I guess too much choice makes things confusing for the newcomer.
- wbhart 15y agoMuch praise!! These guys have incredibly good taste. Almost every single thing I can think of that I want in a programming language, they have it. All in the one language! The fact that it has parametric types, parametric polymorphism, macros, performance almost as good as C, good C/Fortran interop, 64 bit integers and an interactive REPL all in the one language just blows my mind. I wasn't able to tell if it is possible to overload operators, which is another thing essential to mathematical code. I was also unsure why the keyword end was needed at the end of code blocks. It seems that indentation could take care of that. I also didn't see bignums as a default type (though you can use an external library to get them). However, all in all, I think this is the first 21st Century language and find it very exciting!
- ludwigvan 15y agoI think they are aiming for smooth transition for MATLAB users. They also have 1-index based arrays as opposed to 0-index .
- wbhart 15y agoIt would certainly be nice if there was an option to use 0 based indices in blocks of code. It's understandable in that they are pitching at the technical community, and many mathematical papers and books are written with 1 based indices. But I am a mathematician who prefers 0 based indices.
- yarapavan 15y agoCongrats! Great job!!
- almost 15y agoAwesome stuff: http://julialang.org/manual/metaprogramming/ http://julialang.org/manual/metaprogramming/
- samth 15y agoIt's great the metaprogramming support seems to be a requirement for new languages these days. Unfortunately, this one combines the inconvenience of Template Haskell (explicit invocation of macros with @) and the bugs of Common Lisp (the section on hygiene says, basically, "we have gensym"). Fortunately, the language is young, and I hope they can improve this story.
- tomp 15y agoWhat else would you suggest? I find that the @ syntax is amazing, since the reader (programmer) knows exactly which form is a macro (and can look it up), as opposed to introducing arbitrary, often very confusing syntax.
- StefanKarpinski 15y agoThanks. We've considered doing other things — like function call syntax for macros (which is essentially what Lisp/Scheme have), but decided against it. It just causes confusion. Can you pass a macro around like you can a function? Can functions shadow macros and vice versa? What happens if a macro introduces a local variable that shadows the macro itself? Basically it comes down to fact that macros are syntactic and as such behave very differently from functions, which are not syntactic. With the @ syntax, there's no confusion.
- wes-exp 15y agoSeems like there have been a variety of attempts to introduce lisp-style macros into non-lisp languages that use traditional syntax rather than s-expressions. I can see how this can succeed for simple macros without sacrificing much. However, complex macros done this way tend to be much more complicated than the equivalent lisp code. Do you believe that Julia solves this problem, or is it also subject to some of the same tradeoffs?
- mjwalshe 15y agoAnd the moon on a stick :-) Not sure many "technical" programmers would take c as the desert island programing language. Sound interesting though if it can make hadoop easier to use id take that as win I dont think its going to replace fortran as a HPC language.
- deleted 15y ago[deleted]
- coffeeaddicted 15y agoC as desert island programming language but making all indexing 1-based: "the first element of any integer-indexed object is found at index 1, not index 0, and the last element is found at index n rather than n-1, when the string has a length of n." Also begin end blocks - maybe there was a pascal ninja hidden in the syntax committee room?
- deleted 15y ago[deleted]
- jfager 15y agoJust spent the last hour reading through the docs and playing around with it. This is some damn sexy stuff. It's been a long time since I've been this excited by a language.
- disgruntledphd2 15y agoI'm a little worried about some of those benchmarks. They appear to have benchmarked R from a few years back against 2011 Matlab, for instance. In addition, they provide no code used for the benchmarks. That being said, this looks really interesting, and I'm gonna bookmark it for when I have time to examine it properly (after the damn phd is finally submitted).
- Jabbles 15y ago"The source code for the various implementations can be found here:" (And then follow the links for each language...)
- EricBurnett 15y agoThey do link to the code: https://github.com/JuliaLang/julia/tree/master/test/perf https://github.com/JuliaLang/julia/tree/master/test/perf . It doesn't look like a very reliable microbenchmark - run test x 5 times - but it should provide a useful starting point if you want to run your own.
- deleted 15y ago[deleted]
- disgruntledphd2 15y agoThanks guys, I'm not sure how I missed that. The benchmarks look interesting, but it is strange how old an R version they used. That being said, its a really interesting language, and I look forward to playing with it.
- plessthanpt05 15y agoPretty tied into Python/Numpy ecosystem & 3rd party libs; however, after reading that (somewhat over the top, albeit very persuasive) posting, I'm definitely going to dig a bit deeper. Really nice first impression, especially like the clean syntax and calling of c -- looks promising, thanks!
- karpathy 15y agoNice! I do a fair amount of scientific computing in MATLAB. This looks to have a lot of the powerful array syntax / functions of MATLAB, but with the neat feel of Python, and all kinds of extras.
- deleted 15y ago[deleted]
- vilya 15y agoThis looks like it would be a great language to tackle the Project Euler problems with - which is usually a good sign, in my book. A big-int type would be nice though.
- kib2 15y agoNo Windows support, really ?!
- deleted 15y ago[deleted]
- simonw 15y agoThat's pretty common for new language implementations - Node.js was around for a couple of years before the Windows port was ready. To be honest, if you're targeting early adopters of a programming language Linux and Mac support is probably a lot more important than Windows. Smart Windows users can always run Linux in a VM.
- mjwalshe 15y agoand most users of this sort of languages aren't going to be running it on windows but on Unix systems.
- kib2 15y agoAre you insinuating that Windows users are too stupid to use those languages (and use only rotten ones like V.B etc. ) ? Please, be a minimum objective and constructive.
- ajdecon 15y agoI doubt it was intended as an insult. Julia (and other scientific languages) are often used in clustered environments, and Linux is much, much more common than Windows in HPC.
- oneofthose 15y agoFrom my experience, a fair amount of scientific computing is done on Windows through Matlab.
- ViralBShah 15y agoIt is true that a number of people do their scientific computing on Windows+Matlab or Windows+R, but that most parallel stuff is typically on linux clusters. It would be nice if julia worked on both. It is not by design that we do not have Windows support. It's just that none of us uses windows. We do believe that code is largely portable, and with a little effort, it can be built on cygwin or mingw. Nothing like a native port though. Maybe someone who is familiar with windows will come along and contribute. This is a common question our friends and colleagues ask us.
- drats 15y agoLooks very much like a python without the legacy and a touch of ruby, ipython as the default shell, better multiprocessing, better os/system access, decorators and mathematics. Nice clear documentation too. Given how similar to python they are their main competitor is pypy, which isn't too far behind them in performance I'd suspect (absent from the benchmarks though). I was fully expecting someone to make a non-compatible fork of pypy to create a faster python-like lang/something like julia. They should quickly get some elegant small libraries like sinatra/bottle and requests (access to dbs with http interfaces as well). A robust requests+lxml library built-in would be simply amazing.
- DasIch 15y agoPyPy provides an entire framework for people to write interpreters in. If you were to write one you wouldn't fork PyPy, you would use it.
- drats 15y agoWell you are being a bit nitpicky as pypy is both the python implementation and the JIT/Rpython/framework bit. What I mean was someone holding very close to the python implementation in almost everything (syntax etc.) but streamlining it/breaking compatibility/giving it a new name ("python3-as-it-should-have-been" perhaps?). Further, if we are going to be nitpicky, when you use something like that for its intended purpose it's still a fork - I forked Twitter bootstrap for my new project/I used Twitter bootstrap for my new project - so "you wouldn't fork PyPy" is a false statement.
- apl 15y ago> if we are going to be nitpicky, when you use something > like that for its intended purpose it's still a fork No. Fork is definitely not semantically congruent with use. You're only forking Bootstrap if you create a path that diverges from its mainline; don't get confused by GitHub parlance.
- drats 15y ago
- mjw 15y agoI wonder what they think about or have learned from http://en.wikipedia.org/wiki/Fortress_(programming_language) http://en.wikipedia.org/wiki/Fortress_(programming_language) , another recent-ish attempt to deliver a modern and powerful scientific programming language. Personally I'm a little wary of being ghettoised into something overly domain-specific for scientific/numerical computing. Really good interop may mitigate that -- something which can navigate the unholy mix of C, C++, fortran, matlab, octave, R and python routines one comes across trying to reproduce others research work, would indeed be awesome. I do wonder if some of the noble demands of this project might be better delegated to library developers though, after adding a bare minimum of syntax and feature support to a powerful general-purpose language. For now Python+numpy+scipy seems a great 90% solution here.
- wbhart 15y agoAnd what should the library writers use? The great advantage of this is that much of it can be done in one language. From the article: "The library, mostly written in Julia itself, also integrates mature, best-of-breed C and Fortran libraries for linear algebra, random number generation, FFTs, and string processing."
- fijal 15y agoPython+numpy+scipy does work only if you actually don't write much python or at least not run much python. Otherwise it sucks
- joelthelion 15y agoJust wait for Numpy on PyPy to be available :)
- FraaJad 15y agoDo you realise you are talking to a PyPy core dev? ;)
- infinite8s 15y ago
- maidenvoyag3 15y agoOK it seems pretty impressive, but I love how something that should be a 'fresh approach to technical computing' has 1-based indexes and 'end' statements!
- rwmj 15y agoThey want something like OCaml ...
- kghose 15y agoSo, the usual caveats about writing code to match the languages strengths apply here. For example the fib function plays to a python weakness - function overhead. Rewriting the code to be a simple loop removes the inefficiency: import time def fib(n): if n < 1: return None if n == 1: return 0 if n == 2: return 1 x0 = 0 x1 = 1 for m in range(2,n): x = x0 + x1 x0 = x1 x1 = x return x if __name__=="__main__": assert fib(21) == 6765 tmin = float('inf') for i in xrange(5): t = time.time() f = fib(20) t = time.time()-t if t < tmin: tmin = t print str(tmin*1000)
- StefanKarpinski 15y agoThat's quite true, but this micro-benchmark wasn't chosen to make Python look bad — it was chosen to test how good each language was at function calls. So using a loop defeats the point of the benchmark. Using double recursion to compute Fibonacci numbers is also stupid and could obviously be avoided in all languages. The story the micro-benchmark tells is that Julia's pretty good at function calls, but JavaScript is even better (and, of course, C/C++ is the gold standard). In general the V8 engine is really amazing. We had the advantage of being able to design the language to make the execution fast (with the constraints of all that we wanted to be able to do with it), but V8 makes a language that was in no way designed for performance and makes it blazingly fast. After I wrote the benchmark code for JavaScript and saw just how fast it was I had a moment of "should we be doing scientific computing in JavaScript?" Now wouldn't that be nuts?
- ViralBShah 15y agoYes, I pretty much had the same thought, but then I started thinking about multiple dispatch, calling C/Fortran libraries, polyhedral optimizations, and I realized that V8 developers may not have the same design targets in mind.
- pron 15y ago... and the JVM (HotSpot) is even better than V8.
- mkl 15y agoThe language looks interesting, but I am a bit concerned about the license situation, as in my understanding they have misinterpreted the GPL with regard to shared libraries. Quoting: Various libraries used by the Julia environment include their own licenses such as the GPL, LGPL, and BSD (therefore the environment, which consists of the language, user interfaces, and libraries, is under the GPL). Core functionality is included in a shared library, so users can easily and legally combine Julia with their own C/Fortran code or proprietary third-party libraries. The FSF disagrees (http://www.gnu.org/licenses/gpl-faq.html#NFUseGPLPlugins http://www.gnu.org/licenses/gpl-faq.html#NFUseGPLPlugins): If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, which must be treated as an extension of both the main program and the plug-ins. In order to use the GPL-covered plug-ins, the main program must be released under the GPL or a GPL-compatible free software license, and that the terms of the GPL must be followed when the main program is distributed for use with these plug-ins.
- _delirium 15y agoI believe what they're saying is that there are two things: 1. The Julia core, which consists of the language runtime and core functionality, is MIT licensed, and builds into an MIT-licensed shared library. 2. The Julia "environment", which includes a user interface, third-party libraries, etc., some of which are GPL, and which is therefore GPL as a whole. I believe they're saying that you can link #1 with proprietary code, not meaning to imply that you can link #2 with proprietary code (because as you point out that wouldn't work). How useful that is probably depends on how many of the libraries the average application needs are in bucket #1.
- StefanKarpinski 15y agoThat is exactly right. At the moment I think the only GPL library Julia uses is readline — but obviously that's pretty important for the repl, so we chose to do it this way.
- sparky 15y ago
- remmers 15y agoIs Julia homoiconic? Could someone give an example of a Julia macro?
- absconditus 15y agohttp://julialang.org/manual/metaprogramming/ http://julialang.org/manual/metaprogramming/
- bandarman 15y agoThis is very exciting - congratulations on the launch of Julia. Now good luck as you move towards building a strong community!
- meemo 15y agoI hope this really takes off. Though, for it to really take off it needs a large ecosystem. The fact that the source is hosted on Github is a good start.
- bandarman 15y agoAnyone else having compile issues? I'm on Ubuntu 11.10 (Server x64) and make fails consistently.
- ViralBShah 15y agoIs it due to openblas not building? This may help: https://github.com/JuliaLang/julia/issues/370 https://github.com/JuliaLang/julia/issues/370
- bandarman 15y agoThanks for your suggestion. I tried that, but it wasn't it. I'm still getting lots of build errors, culminating with this: Saving to: `lapack-3.4.0.tgz' 2012-02-19 01:03:26 (55.3 KB/s) - `lapack-3.4.0.tgz' saved [6127787/6127787] make[3]: gfortran: Command not found make[3]: * [lsame.o] Error 127 /bin/sh: ./testlsame: not found /bin/sh: ./testslamch: not found /bin/sh: ./testdlamch: not found /bin/sh: ./testsecond: not found /bin/sh: ./testdsecnd: not found /bin/sh: ./testieee: not found /bin/sh: ./testversion: not found make[2]: * [lapack_install] Error 127 make[1]: * [lapack-3.4.0/INSTALL/dlamch.o] Error 2 make: * [julia-release] Error 2
- llimllib 15y agomake worked very smoothly here on my Mac, downloaded and installed its own deps. Great work guys.
- olaf 15y agoYes, I get some 32-bit issues, gfortran and some packages (-dev) were not installed, still getting an error 139: JULIA sys0.ji Segmentation fault make: [sys0.ji] Fehler 139
- ya3r 15y agoIf you look at the Github repo, you will notice the second most used programming language in the repo (C being the first) is Objective-J ! I wonder why?
- jfager 15y agoBecause the julia source file names end in .j, probably.
- StefanKarpinski 15y agobingo.
- mjcohenw 15y agoI am currently building it - OS X Lion. First, I had to install wget:) Then, I got a certificate error on the https, so I pasted the command into Firefox and got the tarball. After copying it to the julia dir, I edited the tar command and ran it. Finally, doing make right now. Here is the certificate error: Connecting to github.com (github.com)|207.97.227.239|:443... connected. ERROR: The certificate of `github.com' is not trusted. ERROR: The certificate of `github.com' hasn't got a known issuer.
- ViralBShah 15y agoWe used to use curl until recently so that it would build just fine on OS X. We changed it to wget, because it just seems so much easier to use than curl, and we had to do some nasty stuff at one point to download a few libraries that I couldn't figure out how to do with curl. BTW, do try out the mac binaries if the build is an issue. We are still trying to make it all build seamlessly!
- StefanKarpinski 15y agoFor the record "ease of use" was not why we switched to wget — there was (for a while) a dependency that could only be downloaded using wget's recursive downloading. That's not the case anymore, however, so we should really switch back to curl.
- jfager 15y agoFor anyone else who hits this, this should get you going: http://loopkid.net/articles/2011/09/20/ssl-certificate-errors-on-mac-os-x http://loopkid.net/articles/2011/09/20/ssl-certificate-error... Basically, you need to get the right certs and then tell wget to use them.
- fuzzythinker 15y agoSlightly off topic, but V8's benchmarks really surprised me
- warmfuzzykitten 15y agoWhen you try to install julia on MacOS X 10.7.3, you may see the make fail because wget is not installed. Easy to fix with: brew install wget [Edit] git page says gfortran (and wget) are downloaded and compiled, but if they're not already installed make fails. So... brew install gfortran The need to do this separately may have to do with licensing? [Edit] And if you're not root, install to /usr/share/julia will fail. So you'll need to do: sudo make install I'm sure all this is perfectly obvious to Unix-heads who are inured to this sort of abuse, but I'm a Mac-head, used to things that Just Work, and I hate this shit.
- StefanKarpinski 15y agoSorry! The only thing I can say in our defense is that this is pretty trivial compared to installing a lot of scientific computing packages. But seriously, we'd like a drag-and-drop Mac installer. Anyone want to do that? (Only half kidding.) Stepping back a bit, this is one of the reasons why having an entirely web-based experience is appealing — then you can let people use a known-good setup without needing to mess around with installing a fairly extensive amount of software just to get basic things to work. Then there's also the general appeal of doing big data work a la Google docs or Gmail. The trick is getting the user experience to be good enough on the web.
- warmfuzzykitten 15y agoPlease don't let perfection tomorrow keep you from meaningful improvements today. Just better instructions for Mac installs would be helpful!
- ViralBShah 15y agoSomeone just submitted a patch that uses curl on OS X. Also, no need for root, because julia will run out of the directory it is built in. Hopefully, someone who knows more about mac packaging will build a drag-and-drop installer.
- jberryman 15y agoTheir site seems to be taking a hammering. Any mirrors?
- StefanKarpinski 15y agoWe're GitHub hosted so hopefully this doesn't take GitHub down! (j/k)
- spitfire 15y agoIt's not yet another language that we need. It's more high level functions. C or fortran can be as fast as they want, but in mathematica I can do MorphologicalComponents[] and get the components. having these functions available to me speeds up my time to discovery by 1000x or more.
- kylebrown 15y agoI'm more concerned with visualizing the data than with compiler optimizations or types/operators. I see that d3.js is included in the package, but a cursory glance at the docs and I didn't see any examples of how to generate a chart.
- sparky 15y agoWould be interesting to see how Julia perf compares to C++ compiled or JITed with LLVM via G++ 4.6+Dragonegg or Clang 3.0/svn. Would be more apples-to-apples, since both would use the same middle- and back-end. G++ 4.2.1 is a bit obsolete at this point, but as it probably came by default on the MBP they tested on, it's understandable.
- StefanKarpinski 15y agoThat would certainly be doable. If the performance is better, we can certainly switch to using that for our benchmarks. The idea for the benchmarks is to compare to a "gold standard" — hence the fact that the best results are taken across all optimization levels. We could even take the best results across multiple C compilers to give ourselves the absolute hardest comparison :-)
- andrewcooke 15y agoa bit late to the party here, but i see no-one has mentioned gpus. since julia supports calling c libraries i guess this will work, but i wondered if anyone knew of any work on closer integration? (also, julia is not a great name for googling....)
- blacksqr 15y agoPardon the possible naïveté, but I'm so old I remember Ada. Seems that language was designed to address a very similar problem space. What does Julia offer that Ada doesn't? Or perhaps: why is ada so deficient that spending 2+ years inventing a new language was a better proposition than taking the time to improve Ada?
- SomeCallMeTim 15y agoWhile there's a resurgence of interest in ADA recently, the general sense is that it's WAY overdesigned and heavy. I came across this bit of humor a while back that communicates the general feeling well: http://bit.csc.lsu.edu/~gb/csc4101/Reading/gigo-1997-04.html http://bit.csc.lsu.edu/~gb/csc4101/Reading/gigo-1997-04.html If the problem IS that it's huge and inelegant, then the solution isn't to try to improve it, but to start from a clean slate. Julia looks like a reasonable attempt.
- blacksqr 15y agoFunny, I remember reading similar conspiracy claims about C.
- k-a-r 15y agoawesome language but the manual need some works in user-friendliness
- cad 15y agoDo you also want ice cream on top?
- jtchang 15y agoHow does one open up a socket in Julia?
- prtamil 15y agoFor analogy there are few original liquor (vodka,rum,Whiskey,Brandy,Wine etc..) but god damn so many cocktails, so many cocktails. Same in Programming Language design. Few original concepts, Lisp,C,Smalltalk, but so many cocktails even my grandma is creating one. All we want is more libraries.
- MrMan 15y agoI have made the same rants about numeric computing language issues as the Julia creators. I would avidly adopt Julia based on the documentation on the website. It seems to me that this is a beautifully conceived language given the concerns it attempts to address. Amazing even if the performance never improves. The R thread on the dev list gives an accurate representation of the obstacles to Julia being widely adopted, however. One might become very unhappy while using R, but sometimes you have to use it, because something you want is only in R, due to the ubiquity of that tool for stats. If Python, which does not have that many disadvantages besides not having been explicitly designed to appeal to users like me, cannot unseat Matlab and R, Julia will have a difficult time. But I will give it a try, and will implement some simple but core algorithms that I use a lot. Another idea to test Julia's usefulness would be to port a tool like Waffles to Julia. In my opinion implementing such a sensible tool like Waffles in C++ is a heartbreak.