I was going to write a post about GSU’s Kafkaesque search for its “level of comfort”, but realized that I could actually say something positive and useful.
There is a recent discussion at the “coding horror” blog about Ruby and OSX vs. windows, which reminds me of my efforts to get students to be comfortable with something other than windows (SOTW). There are two central facts of life for software development (not quite computer science, but certainly computer engineering or software engineering – so there).
- Windows in some variation is the dominant by number operating system.
- There are (essentially) no windows supercomputers.
Since the research interests of my lab focus on questions of scientific computation and machine learning in a bioinformatics and systems biology context, the choice of operating system is somewhat irrelevant – except when the operating system gets in the way of actually getting work done.
This turns out to be more of a problem with windows than with a Linux or Unix variant. Windows used to be strictly Posix compliant which meant that you a chance – if you followed the standards and didn’t do anything weird- of writing portable software on a Windows machine. The development versions of my molecular modeling software were written on a windows 3.1 machine using Borland’s IDE and trivially ported to other SOTW systems (and even to Microsoft’s own compilers). The key was to avoid the MFC and other extensions that lock the software to a given operating system and to use object structure to encapsulate the dependence when unavoidable (as in a GUI). (As an aside I learned this the hard way with FORTRAN on Vax/VMS where the Dec extensions insured no one else could use your program). Microsoft has made this adherence to standards harder and harder with each release of visual C++.
This wouldn’t matter if computational performance were not a issue in my work (and in the real world for that matter). Part of what we do is to explore different models for computation. This means different hardware including heterogeneous and grid environments. Part of what we do is large-scale computation, and this means supercomputers. Neither of these are supported by the windows platform.
So it is necessary to be able to move between operating systems and to be conversant with the tools in them.
Just as it is critical with computer languages to be able to program in several.
It is an important educational goal to make sure that the students can use SOTW. Not because of any inherent strength of any individual SOTW, or because of “software freedom”, but simply because no respectably educated computer scientist should just know one operating system.