Returning programmer asking for advice


#1

Hi, I was a Julian at the v0.3–v0.4 epoch (with the username Sisyphuss if some old Julians still remember me :slight_smile: ). Yesterday, I felt a strong desire to read something about Julia and thus decided to check the v0.7 online doc. I found that the doc is much better written and more helpful, and some conventions (e.g., variable name, dot operator) are also established. It seems that Julia has been making great progress since, and I feel happy about it.

My question is whether now is a good time to start learning Julia or it would be better to wait for v1.0. My concern is that v0.7 may be incomplete and that v1.0 may break something in v0.7. For instance, this issue (https://github.com/JuliaLang/julia/issues/26739) shows that there’s still something for Julia developers to work on.


#2

There have been a couple of very thorough posts on the subject recently that you might want to check out:

My personal recommendation would be to try out Julia v0.6, since it already has many of the best features that have come in since v0.4 (like fast anonymous functions, dot-call syntax, etc.). Also note that there is no v0.7 release yet, just a master branch that will eventually become v0.7 when it’s sufficiently stable.


#3

I would suggest to start playing with 0.7: that is the FUTURE! It seems sufficiently advanced towards 1.0, and when 0.7 is released the 1.0 version will be attainable without breaking changes. But if you think you need many packages NOW, then unfortunately chances are these don’t work with 0.7 yet. Then perhaps 0.6 (the already obsolete PRESENT)…


#4

I am happy with the current state of 0.6. It’s very stable and pleasant to use.

While 0.7 will be out soon, it will take time for packages to catch up. So what’s the difference between 0.6 and 0.7? I imagine that they’re 95% the same. Yes, you will have to make some code changes to migrate to 0.7 but unless you have a huge code base I don’t see that being a big deal. (I’m probably the least experienced Julian here, please tell me if I’m too optimistic :slight_smile: )


#5

Well, most users use packages, so most users would have a very bad time if they follow this advice right now. v0.6 is the still the released version and if you want to start doing something non-trivial in Julia it’s recommended until v0.7 is released.


#6

On the contrary, most users should follow my advice (which as you should have noticed includes advising to use 0.6 if they need packages).


#7

My advice: read the v0.7 docs, use Compat.jl and write to the v0.7/v1.0 standard (at least, as it is today, since it is still changing) and run things (with Compat) on v0.6.2 for now.


#8

No. Most people want to use packages, IDEs, follow tutorials, etc. and this will mostly fail on v0.7. I think it’s very odd to suggest a version of the language without proper packages and tooling as a look as to what Julia has to offer. If someone want to just see how Julia feels when doing some standard things like performing a TSne or solving a mixed integer programming problem, they will get a bad impression if they use v0.7. This is why it’s not released, and the website explicitly says it’s not recommended for new users. If you disagree with that, put a PR in to the Julialang website and we can argue it there, but I think most users would want something that works instead of some new obscure feature… of course this will change in a few months when v0.7/v1.0 is released, but that’s not now.


#9

Scott’s advice above is a good compromise, I think.


#10

I don’t think so. Why should a new user be worrying about Compat and multiple version compatibility if they just want to perform a data analysis on their own? That adds quite a bit of difficulty without a practical gain.


#11

I mostly thinking about the benefit to the language development: if no one actually uses 0.7, how is it ever going to get debugged?


#12

IMO, new users are not who we should be using as guinea pigs for finding bugs. The package devs will find the bugs during the alpha phase: that’s why there’s an alpha. Not even the alpha has been released yet though, so the core devs haven’t even asked those experienced with the language to start looking for bugs!


#13

Not in my experience. The experts usually don’t find the kinds of bugs that novices do.


#14

I didn’t say he should run or test on v0.7 at this point - but I do remember @Wenjie (as Sisyphuss :slight_smile: ) from 3 years ago, and since he seems interested in being ready for v0.7/v1.0, developing on stable v0.6.2 but learning the new v0.7/v1.0 APIs would seem to be a good way to do that (and I feel, from knowing him from the past, that he’d be up to any issues that might come up).


#15

Right - but that is not what I suggested.


#16

You didn’t, but…

That to me sounds like saying “let’s put the new users on the front line to find the bugs”, which I am heavily against.


#17

BTW, very glad to see you coming back to Julia!
Join us in the Gitter chat room: https://gitter.im/JuliaLang/julia


#18

Yes, I definitely agree with that.

@PetrKryslUCSD does have a good point though, new eyes often find things that experts miss, but there’s enough time for that after v0.7 is at least in beta, and some new people who like to live on the bleeding edge can try things out :grinning:


#19

Thanks @ScottPJones, your solution is a perfect answer to my question.

Me too, very glad to see you guys again!


#20

Yes, I have been on 0.6 for several months now and really like it. To put things in context, I am a newbie and the fact that everything I needed was packaged into Julia Pro helped a lot. There were very few additional packages I had to install and Juno is amazing.

I also use R a lot and a secret desire of mine is to see Julia integrated into R as tightly and seamlessly as Rcpp is at the moment. With the amazing work that is being done within the R community around readable and reproducible code (e.g., markdown, blogdown, bookdown) , an ideal scenario would be to be able to do large scale analysis in Julia, write up the results and run small data wrangling and plotting in R. This is what I am doing at the moment, but using Feather to transfer results back and forth. :slight_smile: