Idea Julia Lite or 'Juliette'?

I’m on mate and have atom working fine.

Whenever I try to run atom it hangs on the welcome screen. I have 3 servers, and the behaviour is the same on all three. I downloaded the most recent release from the Atom site and it installed without issue. There is a reference to this bug as having occurred in the past and (supposedly) having been resolved ages ago(?).

Broadcasting was certainly a major selling point for me - I remember reading about it on the very first day I encountered Julia. It brought a smile to my face and was why I was keen to find out more.

In the past I’d used a proprietary C++ library that did something similar to broadcasting (we called it “multicall”). But R, which I’d been using more recently, seemed to me to both “not do the things it ought to have done” (example: allow multiplication of 1-by-n array with m-by-n array) and “do the things it ought not to have done” (example: allow multiplication n-element array by m-element array with “recycling”, albeit with a warning).

2 Likes

For me, taking matrix exponentials and even matrix squares, etc., is something I (and most people) never need, so I like it when broadcasting is assumed, and one needs to be explicit only when doing matrix operations. MATLAB isn’t right in everything, but think it gets that right. I don’t know what the big deal is. Yeah broadcasting is great… so why not just assume it is the norm?
[I am sure I am letting myself in for a barrage from purists on here!!]

Matlab doesn’t assume broadcasting. Matrix multiplication and squares are not broadcast. Matlab does it inconsistently.

Broadcasting is maybe the best thing about Julia. Matlab’s way was how Julia did it before, and the new way is vastly better.

6 Likes

I think you presume to speak for too many people. You seem generally to assume that your viewpoint is the view of the ‘common person’, and I think that is quite arrogant.

8 Likes

