What’s the best computer for programming? A quick internet search and you’ll see many opinions on the subject. So, I’ll add mine too!
First some background. There are three main Operating Systems (OS) that cover about 99% of what the world uses for daily usage for home and work. Windows based systems, which is what the vast majority of people around the world are using. Next is macOS from Apple. And then Linux and its many distributions (distros) is the third.
General purpose programming is also easy for all three OSes. There are many general purpose programming languages – Python, Java, C/C++, etc. Most simple programs are also usually able to be ported between OSes without much difficulty. However, once you start optimizing the code for each system, the ability to port between the systems makes it harder to do so.
Then there’s platform specific programming languages. Think Visual C# for Windows and Swift for macOS. While there is some effort to make these languages cross-platform, the bleeding-edge features usually take a while to show up in the non-native platform. And in the case of Swift, cross-platform only officially exists for Ubuntu. There’s no support for Windows at all even though the language source files have been open sourced by Apple.
What is the reason for Swift’s lack of adoption for Windows? Well, that’s from Apple limiting code signing for apps that are released on their App Store to their computers only. Sorry Windows users, no App Store access for you. And not even Ubuntu users get access either. Well, there is a work around by using continuous integration and continuous delivery (CI/CD) services such as Bitrise. However, those can be cost prohibitive for individuals that are starting out.
So, what is the best computer for programming? Well, let’s now look at the best way to get all three OSes onto one computer. This is going to mean one of two main ways. The first is either having multiple hard drives and/or multiple partitions on one hard drive to install all three natively. The drawback for this is that, without rebooting your system, there’s no easy way to switch between the OSes. Also Apple limits support to only their systems. You can create a Hackintosh, but when it comes time to do updates, it can stop working until software drivers become available.
The second way is to do virtual machines (VMs). And again Apple has the least support for VMs in that they don’t officially allow you to have VMs of macOS. Also, even though some VM managers can support a VM of macOS, it usually takes some extra steps and a little bit of luck to get it to work.
So, either a Hackintosh or a VM. Either way isn’t good for the long term. Even minor updates to macOS can cause either solution to stop working. Meaning security based updates may have to wait until the unofficial patches get released. And that’s if you’re lucky to have widely used components in a Hackintosh. VM drivers for macOS are even harder to come by since you have to also wait on whatever vendor the VMs boot from.
All of this means resorting to original Apple computers. Why? Because it provides the least amount of headaches getting all three to work seamlessly on one computer. And it’s the least amount of worry that an update can go awry. But, there’s the drawback of new Apple computers being a bit more expensive than comparable offerings from other manufacturers such as HP or Dell. So, what to do?
Get a used Apple computer! There are many places to get used or refurbished Apple computers: from Apple itself, eBay, or even from some lesser known but reputable places like OWC. So there you go! An Apple computer that should last for a few more years. And you didn’t break the bank to buy it. Granted it’s not the latest and greatest, but it’s enough to get you started.
For Linux and Windows, they behave well in a VM. And because you’re using a native Apple computer, when it updates the OS, you don’t have to worry about it crashing because of incompatible software or bad drivers. Also, if you have a little extra money to spend, get Parallels. It’s a much better VM manager than VirtualBox.