title: C environment for learning the sufficiently hard way
body: <p>I'm new to C(coming from Java, so I'm not learning programming for the first time). I'm reading the book, "C Primer Plus". I've been searching around to understand the differences between compilers or environments to develop C programs on Windows.</p>
  
  <p>I have installed MinGW and Visual Studio 2010. I have tested compiling a hello world on both environments. For MinGW, I'm considering Code::Blocks or vim. The multi compiler support on Code::Blocks sounds convenient, but I'm not at that level to comprehend how helpful this feature would be.</p>
  
  <p>I'm willing to learn C the way I should be instead of being spoiled by letting the works done background hidden by IDE like Visual Studio. Once I improve my understanding, I don't mind switching to a more convenient environments.</p>
  
  <p>The reason I feel uncomfortable with Visual Studio is that it doesn't support the standards as much as gcc. I have read an argument that VS is used widely in production and that this is just the way it is. Some people say just start writing C wherever which is what I don't want. I've seen some say experience the command prompt and see how the linking is done, etc.</p>
  
  <p>This is from Wikipedia, but it says that Visual C++ shouldn't be used for compiling C. <a href="http://en.wikipedia.org/wiki/Visual_C%2B%2B#Issues" rel="nofollow">http://en.wikipedia.org/wiki/Visual_C%2B%2B#Issues</a></p>
  
  <p>So here is what I need to make clear. It might be a few blocks.</p>
  
  <p>My understanding is that Visual Studio is appropriate as long as I'm developing for Windows platform and also good for people who just want to start coding. </p>
  
  <p>If I want to go with the more up-to-date standards and use gcc (which is used in Linux), I should go for MinGW. MinGW is the minimum gcc-like environment ported to Windows, so I can use the similar environment to Linux which benefits me for the standards better supported than VS. Also, this is supposed to help my program to be compiled more successfully on Linux and not exactly for compiling a program on Windows MinGW to run on Linux, right? </p>
  
  <p>The portability we talk about is compiling a source code on each platform and not to compile a program on one particular platform to use the executed file on other platforms, correct?</p>