Just because I am curious: What IDEs are you using to code with Julia? Since debugging (setting breakpoints, observing variables etc.) is mandatory for code development, I am woundering how you do this.
I started with vscode, but actually comparing this to Matlab, the usability is quite bad (well, just not that complete). And I am saying this while I do not like Matlab that much.
Debugging is important, but Matlab-style interactive debuggers aren’t “mandatory” in any sense.
The problem with interactive debuggers (as opposed to disciplined unit testing) is that they are usually invoked incidentally (whenever there is an error, or the caller considers the result fishy), and the process cannot be automated so whatever you debugged today doesn’t automatically become part of your tests tomorrow.
You are probably right. But I am just “trained” too use these tools from my university. So switching from Matlab to Julia is not that easy I was hoping for.
Giving up on the debugger was hard for me as well, coming from Matlab. Now I barely use it, either in Matlab or Julia. Sometimes it’s good not to use it, makes you reason more about the code. I got the bad habit of debugging in Matlab just to see how a variable looked like. This always lead me to workaround the code just to get the data to match my expectation. Result: time wasted, code was not understood properly, the structure of whatever library I wrote was a mess.
It might sound strange, but forcing yourself not to use a debugger will help you structure your code better (just think of the miles of code in a Matlab script vs small, easy to understand functions in Julia). You(and others) will thank yourself later when looking over a library.
So while I have Visual Studio Code installed and that would be the literal answer to your question, I haven’t run Julia in it for weeks.
Instead I have been using Pluto.jl pretty much exclusively. It’s a reactive notebook environment (and almost an anti-IDE by way of intentionally simple interface) that’s quite clever and makes for fast interactive work. I never used a debugger much in the IDE anyway, but with Pluto it’s trivial to build a block of code or function line-by-line and look at the intermediate results along the way.
I recommend taking it for a spin.
Vim + terminal when it’s mostly about writing the code or debugging (with Debugger.jl) but if I need to do refactoring I usually swap to vscode because the search and replace + Language Server is better there.
Vim + Julia REPL too. When I am doing exploratory data analysis I use Jupyter instead, with lots of packages for pretty printing tables and such.
I use VSCode; used vim for a long time, until I found vscode-modaledit and created my own kakoune-like clone.
I have personally found Matlab’s IDE to be very incomplete for my needs and I often feel very hobbled when I have to interact with it (mostly because it cannot do what vim or vscode-modaledit can).
I think that just shows that the tools a person is used to leads them to look for specific features consistent with a workflow they learned while using that tool. Often the workflows for other IDEs/languages look pretty different, and so what is easy/hard in that context looks quite different.
In the current master version, Pluto supports Revise. This way, you could work on a package in VSCode while interactively testing it in Pluto.
I tried VS Code but it didn’t have all of the features that I need to work as productively as Atom, and I can’t take the efficiency hit right now. But I opened a ton of issues and the devs know what’s missing, so I think VS Code will be worth trying again in 6 months or so. That said, if you use Juno on Atom, make sure you have a lot of memory and a GPU since Atom is a hog, but it’ll run well on good hardware and right now it’s the most feature-complete and productive Julia IDE bar none.
Juno is my favorite Julia IDE by far.
I prefer it over Matlab, but it took a few weeks to learn how to get the most out of it.
VS Code seems promising, I really hope it gets better soon.
No IDE. Just sublime text 3 and a terminal (on linux)
Actually, Terminus is a perfect terminal within ST3. No need for an external terminal.
I like separate windows! I find panes very annoying (even though I don’t use i3). I often have a separate terminal open for a different language as well.
Got it. I open Terminus shells in several tabs at the same time. I like the mini view of the terminals.
And it is easy (easier) to switch from editor to terminal. (By voice, in my case.)
Very long time MATLAB and R user. Also long time Sublime Text user.
When I started to learn Julia earlier this year I decided to be less reliant on the IDE. So I went with Sublime Text and Terminal/Terminus.
I couldn’t be happier. I have a few builds I set up and really enjoy using the debugger via terminal.
I also saw the benefit of smaller well defined functions that I now have regression tests set up.
When I need to be interactive, Pluto.jl is the best.
I also make heavy use of PrettyTables to display output in the Terminal.
I began by using Atom Juno before switching to VS Code.
IIRC, I just wanted to try something new because I was getting a bit slowed by the startup times in Atom (maybe this was just an issue on my end). Plus, I use R a fair bit in my data cleaning/regression endeavors, and go to Julia for more hard-core optimization stuff. I was able to set up very nice R and Julia environments in VS Code, and can use whichever language I want with a lot of ease. I have been using VS Code for about a year now, but might go back to something else since I also like trying out new stuff.
I haven’t tried something similar on Atom. However, I think with a little bit of work and trial and error, one can set up Julia + another datascience oriented language like R, Python in an editor of one’s choice.
I wouldn’t worry about not having a debugging tool. Julia is such a nice language that it made me give up the habit of constantly running a debugger, or watching the “workspace” (I think that’s what they call it in RStudio). Quick testing on the REPL is fun, and the error messages are so clear that you’ll actually learn a lot more by reading them and looking up docs/discourse, than you would otherwise by using a canned debugger Enjoy coding in Julia!
@haberdashPI, do you have a link to your kakoune clone? I really like Dance, a kakoune clone in VSCode, but I’d like to look at yours, too.
I am a new comer to Julia. I use Pluto.jl jupyter notebooks, I understand that Pluto is a bit premature package, but the user interface is quite interesting. Having said that, it is really horrible on the debugging side, and have many other limitations. So after reading the replies here, I might give Juno or VS code a try.
I’m not sure it is yet in a super useful state for others. I am still changing it around often, and adding new behavior, so I haven’t taken the time to document it thoroughly. I can make an off-topic announcement or just DM you when it is more accessable.
Or if you want to give it a look in it’s currently obtuse form, here is a link to my current configuration of vscode-modaledit. You can import it after installing vscode-modaledit using the command
ModalEdit: Import present keybindings.