People go on about this since there are computers that support more than just plain machine code. I cannot count how often I was dragged into this. Not only bioinformaticians and other geeks love the topic. I am convinced, these discussion are are superficial. In the end, it doesn’t matter. There isn’t a BEST. Only a good choice at a time for a particlar purpose. That purpose involves YOU plus a couple of other basic considerations. These basics do not seem change, illustrated with a personal and semi-historic account.
Back in the mid 80s, I got my first computer. C64. PEEKed and POKEed the hell out it. Met other geeks with other boxes, like the one who ruined his expensive hi-fi speakers (and probably his hearing) by using the audio-tape deck as mass storage for his ZX81 while forgetting to turn off the amps. Went from BASIC via Simons basic to assembler. Woaah. Instead of Amiga and the like I jumped onto PCs. My first PC had a real 8088. With 2 Floppy drives. Later, my first hard drive had 10MB. WooaAh! Did Pascal programming on an AppleIIe in school. In the 90s we were developing little databases in a language called clipper (a compiler for dbase.prg files). Skipped the entire CP/M, except converting some CP/M data from 7 to 8 bit for people moving to PCs. At one point I was freelance-coding for a company on their new PC-based LAN sitting in a room where a guy was doing COBOL on the IBM central mainframe. I was left with the distinct impression that I had been given a view back into the dark ages. Went from DOSes through various Windows versions, dabbled with NeXT and the early Linux versions. At Uni, it was different flavours of Unix, loved the SUN machines and SGIs for the visualisation. Typing this on a Mac with OS/X. Now enough of the folklore: Point? That was 25 years summarized in a couple of lines, with many things omitted. Operating Systems come and go – faster than one might think. There are programs of mine out there (still running) which I started over a decade ago. And during all the time there are the – sometimes heated – discussions as to what is the BEST. Best machine, best OS, best language. It’s fascinating and sometimes amusing how people defend THEIR system with an almost fanatic zest. Worst are the missionaries. It has become part of who and what they think they are. I respect that to some extend the tools you use and love become part of how you express yourself. At some point, when starting to think in actual code, I find it most useful take a break and try to learn about a different language or system. Because actually I want to spend my time on finding solutions to the (scientific) problems at hand, and waste as little as possible with technicalities. So let’s grow up and use
the best system, which is … (drumroll) well, it depends. This is not like asking lawyers – if you ask 2 you end up with 5 different answers – minimum. Depends on what? Well, your users, for example. Or your boss (unfortunately, sometimes). And, most important, YOU!
Most biologists I encountered like Macs, the Nerds opt for the harcore Linux, and the business guys – well, you know. I encountered management decisions that supporting 3 OSs was too much for the IT to handle, with UNIX running the backend servers it was the Macs which should fade out. Very sensible argument, very farsighted, indeed. Needless to say, they have more Macs by now (user-pressure) while the PCs seem to create most of work for the IT. Just an example, I don’t want to start the Mac vs. PC war again – it’s tedious. And totally pointless – it really doesn’t matter anymore. Like being originally Protestant or Catholic doesn’t really matter anymore after you’ve become an atheist.
For example, Java for me was a revelation because I could run the same stuff on different architectures. Write it on a PC at home, scale it up on a cluster in the lab, give it to someone with a Mac. THAT was freedom from the shackles of finding the right libraries for the target archtiecture or, otherwise being confined to a single system. Or having recode almost everything in order to move on. Things haven’t stopped there. Today, I could write in python, and the code runs on the JVM. These examples are growing. (Java, MatLab, R, Python, Ruby, SQL, hmm, not quite … I’ll add a section with details later). In the end, what should matter to us is that we can take the core of the code and all the precious data of our users with us, come what may. For me this is now the most important consideration – independence of any particular OS or architecture or a managers decision. Combine that with the freedom of expression, being able to code in a language that is nearest to your thinking and the problem. Where you spent more time on solving the task at hand than tracing core dumps. That allows to exchange and combine code with others easily. These are more important factor than the performance of the resulting excutable being slower by XX%. First make it work, optimizing critical parts later or recoding those tiny bits in something faster saves SOOOO much time. Your time. And everybody elses. When on the next occasion the topic of THE BEST programming language, operating system, IDE or whatever comes up – give it an enlightened SMILE and steer the discussion to what matters. Or walk away. (Zen and the art of codebase maintenance)
Next wave: tablets, no matter what make & shape. Will it be Android, some Windows, or iOS? Same discussion. Yep, history repeats itself. Just the cycling-rate accelerates.