On 1.6 (not yet released) I’m getting 2.6 and 4.5 seconds for Plots and DifferentialEquations. So this is still not perfect, but is much better than 1.5.3. 1.6 should be out soonish (December or January)
Package loading times are being actively worked on as others have mentioned.
If you care about startup time instead of runtime, then indeed you should use Python. If you later decide you want to do something with those packages after you load them, Julia will be waiting for you.
There are a couple reasons for this. The first is that Julia needs to do some compilation when you load packages. This is necessary because any package can add methods to functions that change how other functions perform. The good news is that this is expected to continue to speed up (there are already ideas for how to make 1.7 faster than 1.6 currently is).
Large modules can take several seconds to load because executing all of the statements in a module often involves compiling a large amount of code.
In simplified terms, Julia is a compiled language while Python is an interpreted language (the reality is much more complicated than that). If you really want to understand why, you’re going to have to invest some time in learning about how Julia and Python work under the hood. A thorough answer to your question would be quite long.
With a sysimage I managed to get the startup time to usuable speeds. I know that many people don’t care for startup time, but I can’t use the REPL, because I haven’t found any IDE workflow that is acceptable.
(But if you are at the point of making lots of files, you should probably be creating modules and doing structured programming, and then calling your modules from your notebooks. In fact, with NBInclude you can actually use notebook files as part of your Julia modules if you want, but personally I would tend to use notebooks only for interactive exploration code and keep long-term code in modules.)
Jupyter notebook can’t work with *.jl files, but all libraries are *.jl files
include and import work just fine, as does Revise.jl for interactively running code as you edit modules.
Or do you mean that notebooks can’t be used to edit.jl files? I thought we were talking about REPL replacements here and interactive work? If you want an IDE or an editor, use vsCode or JupyterLab or …
I’m confused about whether you are talking about writing “libraries” (modules/packages) or about writing interactive scripts.
Backtraces will not show the correct file number
Backtraces should work fine in notebooks. For statements in the running notebook, they will give you line numbers like In: line 15, i.e. line 15 of input cell In.