IMO, Matlab’s “implicit expansion” (broadcasting) was a step in the wrong direction (http://hogwarts.ucsd.edu/~pkrysl/no-Matlab-support.html). It broke compatibility and it is yet another example of inconsistency of the language.

5 Likes

I can cope with adding a dot. I’m perhaps suggesting a ‘beginner’s mode’ or wrapper that was a bit more accessible like MATLAB and NUMPY would draw people in a bit more. I note that the take-up of Julia has flattened out. There are so many packages out there… I have probably tried out several thousand in my lifetime, nearly all of which are gone, because people found others more useful.
I think the quickest way for a platform to improve is if lots of people adopt it and make suggestions and contributions. But to do that, they need to get hooked first, and they aren’t going to get hooked unless there is a low barrier to entry. Learning lots of quirks and niceties of every package that comes along is not feasible, so people will start off with the easiest route, which is why python has grown so quickly… it only gets complicated as you get into it, not immediately.

That’s not true. Matrix exponentials are super common, and probably more common than broadcasting it? It’s the linear ODE solution so it shows up everywhere.

Unless… if this is all just perspective and maybe what shows up everywhere to one person is uncommon to another, in which case having clearly defined rules instead of ad-hoc guesses is just a better system.

12 Likes

I meant in ‘beginner’ version or wrapper, where they won’t be jumping into ODE’s right away.

Define beginner. Almost every math, science, or engineering student has to do ODEs in their first year of undergrad. It’s also the first programming course for a lot of students. That’s pretty beginner.

10 Likes

No, it’s simply because Python reached critical mass. It’s as simple as that. It’s certainly not easier than Julia for numerical programming. Coming from Matlab, Julia is a much more natural transition.

4 Likes

Basic Numpy is very practical, with very little in the way of abstract concepts required to get started. Julia requires lots of abstract concepts and conventions right off the bat, which ultimately lead to great potential, but (for most potential consumers of numerical computing) is likely to be initially off-putting enough to overwhelm (IMO, having observed students).

I don’t think this is true, but in any case you misunderstand the intentions behind the design a of language like Julia.

The goal is not to “hook” people and surprise them with difficulties later, or draw in masses of users. It is to design an excellent language. Users who want such a language will gravitate to Julia. Others may not. This is fine.

16 Likes

I am one who is moving over (or trying to) from numpy. From my point of view, broadcasting is definitely a blessing, immutability (familair from Python) not a problem, and Julian types not that easy to learn, but, well, a fundamental feature of the language. Thus I can’t envision a “Juliette” you are speaking of.

On the other hand I must say Julia is difficult to learn to me, and the progress is slow. I can’t say what hinders me at most - there are many things. That the language has it’s difficult parts is one thing, but that’s unavoidable. Then: IDE, linter (or lack thereof), documentation, error messaging, plotting, limited guiding with the abundance of packages, you name it… None of these is especially bad, but taken together it is a frustrating experience.

The language creators and the community here, I am afraid, don’t get the real feeling of the severity of the problem because they are past of it (and much too smart anyway).

However if the potential Julia users: university teachers and students, engineers, economists etc. would continue to away from Julia and stick to their tools like Matlab, R or even Excel, then Julia is doomed to stay a niche language, with the ethernal problem of lack of money for improvements. Therefore IMO the user frendlieness of the language FOR BEGINNERS should be high (or highest) priority.

What could probably be done (and no, I don’t have any money):

  • Define a subset of the language - “Easy Julia”, like “Easy English”, and document it
  • Create a package JuliaBeginner (a subset of JuliaPro, which I haven’t tested by the way), with only essential things - but these with complete documentation and examples.
  • Get some guidance from a user experience (or whatever the name for it) expert. Try to find out what are the problems of the beginners and what could be the solutions.

With a user-frendlier Julia, the user base could easily grow by an order of magnitude: the potential is here. Then it should be easier to get funding for further development.

2 Likes

I disagree. You are just already used to classes.

Classes are far more complicated and confusing than types. Singular dispatch is weird and messy-looking compared to ordinary function call syntax. You are conflating familiarity with simplicity.

8 Likes

Yes. Thank you [Eben]

Yes, indeed. What I like about Julia’s potential (but not necessity) for abstraction, is that it even lets me work quite naturally with operator exponentials defining semigroups.

So, I can use the language on the concrete level of a matrix exponential, but even on a more abstract functional analytic level, and the two don’t necessarily bite. This is quite powerful.

3 Likes

I’ve really been liking VegaLite.jl recently, and would suggest you give it a try if you’re not happy with your current solutions. Given that you’re coming from Python, you may also want to look at PyPlot.jl.

2 Likes

Just to add to the conversation, Julia has only about 1.5 years of being stable. Maybe we don’t take this for a fact, but we are still early adopters of the language. (I’m gonna exclude the 0.6 past,as here was not real stability). There is a long way coming forward, a lot of problems to solve, and people come here expecting the same tools as python (version 2.0 in 2000), R (2011) and Matlab (1.0 in 1984). They should be doing that? Of course!, they are in their right to do so,but one thing to consider, this is an open source language, if you want empresarial class support (someone working on a feature that you consider a maximum priority) maybe paying an amount to a software company especialized in Julia can be a win-win situation (Julia computing for now, maybe in the future others will come)
I’d been here for at least a year, and the one thing I noticed is that the announcements are increasing, more people develop more things and those things compose together, in a way not seen in other languages yet. In Julia, there isn’t any centralized package that does everything (and what I saw is when a package gets too large, it gets splitted and the splitted functionality gets used by others), but a collection of functionalities that compose very well. A julia begginer mode? You can create a REPL with your own parsing rules with REPLMaker.jl. An array that works like Matlab? Custom arrays in Julia works as well as native arrays (if not faster, like StaticArrays). You want to do those things and don’t know how to do it? Ask here, post a minimum working example and people from a lot of fields will come an give you advice from their area of expertise, even a world class implementation of what you are trying to do, (try doing this on Stack Overflow and you will almost surely get your question closed).

Why the book? , to signal that there are already people working on approaching Julia to beginners, and more work will come. For that, we need your help (to the new people and the old ones) . Maybe you don’t know how to do an IDE (for example) from scratch, but maybe one new user can come here, asking how to add a item to a Dict, and that new user is in fact a renowned expert in GUI development. If that user gets helped and it’s questions answered, maybe that user will have an itch to develop a GUI in Julia, publishing a package (did I mention that publishing a package is really easy to do) and kpow :facepunch:, we have a new composable functionality of a new area of expertise.

In summary, to the new ones, ask a lot of questions, be clear and your doubts will be answered. If something is missing, ask what workaround can you use (even calling python is in the realm of possible). Maybe you think that you already know enough of something that you think that you are sure that your problem can’t be done In other way, but ask here anyway, in this forum are people of almost every discipline imaginable, with decades of experience on their backs, and they almost surely could have something to say.

For the old ones, it seems like a lot of people come here asking the same, but they are not the same people, they probably don’t know about the long discussions that happened before they join the community, point them to a good related thread if you don’t feel like answering the same question over and over again. Keep kind to others, a very rare characteristic for a programming language forum, but found here in abundance. Keep helping.

9 Likes