Emacs Speaks Statistics
ess.r-project.org
ess.r-project.org
RStudio IDE with vim keybindings gives an extremely nice developer experience when working with R. There are only a few minor imperfections [1, 2, 3]. I'd still rate it a 9.5/10 dev experience.
I've recently been experimenting with R + neovim + vim-slime. It's not perfect but also a very nice experience. It enables interactive use of R but with the full power of neovim.
[1] control + 1 and control + 2 to switch between editor and console (pressing them in a hurry requires finger gymnastics)
[2] while vim keybindings work in the script pane, they don't work in the console
[3] about once per day for reasons I can't explain, RStudio's vim keybindings don't do what they should do (e.g. a key press is ignored)
Basically you need to learn a few basic movements, which are also really useful on any terminal thanks to GNU Readline, and a some basic concepts like the minibuffer, interactive commands, etc. From there onward, things are quite easy to discover little by little, especially with newer packages like vertico, marginalia or which-key.
Obviously, its much harder than VSCode, but investing on Emacs is IMHO worth the effort if one values stability. It will be probably still relevant when most competing solutions are gone. Plus, it offers great support for lots of niche languages and workflows, like Org.
This is one of the biggest reasons why I’m slowly switching to Emacs for most of my editing needs. Those movement keyboard shortcuts are ubiquitous on UNIX family operating systems. They even work in most native text editing fields in macOS and iOS.
GNOME used to have an Emacs GTK key theme, but it is no longer available as of GTK 4.0?
Some of them work, e.g. C-a/C-e, which is nice. However, after hearing about that "Readline keybindings work everywhere in MacOS", I was quite disappointed when I finally bought a Mac and the more useful Emacs/Readline bindings like M-f/M-b/M-d were all missing. I'm still happy with my Mac overall, but I wish they went further in this regard.
On the other hand for newer programmers you want to focus less on the tools, installation and workflow and more on just getting them programming. In that situation the batteries included environments like RStudio would be preferred.
Another practical thing to think about is how much you and your TAs want to wrestle with installation issues vs just giving them a web based notebook environment like Colab.
I ran my own RStudio Server on Digital Ocean for years. That worked very well, with students not needing to install packages, but maintaining things myself created more work for me.
Before that I had to deal with an unending string of support for the students using their own computers. I would never go back to that again.
I used Cocalc once during the pandemic. It has a great set of features, but the students found the interface confusing.
painful but thats how you teach people to fish instead of being consumers.
If you're teaching a cooking class, you're wasting valuable time teaching people how to fish. But that wasn't really my point. A lot of the wasted time was mine.
At first I thought it was a bad choice, and I did all my assignments with Emacs/ESS. I preferred it, as I do almost all my coding in emacs and of course it's easy to define custom shortcuts to insert the un-ergonomic R operators like the magrittr pipe. But I came to realize that the way Rstudio is self-contained, and oriented around "sessions", or notebook-style code, makes it easier for neophytes to pick up.
I can't imagine how difficult it would be to teach a bunch of non programmers how to deal with python given the insane situation with venvs, pip vs homebrew, and 2 vs 3, imports, etc. 80% of my cohort are the type of people who think using the terminal constitutes "hacking" in the CrashOverride sense.
Is this really still relevant? I've been using only python3 for well over a decade now and I can't remember the last time anyone even suggested I use python2. the rest of your critiques ring true though.
I say this as someone who writes a fair amount of python and whose package manager decided to install 3.10, 3.11, and 3.12 as dependencies.
Anyway, try explaining that to a bunch of business school people who are accustomed to just doing everything in the latest version of Excel, whatever that happens to be.
Looking forward to searching for tutorials explaining the difference between Python .NET Core, Python ASP.NET Core, Python .NET for Business, and Excel .NET Core
Never mind them! I have been programming for decades and have been defeated twice by Python and its disrespect for semantic versioning
Those version 3s often introduce breaking changes.
I continue to be amazed and astounded that it is so popular. A poster child for "do not choose software based principally on popularity". Being unpopular is a handicap, but being popular - just look at Python. The Python ecosystem is a *nightmare*
This is of course introduces another problem of ‘two cultures’: Python people using Jupyter and the R community largely preferring Markdown.