Programming: Linux vs. Windows?

Started by
40 comments, last by geekyware 12 years, 7 months ago

I have a really hard time understanding how is it that pressing "F7" is worse than typing "cd pathto/folder" then "make all" or hitting "F5" is worse than typing "gdb myapp run"

Some stuff is better being automated and Linux has a script-friendly environment, granted; but Window's capabilities aren't far behind either. Just install CMake, Python, Lua, or Cygwin and you get powerful scripting tools at your disposal.


I already regret posting here.

I didn't say anything about what is "better" or "worse", did I? I was just writing how I experienced both "worlds". When I am targeting windows I will also code on windows usually using an IDE an doing everything from there. Setting up the more unixish tools on windows is of course possible, but is kind of a hassle. On linux/unix on the other hand these tools are simply there. gcc, make etc. are almost a part of the system if you will. So naturally you are more likely to use them directly...

I guess what Hodgman said about target platforms is the most important argument pro or contra any of the systems, and that is a decision that everyone has to make for himself.
Advertisement
There is certain truth in his opinion...

Most Linux programs are again and again built from source not only by the original developers but by vast number of other people. Thus the development packages are the most stress-tested parts of any Linux distribution. It has some nice consequences:

  • Almost every programming language under the Sun is freely available in distribution core and works out of the box
  • Development libraries are installed system-wide and very easy to include - plus they have system-wide updates
  • Most fancy library/language/toolkit bindings (like PyGtk, Tao...) are usually developed under Linux and thus better tested and debugged there
  • The main application environment (shell) is itself scriptable and interactive
Under Windows you will normally use development environment provided by IDE (like visual Studio). Adding non-standard extensions, like modules written in other programming languages, large 3-rd party libraries etc. can sometimes be quite complex.

In am myself using Windows and VS mostly because of VS debugger. On the other hand Linux has Valgrind, so IMHO it is a tie :D




Lauris Kaplinski

First technology demo of my game Shinya is out: http://lauris.kaplinski.com/shinya
Khayyam 3D - a freeware poser and scene builder application: http://khayyam.kaplinski.com/

he told me that, for programming, I should get linux because it was better



It doesn't important which one has a better interface (subjective).
End-users doesn't care about that. It's a market dependent question.
You will be more valuable as a programmer if you know them both...
Development libraries are installed system-wide and very easy to include - plus they have system-wide updates
This is nice for the user of a linux system (aside from the fact that users are compiling code...), however, this is an absolutely horrible "feature" for a programmer.

If I get a bug report that says it's reproducible on a binary built from source commit 434efa192b418c6dc3246d2042771824a950505a, then it better be reproducible on all binaries built from that version-tag!
If the resulting binary depends on the global environment of the builder's PC, then there's a huge break in the versioning chain there which makes professional development unpossible.

N.B. the same situation occurs in amateurly run Windows environments too.
I do find Linux a friendlier environment for programming, but I wish we had an editor as nice as the one in Visual C++.

In any case, my vote is for learning to program both in Windows and in Linux. You can use something like VirtualBox to run one of them inside the other. I became a much better programmer when I moved from Windows to Linux, primarily because I was forced to learn how to write portable code, but the key is that I was exposed to both.

I became a much better programmer when I moved from Windows to Linux, primarily because I was forced to learn how to write portable code, but the key is that I was exposed to both.


And here's the proof that knowing Java alone will make you superior programmer.
Some people are mentioning doing the command lines for compiling and linking, etc is helpful for learning the "low level" stuff. I don't see that as the case at all. It's just annoying things you have to do to get to a compiled product. If you want to learn real low level stuff play arround with some programs in a dissambler and learn some assembly language and then you can see the kind of things going on low level. You could also try and write an emulator for some old game system (I did one for gameboy, it's a pretty simple system) to learn more about what's going on in the "low level" of programs.
"Pro linux:
* My beard will grow thicker."

Naw bro I've been using it since 2000 and can't grow anything that doesn't look like armpit hair.
"It's like naming him Asskicker Monstertrucktits O'Ninja" -Khaiy

I'll throw in my two cents, I use Windows with Visual Studio 2008 at work and Linux with command line g++ at home. They are both nice to write code with.


The programming I do at work is very Windows specific (MFC library anyone?) and I would certainly not try and deal with doing WinAPI calls and setup without the wizards and code completion that VS provides.


However at home, where I program my games, I prefer a very *clean* programming environment (nothing but .cpp .hpp and a make file). I don't like the clutter of IDE specific project files, settings files, etc. And while I could have the same environment in Windows, I happen to like the command line of Linux without having to install CygWin.


But this is all personal preference, and in the end, that's what it will be to you. It is entirely possible to cross compile from either OS, you can have IDE's with all the nifty features on both, you can download portable libraries on both, you can Google compiler errors on both, etc. I would suggest trying both and see which you prefer.
Well Linux is free, Windows isn't.

Other than that, I find it's a matter of taste and what you want to do. If you want to be productive and Windows is your target platform - Windows is your best bet. But if your target platform is Linux itself you might be more productive in the Linux. If you want to learn more about operating systems and try something different, Linux can be fun.

But you always have to filter what people tell you, just like you should when reading this post. I have friends who think you're not a good programmer if you don't program in (Linux) Vim or whatever it's called (it's basically a Notepad-ish style code editor). Those friends also happen to not have finished any useful projects and I think many of the zealots fall into this category.

IMHO anyone claiming that you're more productive in Linux if you're doing crossplatform development is lying, but I'll get flamed for that.

This topic is closed to new replies.

Advertisement