Will julia ever be popular for general computing and Web stuff? It's s till fast for non scientific use cases, has multi threading (in master) and is getting go like channels.
FWIW, I work on Web-related stuff in Julia (like http://shashi.github.io/Escher.jl). I find Julia's type system more natural for general purpose modeling of data than, say, Python's classes. It's also really easy to enforce things like immutability or make stuff blazing fast if one needs to with little effort. Julia's multiple-dispatch is a great companion. On many occasions I've wondered if my code is even complete because it winds up being so small. Another thing to like is the hackability of any code. The standard-library is in Julia, you can look at any function's code from the REPL, and many more developer friendly features.
Jonathan Malmaud, Iain Dunning, Randy Zwitch, Mike Innes (OP) and many others write and maintain general purpose/web-related library code. I'm sure they will agree with some of what I said.
Definitely agree. Obviously a lot of people come to Julia for the performance, but even without that it's just a really nice language to work with. For me the speed is a nice bonus that gives Julia a surprisingly broad range of use – from one-shot scripts to fully-fledged C++ replacement (though obviously for quite a different class of applications than, say, the ones that Rust targets).
It's interesting that people see multiple dispatch as some esoteric computer science-y thing. In reality, it's just a way of organising code and complexity, just like object orientation is – and it has some compelling advantages over OO as well. For me, it's one of the killer features that I really miss in other languages, and it's well worth taking the time to understand it.
It would be great to see people doing more web stuff in Julia, but for the foreseeable future there will be some important caveats. The web libraries (including in Base) just aren't that fleshed out or battle-tested right now, and there's no Google-scale engineering effort making sure that the runtime is reliable over thousands of CPU hours. Whoever dives into that first will have to have a clear sense of the long-term value.
Escher looks really interesting, and a really good match to a hypothetical project I'm planning. So does Julia --- I've done a little scientific computing, mostly in C++, but I'm mostly interested in general-purpose programming, and a quick glance over Julia's feature set makes it look really promising. (Although I'd still like a static type checker.)
If all the logic happens server-side in Escher, what's the responsiveness like? Do you have a live example anywhere?
Are there any plans to transpile Julia into Javascript?
Responsiveness is excellent when your Julia process is on the same machine as the browser - which in itself addresses a large set of use cases scientific computing audience has (such as presentations). When the Julia process is connected over the network, there is obviously a lag between updates. But it's no better or worse than an AJAX/WebSocket application. The intention is to use web components to encapsulate UI components and their behavior (including self-contained animations) and Julia to read from them and update their attributes. So one can switch to writing web components and using them in Escher if responsiveness is really a concern. With the programming model in Escher, it will be easy to hoist some computations to the browser once there is Julia to JavaScript compilation. However, I don't plan to write the transpiler (yet) ;).
So Web Components become the C of the MVC triad, with invisible RPC over the network to Escher for the MV running in Julia? I really like that idea, particularly if the RPC protocol falls back gracefully from WebSocket to long-polling to polling.
Do you know of anything using Escher for public web-facing applications yet?
Not the parent, but I agree with Julia types being more natural for many purposes.
It's far easier to create new Julia types for modeling a new domain than Python classes. Genrally, types are much more succinct to declare than classes. They're also type checked and parameterized which allow you to do some rather nice things with an API design that would require a lot of if/else behavior checking in Python classes.
The separation of implementation and data declarations via multiple dispatch makes a large assortment of problems much easier to solve. For example, it's much easier to extend the built in behavior of default Julia types such as dictionaries by adding your own custom method (often on line of code) which is incredibly useful for short data processing script.
There isn't as much web focus in Julia currently, but once the implementation makes it easier to possibly "pre compile" an executable I think there could be a big boom in usage for web engines.
I'm on a mobile device currently and can't really write out more explicit details. Maybe later I can write out a lab example.
I think it will be interesting to see what happens with WebAsm. If Julia targets this at some point (it is based on LLVM, so there is a chance of this), then I think it will start to look quite attractive for various use cases that it isn't currently cornering.
Makes sense. But regardless, the core language is better than go in almost every way (as far as I know)... and it has python like syntax. I wonder if thats enough.
I personally think Julia is technologically superior to a number of popular languages, with a voracious appetite for even more smarts. But you are right that this isn't necessarily enough.
Based on what I've seen so far, I think Julia could eventually break into the Tiobe top 20 languages (it's currently in the top 100). On the other hand, I think this is plenty. As a language currently aimed at (admittedly fairly large) niches that would be an outstanding outcome.
It also makes it fun to work with as a language. It's not just more chicken.
This is something that should be possible eventually. All the Fortran dependencies make it difficult, but as you probably already know, Base will see some trimming and some of these dependencies will become packages (perhaps default, but at least not Base).
I was talking to the WebAsm folks at LLVM Dev a couple of weeks ago and the conclusion was that WebAsm does not yet seem ready to be targeted by us (in particular we would like run-time code loading support for the JIT), but may be there in a year or two.
Yeah I watched one of the recent vids where they presented the latest on WebAsm and I came to the same conclusion. I imagine it is worth looking into and interacting with those guys so that Julia isn't overlooked by them for the time being, and maybe reassess in another year. It was pleasing to see one of the first questions from the audience after that talk was about Julia.
I think that could be a pretty huge deal too. Right now Javascript is being pushed to have enough speed to run applications from 15 years ago in the browser.
If an environment is able to have native speed, run in the browser and still be accessible to the people doing scripting now, it could have pretty large implications.
Go also fits the bill I suppose, but Julia is a much better designed language.
For general computing the question is how to deploy a Julia-based app. For server-side stuff, I suppose it's no worse than Python, but not as easy as Go where you create a standalone executable. For client side, I think it will be quite hard to target browsers or phones since Julia has an unusual kind of just-in-time compilation.
This could be overcome but it's not really Julia's niche which is interactive use of notebooks by scientists or other people who are comfortable writing code.
Jonathan Malmaud, Iain Dunning, Randy Zwitch, Mike Innes (OP) and many others write and maintain general purpose/web-related library code. I'm sure they will agree with some of what I said.