When comparing Windows vs None/All, the Slant community recommends Windows for most people. In the question“What is the most versatile operating system to learn how to program?” Windows is ranked 4th while None/All is ranked 5th. The most important reason people chose Windows is:
No other OS comes close to supporting as much hardware as Windows 10 does. Because it's the most popular OS, the bulk of hardware manufacturers support Windows first, and all other operating systems second.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Best driver support of any OS
No other OS comes close to supporting as much hardware as Windows 10 does. Because it's the most popular OS, the bulk of hardware manufacturers support Windows first, and all other operating systems second.
Pro Widely used
Windows is the most-used desktop OS in the world.
Pro Windows comes first
Windows is the most used platform in the world. If you build something and need a third-party software it will most likely run on Windows. Not because it's good, but because everyone uses it.
Pro Free access to great development IDE in Visual Studio Community
Pro Ubuntu bash shell
Windows has a binary compatible Ubuntu shell to run non-Windows apps natively.
https://msdn.microsoft.com/en-au/commandline/wsl/about
Pro Stable
Pro The most solid choice for .NET development
Pro Free with most new computers
At least the non-Apple variety at any rate.
Pro Touch screen support
You still can't get touch support on a Mac. Windows has had touch for 5+ years now.
Pro Best support for Visual Basic
Pro Stop being a fanboy
Pro Potentially larger user base
You are not constrained to a subset of the market, thereby the opportunities to get help should be greater when only constrained by language rather than language & OS.
Pro There are lots of popular languages available that are pretty much OS independent
For example, node.js, Java, pearl, Python, Ruby, HTML, CSS, Javascript.
Pro You can focus on learning
Developing at this higher level allows you to focus on solving problems and learning the language rather than learning an unfamiliar OS.
Pro Can give you experience across OSes
Developing in a language that supports many OSes gives you potentially more room to grow, by giving you an excuse to try other OSes once you become comfortable in the basics of a language.
Pro Online tools
If you are keen on just diving right into coding, there are many tools that run in your browser that allow you to get going without needing to setup anything locally. For example, codepen and coding.
Cons
Con Uses more resources than most alternatives
Con Most software is closed source, including the operating system itself
Con Weak default terminal
The standard terminal lacks basic features that Linux and OSX has. Alternatives to the default terminal for Window can be found here.
Con Lacks package management
It is not easy to install/keep current development packages that developers need and use.
Con Limited in its flexibility
Window managers, startup systems, and system components cannot be changed.
Con There are some privacy issues
By definition, it's spyware. Pre-compromised OS.
Con Scanning for viruses makes builds slow
Compiling a project means reading and writing a lot of files. Even fast anti-virus software slows down the build time (which is almost always too long).
Con Update policy / scheduling is a nightmare
Pop-up to update your system that will restart it if you don't interact quick enough and will have to be in reboot mode, which can freeze your activity until the update is done.
Con Unstable and slow
Windows crashes often and is much slower than alternatives, especially at file IO, which is important for developers.
Con Maintenance is time-consuming
Previous versions needed to be formatted ever 6 months to maintain performance.
Con Embarrassing to give talks
On conferences or in user groups the audience laugh at speakers presenting their talk on a Windows machine.
Con UI look and feel may be non native.
If your goal is to develop something that looks like it fits in, this can be tricky with some cross platform languages (Java being a notable example, though there are libraries that can help this).
Con You may still need to deal with idiosyncrasies
Most cross platform environments can't abstract away all the OS specific idiosyncrasies. For example, starting Java applications as a service is something Java cannot do out of the box. So you are left to come up with your own solution for that. NPM's scripts are not inherently cross platform, so if you use them while developing with Node.js, you may need to find your own ways to make them cross platform.
Con Learning how to test can be costly
Learning how to test one's code can be more complicated, depending upon the language because you may need to test certain aspects of your application on different OSes. This means more setup time as well.
Con Write once - test everywhere
The idea behind cross-platform languages looks nice at the first glance, but in reality in the very best case boils down to an infamous "write once - test everywhere" pattern.