I’m going to be delivering an online intro to programming session to a non-technical crowd who will be “following along at home”. Because it’s online, I can’t provide them with machines that are already set up with an appropriate development environment.
I’m familiar with Linuxes and BSDs but honestly have no idea how to get set up with programming stuff on Windows or macOS which presumably most of these people will use, so I need something I can easily instruct them on how to install, and has good cross-platform support so that a basic programming lesson will work on whatever OS the attendees are running. Remember they are non-technical so may need more guidance on installation, so it should be something that is easy to explain.
My ideas:
-
C: surely every OS comes with a C compiler pre-installed? I know C code is more platform-specific, but for basic “intro to programming” programs it should be pretty much the same. I think it’s a better language for teaching as you can teach them more about how the computer actually works, and can introduce them to concepts about memory and types that can be obscured by more high-level languages.
-
Python: popular for teaching programming, for the reasons above I’d prefer not to use Python because using e.g. C allows me to teach them more about how the computer works. You could code in Python and never mention types for instance. Rmemeber this is only an intro session so we’re not doing a full course. But Python is probably easy to install on a lot of OSes? And of course easy to program in too.
-
Java: good cross-platform support, allows for teaching about types. Maybe a good compromise between the benefits outlined above for C and Python?
Any opinions?


Mac is very similar to Linux in that it comes with bash (these days zsh) and a lot of the command line tools you’d expect on Linux, including gcc and python3 installed by default. You’ll want them to have a decent text editor with code coloring. Sublime is what I was taught to use in university.
Windows is more difficult. The command line is very different (it inherits from DOS instead of Unix like both Mac and Linux). It doesn’t come with Python pre-installed. I’ve generally installed git-bash when working on Windows. There are some Python libraries that work fine on both Mac and Linux but have issues on Windows.
You could look into VSCode which is a decent IDE that works on all platforms. Of course, an IDE can be a bit of an information overload for a beginner, especially something like VSCode that’s constantly pushing AI features and plug-ins.
No it doesn’t.
The
gcccommand is a wrapper forclang, and theclangcommand is a stub that runs an executable used to install the “Xcode Command-Line Tools”It also uses the BSD coreutils, rather than the GNU coreutils present on most Linux distros. The two are only compatible up to functionality defined by the POSIX standard, and anything beyond that is an inconsistent mess.
If you limit yourself to not using WSL, sure. WSL 2 runs an actual Linux kernel with the same Linux executables you would find on any other distro.
It’s still Windows and full of telemetry and AI garbage nobody wants, but it somehow manages to have better Linux compatibility than macOS.
I suppose my setup already has “Xcode command line tools” installed, so gcc works as expected. It’s been a while but IIRC the process for installing the command line tools is pretty self explanatory.
I remember WSL being a whole process to setup, but it’s been a while, and as you might guess, I’m a lot more familiar with Mac than Windows.
What I do know is I had to support a Python project on all 3 OSes and Windows was by far the hardest to get working. We were deliberately not using WSL for that scenario.