Going to play devil's advocate here. Teachers will push Windows, because they know about it and they can teach it. If you throw a pile of linux machines at teachers, how many are going to have the time, ability, and will to actually learn it well enough to teach it?
It's hard enough to get a school to teach kids anything beyond using Office. I'd be happy to make things as easy as possible on the teacher who are willing to go the extra mile to teach with a Pi, without making them go another 10 miles learning a new OS to do it.
Except the teacher on Windows by design cannot teach a huge chunk of the stack that makes a computer a computer. They talk about hardware, maybe a bit about the ToS breaking NT source floating around this comment section, skip over everything else and land on this theme park island of C# standard library and Windows forms.
It leaves a huge gap in the childs education on computing that is one the major reasons so many people today do not even know Windows is not the only OS out there. And of course if they learn on Windows they are going to stay on Windows a huge majority of the time and it just breeds another generation of .net developers who would have a panic attack if a line didn't end in a semicolon.
>> Except the teacher on Windows by design cannot teach a huge chunk of the stack that makes a computer a computer.
Is this really necessary for most kids? My view might be skewed because I grew up in the 80s, but everything I learned back then were things like Basic, COBOL, Fortran and Pascal. One of my high school classes did some assembly language on the Apple II, but I'm not sure most of the people in my class wanted to get down to the nuts and bolts.
If a kid is really into the nuts and bolts, they'll likely discover Linux organically. I learned most of my computing skills outside of class by doing my own research. And back then, there was no such thing as Google, just magazines at the newsstand and books in bookstores and the library.
I would say the majority of kids would probably be content enough learning how to make a web app, which can be easily done on Windows without needing knowledge of the stack that makes a computer a computer.
I just switched back to Windows from OSX, and the only reason why I have Visual Studio on my machine is so that I can compile some of my node libraries. I hardly think using Windows will breed a generation of .net developers at all.
> but everything I learned back then were things like Basic, COBOL, Fortran and Pascal.
Think about what you had back then, though. At best, you had Mac OS (which was as abstracted away from actual computer internals as Windows is today). All the other options - whether it was Commodores or Ataris or DOS-based IBM-compatibles - involved working very close to the hardware. You were manually dealing with interrupts and memory access and other very-low-level components.
Basically, the reason why you didn't have to delve very far into the underlying system was because there wasn't an underlying system in the first place for you to delve into. COBOL and Pascal were pretty high-level, but BASIC and Fortran are along the same lines as C (especially back then): very low-level, very directly-wired-to-hardware, very thin abstractions over raw assembly. You were already delving into way more than students today would ever be able to delve into on a Windows-NT-based operating system (where you don't even have DOS internals to muck around with, unlike on Windows 3.x and 9x - which is what I personally grew up on).
Yeah, students might be able to get by on a bit of HTML and Javascript and maybe Ruby or Python, but I would be lying if I claimed that such an education would be as in-depth and worthwhile as what your or I experienced pre-2000.
>> Think about what you had back then, though. At best, you had Mac OS
The best my high schools had were the Apple II family and PDP mini computers -- my first high school course in BASIC (I already knew Basic from my home computers) -- we were marking up Hollerith cards with Sharpies. You don't know painful debugging until you have to manually scour a deck of optical cards looking for an errant black mark.
We did not deal with interrupts, memory access or low level components. What we learned was more about logic -- not much different than what I do today.
The closest I ever got to memory access in BASIC were the occasional peeks and pokes, and even then, you didn't need them to write a useful program. Being able to build something even as rudimentary as a CMS today on (insert language of choice here) is more broadly useful than anything I came out of high school with.
Also, remember that nothing was really cross platform back then. Most languages were procedural, and free databases (relational or not) -- forget about it. I was on Mac at the tail end of high school, and if you wanted a tool like Lightspeed C or Lightspeed Pascal - those were way out of the budget of a high school student.
You were still much closer to the hardware than virtually every modern programmer outside of the embedded programming space (and even then), which is my point. What you were doing was effectively operating system programming, seeing as there wasn't really much of an operating system in the modern, traditionally-understood sense (except for the PDPs, which ran some timesharing system like ITS or Unix or somesuch, but those also tended to arrive with the full source code, at least in the case of Unix, so that one could port it oneself).
I don't get how an interpreted language like Basic on an Apple ][ series is considered to be any closer to the hardware than Node is today when most of the stuff we were programming amounted to writing scripts to solving simple math, logic or business problems (keeping it the context of high school). The goal of the teachers was basically to teach us the difference between procedures and functions and some basic concepts like recursion.
"What you were doing was effectively operating system programming" is a _major_ stretch.
Because BASIC on an Apple II doesn't involve a massive JIT compiler running on a massive userland and drivers running on a massive kernel with virtual memory and processes and such. It instead involves a very thin layer over the firmware of the computer itself. Sure, you weren't doing a lot of PEEKing or POKEing, but the fact that you could do those things proves my point.
The sorts of programming you were doing was barely higher-level than the sorts of programming involved with an OSDev-style "Hello, world!" kernel[0]. My remark is not a stretch at all. At most you had a few thin conveniences (like having some graphics-related features already available to you, since Woz had prioritized that when he designed the Apple II's BASIC interpreter); beyond that, it was direct access to everything from RAM to tapes (unless you were running Apple DOS, but that was not at all required for BASIC programming on an Apple II, and the Apple II didn't ship with it).
BASIC for all intents and purposes, was considered a high level language when I learned it.
From what I remember, BASIC kinda had a similar reputation as PHP does today (probably unfair) in that it wasn't generally taken very seriously as a programming language. You didn't use BASIC to make real programs on an Apple ][. For that, you'd do it in assembly or machine language. That bias is still stuck in my head even after 3 decades.
All the .NET devs and classic ASP (!) devs I know were/are scared stiff of Linux, see it as a hobby environment not used widely (they obviously don't think about servers, they use Windows servers and use the magic that IIS + .NET does for them), don't see outside the Windows development world and pronounce Linux as Lyenucks. Giving them a Raspberry Pi with Linux on them would kill them.
A lot of them choose .NET because their CTOs chose it because a Microsoft account representative told them it was enterprise-grade and had full Microsoft support while playing golf.
It's hard enough to get a school to teach kids anything beyond using Office. I'd be happy to make things as easy as possible on the teacher who are willing to go the extra mile to teach with a Pi, without making them go another 10 miles learning a new OS to do it.