July 12th, 2024

Solving the Worst Problem in Programming Education: Windows

The article discusses challenges in programming education on Windows, emphasizing simplifying language installations. Zed A. Shaw highlights Windows' dominance, advocates for diverse tools, and introduces automated installation solutions for various programming languages.

Read original articleLink Icon
Solving the Worst Problem in Programming Education: Windows

The article discusses the challenges faced in programming education on Windows and the efforts made to simplify the installation of various programming languages on the platform. The author, Zed A. Shaw, highlights the dominance of Windows in the computing world and the need to support users on this operating system. He emphasizes the importance of teaching aspiring programmers to use tools beyond Microsoft's ecosystem to foster independence. The author describes past struggles with manual installation instructions and the need for a more streamlined approach. Mention is made of a solution inspired by Chris Titus' WinUtil, which automates the installation of software packages using PowerShell scripts. The author details the development of an automated meta-install system to set up a developer environment akin to a Unix system on Windows. The goal is to provide a simplified installation process for multiple programming languages, such as Python, Rust, Go, and others, catering to diverse user preferences. The scripts created aim to enhance the ease of setting up programming environments on Windows, promoting accessibility and flexibility for learners and developers.

Related

Is 2024 the year of Windows on the Desktop?

Is 2024 the year of Windows on the Desktop?

In 2024, the author reviews Windows 11, highlighting challenges like limited hardware support, lack of installation control, manual driver search, slow updates, and UI lag. They compare favorably to Linux distributions.

What scripting languages come out of the box on Debian 12?

What scripting languages come out of the box on Debian 12?

The article discusses pre-installed scripting languages in Debian 12: bash, Python 3, awk, sed, and Perl. Emphasizes convenience for offline work, ease of script transfer, and benefits of learning Python.

Chris Titus Tech's Windows Utility – Install Programs, Tweaks, Fixes and Updates

Chris Titus Tech's Windows Utility – Install Programs, Tweaks, Fixes and Updates

A GitHub repository offers Chris Titus Tech's Windows Utility for Windows tasks optimization. Admin mode is required for system-wide changes. Features include program management, tweaks, issue fixing, and update control. Visit the repository for more.

I Probably Hate Writing Code in Your Favorite Language

I Probably Hate Writing Code in Your Favorite Language

The author critiques popular programming languages like Python and Java, favoring Elixir and Haskell for immutability and functional programming benefits. They emphasize personal language preferences for hobby projects, not sparking conflict.

Some sanity for C and C++ development on Windows

Some sanity for C and C++ development on Windows

C and C++ development on Windows historically struggled due to limited native standard library support, causing compatibility issues, especially with non-ASCII characters. Workarounds like libwinsane address these limitations, but challenges persist despite recent improvements in Unicode support.

Link Icon 32 comments
By @aleph_minus_one - 3 months
> Because even though the world of non-programmers uses Windows, the world of programmers decidedly do not use Windows. I think if you were to analyze what people use in the vast world of startups, corporations, open source projects, and other places you'd find it's inverted with 95% of programmers not using Windows.

My personal observation is quite different - this is clearly written by someone who lives in his bubble.

Most obviously: most corporations do use Windows. Also for technology startups outside of the "web application operator" type (here it depends a lot on the local culture), many use Windows: often because this is what the customers use, and the software/service of the startup has to be compatible with the ecosystem of the customer.

By @advael - 3 months
In my experience the entire point of windows is to lock everyone involved, including developers, into an emaciated and dependent toolset that they can't even explain to others when something doesn't go as they expect, and on which unexpected behavior could be because of clandestine updates that enforce the whims of one of the world's most user-hostile corporations

Lock-in isn't just a strategy or a quirk, it is Microsoft's business model in every context. From monopolist strongarm tactics to lobbying for kafkaesque international copyright laws they have drafted, the goal of Microsoft is to put every human being in their little tinpot dictatorship and prevent them from leaving

We should suffer no such tyrant to live, let alone cave to its demands

By @superb_dev - 3 months
> Notepad++ This guy thinks his text editor is a political statement rather than just a damn text editor, which makes him hard to trust even if I agree with most of his views. I can't have some wannabe activist deciding to erase all my students' computers because they happen to live in the wrong state or country.

Has notepad++ erased someone’s computer before? I did some quick googling and didn’t find much.

It seems really weird to bring this up if there hasn’t actually been any problems. Especially given the line that follows:

> Each of these have caused me weeks, months, or years of support problems because of their stupid decisions.

The truth is, programming is an expression and often a very political one (see open source). I’m immediately suspicious of the motives of anyone who says project authors shouldn’t talk about their beliefs

By @taberiand - 3 months
I think the article is a little out of date. These days, learning programming on Windows is best done via VS Code (not Visual Studio) and optimally, though optionally, through devcontainers. Also WSL2 is very useful in running Linux on Windows with very little effort.
By @askonomm - 3 months
What an odd take. Pretty sure most programmers actually do use Windows, you just don't see them all over social media telling everybody that they do (like some Linux users).
By @psyklic - 3 months
I've taught coding to hundreds of beginning students, with about 50/50 Windows/Mac (some Linux). From my experience, Windows is not worse for beginners, nor is the setup process more laborious.

For example with Python, the author can standardize by having all students run the Anaconda Python installer alongside Visual Studio Code. This left us with virtually zero install/setup issues. Alternatively, using wsl2 you could set up any language very similarly to Mac/Linux.

