Hello All,
I have been programming in C++ using Microsoft Visual Studio for quite some time
now and I was wondering if there are any advantages in swithcing platforms from Windows to Linux.
Is there any major difference or is it a matter of taste?
The cost is not a major factor, as I get my software from the university, in any case I don't mind paying for good software.
My coding is primarily numerical and scientific computing based.
emaghero
Sapere Aude
Depending upon the field, many of the good software libraries out there for scientific computing were developed for and are available on linux. If you're running on a cluster, you'll also be running on linux or a unix variant.
Being able to remotely log on, start a job, and log off via a terminal (via xwindows and ssh on linux) is a nice feature. (Assuming you're probably not wasting CPU cycles and memory on graphics when doing a scientific computation, a terminal is all you need to start and/or monitor your simulation. Postprocessing can be done in a separate step.) In my cancer research, I've enjoyed this functionality quite a bit. Remotely log on and start 20 cancer simulations on 20 nodes, log off. Go to Panera for coffee and free WiFi the next morning, and check the sims remotely via SSH.
Generally, linux uses a lighter GUI and far less memory than windows, which can help free additional resources for your scientific computation. (Not to mention not needing to run a virus scanner and software firewall.)
Intel's icc compiler is available for free for academics on linux, and so that's a perk, too.
This all being said, I tend to straddle the line. I'm most accustomed to doing things in Windows, so I tend to develop and test code there using mingw (native g++ for Windows). Because I pay particular attention to making my code as standards-compliant and portable as possible, I generally have no trouble recompiling and running that code in linux using g++ or icc.
So, for development, I don't see quite so much of a difference between the two--you use what you're familiar with. But you should always have portability in mind so that you can leverage the efficiency and other benefits of linux when it comes time to run that code.
Does that help at all? :) -- Paul