Earlier quoted context omitted.
I and probably many others intend to develop reproducible figures. The way to do that in python / matlab is to have a script which loads data from disk and then produces a figure (a png / pdf). You then execute that file many times each time tweaking one aspect of the figure. Julia makes that workflow almost impossibly slow.
Why not just write a function? You can do this without restarting tour julia session every time...
Julia 1.6: what has changed since Julia 1.0?
201–210 of 212 posts
Re: Julia 1.6: what has changed since Julia 1.0?
#202Earlier quoted context omitted.
Yeah, I got fed up with Julia's plotting library and wrote a C++ Qt plot function that forks and plots arrays of doubles. It runs instantly even with millions of points.
Now what if your points aren't IEEE double-precision floating point numbers? What if they are Unix time represented as 64-bit integers, and you'd like to format the tick labels according to your locale? That kind of composability is what keeps me interested in Julia, so I hope that the community keeps improving the overall UX of the language.
In the meantime, Julia GR plots are missing basic features and insist on putting bold black outlines around everything by default, obscuring the data.
Re: Julia 1.6: what has changed since Julia 1.0?
#203Earlier quoted context omitted.
If that's what you're used to it's fine probably, you'll often have no choice but to adjust your workflow to it and make it work. But if you've ever experienced an environment that instantly shows you results and lets you get into a fast iterative loop to explore your data, it can be hard to give that up again. Source: my current and previous job were basically data viz programming jobs which were all about optimizin…
Totally fair, though note that these slow times are only for _first_ plot - I leave my repl open all day, and all but the first plot are sub-second
Re: Julia 1.6: what has changed since Julia 1.0?
#204Earlier quoted context omitted.
Because if I run it from the command-line, it takes 40 seconds before it has precompiled and prepared my project for use. The only way to avoid that wait on every change is to use the REPL, where I only need to wait on the first run. Outside the REPL, every run is the first run.
You don't precompile just because it's run from the commandline though. There must be something missing from your workflow description, or you're somehow misunderstanding what is going on. Since this is a v1.6 blog post: did you try a v1.6 RC?
The point is that running a .jl script that calls my algorithm on a small test case takes 40 seconds to run. If I change the script to run the algorithm more than once on that dataset, all calls after the first complete in less than one second.
Running it with v1.6-rc1, it appears to have improved the running time from 40 seconds to 30. That's pretty good, but still way too slow to enable any kind of workflow that doesn't involve the REPL.
(The 30 and 40 second numbers are very consistent from run to run.)
Re: Julia 1.6: what has changed since Julia 1.0?
#205Earlier quoted context omitted.
What do you even mean? It doesn't even catch that an argument's type doesn't match on a function call with types specified. It also can't catch trivial stuff like misspelling a struct field on a variable of known type. If you want to be called a "super strong" type checker, you really have to catch that kind of simple issue at compile-time, _not_ when I run the code.
Ahhhh - you want a statically typed language. That's definitely not Julia, you're probably best off with Java there.
> Have I misunderstood what is meant by strong type checker?
Re: Julia 1.6: what has changed since Julia 1.0?
#206I come back every so often to check out Julia again. I have hopes for it. Some questions still in mind since I reviewed previously (1) How is its database connectivity? (2) Is there something like python's `requests` lib? (3) Are the features mature enough that I don't anticipate major rewrites for code each year?
> (2) Is there something like python's `requests` lib? For HTTP (etc) requests? There is HTTP.jl which I have never had problems with; tons of packages use it. I have used it to wrap a ton of different REST APIs etc. And in 1.6, as mentioned, there is the new Downloads standard library, based on libcurl. Despide the name, I believe it can be used more generally than simply downloading things. Can also be used as a no…
Re: Julia 1.6: what has changed since Julia 1.0?
#207Earlier quoted context omitted.
> Most people are allured by Julia's overhyped marketing ... Wikipedia says "Marketing refers to activities a company undertakes to promote the buying or selling of a product, service, or good." Julia is not a company; I think what you're calling "marketing" would better be labeled "user enthusiasm" :-)
The founders of Julia do have financial interest though! I think they're part of Julia Foundation. Same people wrote the marketing material I presume.
If anything, I feel that the Julia website and manual focus more on technical computing than they ought to and could stand to spend more time on general computing matters for which the language is also well suited. I’ve been meaning to write a blog post entitled “Julia is a General Purpose Language” for a long time. Which I suspect you would take issue with, but that’s ok.
Re: Julia 1.6: what has changed since Julia 1.0?
#208Earlier quoted context omitted.
> even just redefining a struct field requires restarting the interpreter It really doesn't if you use a module.
I mean, I still need to recompile the module no? Or do you split your project into several small modules to avoid this? (I've avoided this so far as I found the module system a bit tedious tbh, as it requires to explicitly list everything you need to export, as well as manually import stuff from the parent module).
It's not perfect but it's something.
Re: Julia 1.6: what has changed since Julia 1.0?
#209Earlier quoted context omitted.
Why not just write a function? You can do this without restarting tour julia session every time...
Well to be more precise the script contains functions of course , each of which produces one of the figures and takes the path to the data / data as input. In any case the REPL has no place in such a workflow because I want to be able to check in the script at the end and have a reliable way of reproducing any of the figures I put into the paper later.
Re: Julia 1.6: what has changed since Julia 1.0?
#210Earlier quoted context omitted.
I mean, I still need to recompile the module no? Or do you split your project into several small modules to avoid this? (I've avoided this so far as I found the module system a bit tedious tbh, as it requires to explicitly list everything you need to export, as well as manually import stuff from the parent module).
Usually as long as I develop I have structs that I change inside a small module, then I can recompile just the module and access the new struct, e.g. for neural networks. It's not perfect but it's something.