Having recently started my Computer Science and Electronic degree. There was one thing that shocked me most: the ubiquity of Macs. Having no coding experience or knowledge, I had assumed that Macs were not for developing software. It turns out I was wrong. In fact, most people with programming experience (at my university) own and use a Mac. That’s not to say owning a Mac makes you a better programmer, but it does make your life a lot easier.
There are two problems that lead programmers to use a Mac:
The first problem is Windows. More specifically, the proprietary standards and procedures that Microsoft enforce in Windows. Installing C on Windows isn’t too difficult, but it requires more effort than a Unix OS like MacOS. Then you have to be careful of which version of Windows your program is compatible with. Windows has a lot of legacy support. Which is nice for companies that want to run insecure and slow 20 year old software, but incredibly inconvenient for programmers because you have to constantly be aware of the weird nuances that Windows has, but other operating systems do not. Installing SDL is far from a pain-free experience like it is on Unix.
Of course, this depends on what languages you use. Java for instance, is completely fine on Windows, comparable to Mac and Linux in every area.
This ultimately leads to a reliance on many workarounds. This is not good for a programmer who wants their program to compile and run on almost any machine.
It is now that we must bring up Linux. The saviour for Windows users who want to write programs! Well… not quite. Linux is far far far better than Windows for programming. Things work without workarounds and installing compilers and software is never more inconvenient than copying and pasting a few commands into terminal.
This leads to the second problem: Linux comes in many different flavours all with their own set of problems. Ubuntu, for example, the most Mac/Windows like distribution is ugly (IMO), and doesn’t support apps like Microsoft Word (without hours of messing about). This makes Linux great for programming, but inconvenient for everything else. Linux distributions are not designed in the same way as MacOS and Windows. MacOS and Windows have to appeal to a large market, that’s why they have to look fairly pretty, stay fairly consistent and provide adequate support. A Linux distribution does not have all of these goals. It may have some of them, for example Elementary OS focuses on aesthetics.
Ultimately, PC users usually have to stick with a dual boot. This is an inconvenience which can be detrimental to productivity. Having an OS that just works is something that I believe most programmers want, especially when working on mission critical projects.
Here we are, the solution: MacOS. It has all of the conveniences of Windows: all the standard software you need, a pretty layout and a consistent design. It also has the conveniences of Linux (as it is also built on Unix): easy installation of compilers and standards and no need for workarounds.
All seems well and good for Apple. However, in part 2 I will focus on hardware: the final crux of this problem.
Note: I was using a Windows PC until May of this year when I made the switch to a MacBook Pro 13″