When comparing macOS vs None/All, the Slant community recommends macOS for most people. In the question“What is the most versatile operating system to learn how to program?” macOS is ranked 2nd while None/All is ranked 3rd. The most important reason people chose macOS is:
It's very similar to a Linux terminal.
Ranked in these QuestionsQuestion Ranking
Pro Powerful terminal
It's very similar to a Linux terminal.
Pro Polished UI
The UI of Mac OS is rather unrivaled. The smooth, responsive, and cohesive UI makes the system quite joyous to use.
Pro Based on Unix
macOS being a UNIX certified system means that you can install a lot more stuff with a lot fewer headaches then if you were on Windows.
Pro Best support for Objective-C
Pro Easy access to lots of great dev tools
There's a large selection of great development tools available for OSX. The operating system itself comes bundled with a powerful terminal emulator, called Terminal. Additionally, Apple provides tools, like Xcode, an IDE that contains a comprehensive collection of tools for developing OSX and iOS software, for free.
Pro Lots of open-source software available
Because it's Unix under the fancy GUI, most open source ports easily to it.
Pro Has too many special tools for devolopers
Pro More commercial software and gaming support compared to other Unix systems
Adobe CC, MS Office, Steam games.
Pro Ideal setup, out of the box
Next to no custom configuration is necessary.
Pro Great Git GUI tools
Tower, Kaleidoscope, SourceTree
Pro Great Modifier key layout
Pro Streamlined workflow between devices
Because this is an Apple product, there is a streamlined workflow between your computer and all mobile devices. For example, if you type an a Pages document, once you save, you can open the updated document just moments later on your iPad, and vice versa. The same goes for iMessage, (yes, you can text people with your phone number from your computer. Actually, you can text other people with apple devices with just your Apple ID, with or without a phone number, for free!) Numbers, Notes, Reminders, Contacts, and just about any other Apple workflow application.
Pro Using VMware you can also run Windows 10 on the Mac
This is useful for testing and some development tools that are Windows-only (XML Spy, MapForce).
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
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.
OSX is tied Apple hardware and Apple hardware tends to be expensive.
Con No native package management
A comparison of package managers available for OSX can be found here.
Con Most software is closed source
For people who like to use open source tools for their development work, this may be a problem. There's plenty of advantages to open source software, one of which is the ability to tinker with and customize the tools themselves that you are using. Although there's plenty of FOSS tools available for Mac, especially through Homebrew, the number of packages available is much lower than the number of packages available for any Linux distribution.
Con Limited hardware
Usually, the hardware that can run this can't be upgraded.
Con Very few options for running hosted, on the cloud
Con Silly modifier keys layout
The Command key is strange, Alt is where Super should be.
Con Bash version is obsolete
macOS comes with an obsolete version of Bash, due to licensing issues.
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.