In any regard, setup is typically a one-time cost. Once configured, students typically have no additional problems running code. That said, reducing getting-started friction is always welcome, and the author came up with a nice solution for personal computers. (Running `powershell -executionpolicy bypass` may not work on corporate laptops.)

By @mzajc - 3 months
I was rather shocked when the author implied, on two occasions, that Notepad++ has the potential of wiping your computer. Is there some context I am missing, or is this based entirely on N++'s codenames and release notes?
By @dgan - 3 months
Somehow tangent: can anyone tell me why WhY i can't just copy the text in any Windows' error windows? It looks like it's all text somehow is a texture which is un-selectable? So i have to retype manually (and translate back to English) the error messages to look them up
By @SuperNinKenDo - 3 months
The author's repeated expression of "concern" that the Notepad++ author might erase people's files borders on libellous in my opinion. It suggests that such an event might have happened in the past, and especially in the context of a separate piece of software having done that previously, it's almost like the author _wants_ people to misremember and think it must have been Notepad++. If it were only once I wouldn't have made my opening statement in such strong language, but twice?

Ironically the whole thing just damages my trust in the author. People who see other people's forthrightness about their own beliefs as a negative are people who should not be trusted, they are people who view a kind of dishonesty as being a virtue, and honesty with suspicion, consider what that means for somebody's trustworthiness.

By @olyjohn - 3 months
Why are programing students having a hard time setting up thier environments? Shouldn't they have taken some OS 101 classes? At least know how to install software? I never went to college, but I assumed they would get you proficient in prerequisites first..
By @QuiEgo - 3 months
If the goal is to have students have experience that will help in real world jobs, use standardized tool chains they will see there. WSL2, VS Code, git. Or a Linux VM. Having to code for a Linux environment on a non Linux machine is super common in industry, and a well solved problem at this point.
By @sfblah - 3 months
I use windows, mac and linux basically interchangeably for coding. For windows, I install the Git Bash package [https://gitforwindows.org/] and then just use chocolatey as a package manager for stuff like python and node.js. Bash gives me a completely functional commandline with my C drive mounted as `/c`, and I can write code using VSCode. I don't really have issues. With this setup, it operates indistinguishably from the other two platforms.

For me, the key really is the commandline. Learning powershell is not something I'm going to do.

By @Darthbuddha - 3 months
I really think the worst problem in programming is language. If you don't speak English basically youre doomed.
By @sweeter - 3 months
it is absolutely insane the lengths Windows users have go to complete basic tasks. This is one of the things that drove me away from Windows. I was learning to program and it was so frustrating. The Python PATH issue was one of the first I ran into, the anti-virus nuking my project directories OR causing the Go compiler to choke up and go insanely slow. You have to allow-list dev directories to avoid this kind of issue. On top of that installing packages is a nightmare.

Its perfectly fine if you are a web dev... or you develop ONLY for windows, but I think that is a terrible mindset that stunts your growth. The way that VS hides all the "complexity" behind layers and layers of menu's is god awful. I dont want to learn how to speed click through a GUI, I want to learn whats happening on a lower level.

By @justin66 - 3 months
> The official Python Installer The guy who works on this is employed by Microsoft so big surprise it refuses to add Python to the PATH.

I wonder if Zed knows that Guido van Rossum works at Microsoft now. I wonder if his head will explode when he finds out.

By @tryauuum - 3 months
Could this issue be solved by having many cheap laptops with preinstalled Ubuntu?
By @booleandilemma - 3 months
Of all the people in the world to go after, he's going to go after the Notepad++ guy? Really?

https://notepad-plus-plus.org/author/

By @Uehreka - 3 months
This must be at least several years old, I do remember when things were this bad. Windows really used to be a huge impediment to education and made getting started with programming seem like a daunting esoteric task. But these days you can have students download WSL2+Ubuntu, Windows Terminal and VS Code from the Windows Store and then you’re an apt-get away from whatever programming language you want. The situation has massively improved.
By @kkfx - 3 months
Ehm... So you try to mitigate some Windows problems automated the solution, while we have GNU/Linux who do not have such issues natively...
By @andai - 3 months
Why does it need admin rights? Is it just because it relies on installers that need admin rights? There's no reason the whole thing couldn't be in userdir (or better, portable) right?
By @zogrodea - 3 months
I remember my CS course using web tech (Codio) to teach coding, which doesn't seem like a bad option for educators, as far as dealing with cross-platform differences goes.
By @watwut - 3 months
I use VS Code for Javascript, Eclipse and Idea for Java/Kotlin without issues. Before VS Code I used Intellij for Javascript without issues.
By @amai - 3 months
Most programmers these days don’t use Windows. They use the WSL (Windows Subsystem for Linux), which means they are using a VM with Ubuntu.
By @musicale - 3 months
> Notepad++ This guy thinks his text editor is a political statement rather than just a damn text editor,

Well, there's always emacs and vim.... oh, wait....

By @poulpy123 - 3 months
I'm using unigetui which allows me to easily install packages from winget, scoop and chocolatey
By @anArbitraryOne - 3 months
Isn't this easily solved by VMs?
By @29athrowaway - 3 months
Windows is not the root problem. The root problem is people thinking Windows is acceptable.
By @siproprio - 3 months
By @SuperV1234 - 3 months
You want MSYS2.
By @AriUgwu - 3 months
[VSCode + browser + docker or WSL2 image] = who cares?

This article feels about 4 years out of date which is more a commentary on how fast the industry moves and how sometimes not even Google can burst your bubble.

It’s the students who suffer.