Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am a Windows user, but I want to become a better programmer, and since a lot of languages are best done on a Linux system, I would like to get experience with that, but I heard that it's hard to be new to Linux because it's more DIY and therefore harder to get rid of viruses. My income isn't really disposable enough to keep getting my computer fixed every time a virus comes my way while I'm still too inexperienced to fix it myself, so what I would like is a way to use Linux for programming and Windows for day to day computer use. Is there any way to do this?

share|improve this question

migrated from May 28 '11 at 19:39

This question came from our site for professional and enthusiast programmers.

Your rationale don't make sense to me, but sure, you can run Linux in a virtual machine. – mquander May 28 '11 at 19:38
Can you learn to speak Spanish without speaking only Spanish? – Matt Ball May 28 '11 at 19:39
You are misinformed. There aren't any known linux virusses in the wild - you don't need any AV-software. It isn't hard to get rid of viruses, but to get hold on viruses on linux. – user unknown May 28 '11 at 19:45
You want to become a computer programmer, but you are afraid you'll have to to keep getting my computer fixed?? Confused. Fix it yourself, already – sehe May 28 '11 at 20:28
oh man, =)) Virus on linux ? You should do a research first and you want to better programmer ? Get your hand dirty and find a beautiful nick instead! – nXqd May 28 '11 at 22:27

I would suggest using a free Virtual Machine software like VMWare Server and installing Linux on there. That way you don't have to mess with your Windows installation but you can use the Linux machine as if it were installed directly on your machine.

Here is the link to VMWare Server (which is free):

I would recommend either SUSE Linux or Ubuntu because of their ease of use for Linux newcomers.

You could also use a LiveCD, which boots and runs off of a CD or USB disk. This turns any PC into a Linux machine without changing anything. Once you turn off the computer, all of the changes you made are gone and the system returns to normal.

share|improve this answer

Most linux distributions support a 'dual boot' mode; in this mode both Linux and Windows will be installed, and you get to choose which to use whenever you boot.

share|improve this answer

First I think your entry point should be Ubuntu which is the easiest Linux distro out there and remember that even though these are indeed DIY OSs there's plenty of documentation, tutorials and people willing to help, if you go for Ubuntu you can always check the Ubuntu Forums.

If you don't wanna quit Windows you can run the OS on a virtual machine such as Virtual Box or you could use Wubi that will install Ubuntu directly on your hardware and give you the option to choose which to boot (dual-boot), it's advantage is that getting rid of Ubuntu will be as simple as uninstalling it.

You should also know that these are in fact very secure OSs (of course, as with all other OSs, only as strong as the weakest user) so viruses and the like should come to be of no concern to you, no need to even install an antivirus (unless you gonna store some serious important information there).

I'll still have to disagree on the programming part because if you want to learn how to program, IMHO, your entry point should be C or C++ both of which run excellent on Windows. One of the reasons for me to think this way is because this languages don't do much of the hard work for you (contrary to must high level languages nowadays) and thus you have to work through algorithms to code good programs, and that's where I think everybody should start.

share|improve this answer
"C or C++ both of which run excellent on Windows" I teach C and C++ on a University and strongly disagree with this statement. – Let_Me_Be May 28 '11 at 20:05
I won't argue the fact that they might indeed run better under Linux but, though I'm no expert on the subject, I think they run pretty well for learning purpose, so unless @fahfbweigbwidhb plans on building some scientific application I think he/she'll be just fine. – PedroC88 May 28 '11 at 20:19
Its Wubi, not Woobi (don't have edit perms and its < 6 characters; bureaucrats) – sehe May 28 '11 at 20:30
@sehe you were right. Fixed it. Thank you :) – PedroC88 May 28 '11 at 20:32
Sorry, but seriously... wtf means "they run well"? – akappa May 28 '11 at 21:16

Cygwin is (from their website):

  • a collection of tools which provide a Linux look and feel environment for Windows.
  • a DLL (cygwin1.dll) which acts as a Linux API layer providing substantial Linux API functionality.

That's probably your best bet.

share|improve this answer
Using cygwin for development is a terrible, terrible idea. The software included in cygwin is ancient. – Let_Me_Be May 28 '11 at 20:08

It's not the full environment by any stretch, but using something like MSYS or Cygwin within Windows, will get you used to the some of the command line options.

share|improve this answer
MSYS yes, Cygwin definitely no. – Let_Me_Be May 28 '11 at 20:08

With the exception of missing drivers (which is something I encounter extremely rarely lately) Linux is actually much easier to maintain then Windows. Each distribution comes with a software repository, therefore you won't run into the risk of installing unverified 3rd party software that will make your installation unusable.

If you are interested in buying commercial license, then you can pay for a license that actually covers real online and telephone support.

There aren't any viruses for Linux (apart from some academic experiments), so you definitely don't have to worry about that.

If your machine is powerful enough (mostly enough RAM, all non-ancient CPUs are good enough) it is a very good idea to try Linux using a virtualization software like VirtualBox. This way, you don't even have to care about driver problems since the system will only see the virtualized machine. Plus you will have a chance to try the system and when you don't like it, you can simply erase the directory with the virtual machine and you are done.

If you want to try a more direct approach, you can try dual boot. That will install the Linux side by side with Windows. You will probably need to change the sizes of your partitions, therefore this isn't as trivial as virtualization.

From the major distributions, you could try Ubuntu or OpenSuSe. I can't really recommend other distributions for a first-time user, since they are either for a more experienced audience, or have a small user base and therefore a low community support quality.

share|improve this answer

I would echo Matt Ball's comment: Can you learn to speak Spanish without speaking only Spanish? but with two slight changes I can describe with regular expressions


In other words, you have to think Linux because it's a different way of doing things.

Sure, Linux comes with a GUI these days and you can use it pretty much like Windows — but learn to use the command-line to get the maximum benefit of the tools available in Linux.

My use of regular expressions above was a bit contrived, but I think it illustrates how pervasive command-line techniques can become.

I disagree with Let_Me_Be's assessment of Cygwin, but that's because I find it a very useful platform for shell and perl scripting on Windows. I've never compiled an application using Cygwin.

share|improve this answer

Just playing around with the docs and tutorials over the web! Try installing Linux on a virtual machine or another PC (even a Pentium 3-4 machine) ^^

share|improve this answer
The OP is hardly going to become a better programmer simply by "playing around with the docs and tutorials over the web", and the idea of using a VM was suggested four years ago. – G-Man Jun 26 '15 at 7:02
This duplicates another answer and adds no new content. Please don't post an answer unless you actually have something new to contribute. – DavidPostill Jun 26 '15 at 10:05

You must log in to answer this question.