Take the tour ×

I want to get into using Linux more, all my programming and development has all been done under Windows. But I am wondering what is the core advantages to using Linux over Windows? What can I do in Linux that I can't do in Windows?

share|improve this question
add comment

closed as not constructive by Michael Mrozek Jun 27 '12 at 1:36


3 Answers

Many of the fallowing points apply equally to all POSIX operating systems and many other alternative OSs.

  • Powerful terminal emulator with piping, redirection, and background processes. bash, the default shell, is a programming language that you can use for every day system management. It is several magnitudes more powerful than DOS such that many chose to use the terminal and a text editor over an IDE.
  • Linux offers many different types of inter-process communication. Sockets, shared memory, pipes, FIFO, etc..
  • Linux's fork-exec model lets you more easily write concurrent programs.
  • A standardized filesystem layout that, while varying slightly from distro to distro, allows for the creation of automated install scripts.
  • Because of the above: Package managers, which automatically install new libraries and programs, and their dependencies. On Windows, you have to manually install most libraries and configure your compiler; on Linux, you type in "apt-get install " or "yum install " or "emerge " (for Debian/Ubuntu, Fedora, and Gentoo respectively). This is also a good way to distribute software that's ready for mass consumption.
  • Free, continuous updates. Never pay to upgrade your OS.
  • Better community and community knowledge. Linux programmers know more about what their OS does because you can A) read its source, B) work much closer to it, and C) find more reference material about its inner-workings. They also communicate more through mailing lists, forums, and websites like this. Open source software becomes obvious on Linux, we love to share code.
  • Better documentation. Don't know how to run a certain program? Type "man ". Want to know the behavior of a C function? "man " or sometimes "man 3 ".
  • Customization. You can customize anything, including the kernel. You can change your desktop GUI and even try out tiling window managers. Most distros let you chose between several different file systems including ext4, XFS, JFS, Reiser, etc.. This also contributes to Linux users knowing more about their OS.
share|improve this answer
add comment

I believe that the biggest advantage is that you're NOT tied to a particular vendor. If you don't like GNU C, you can use Clang, for example. If you don't like Apache, use lighttpd or Nginx or cherokee or ... Very few parts of any given technology stack don't allow alternatives.

The flip side of not tied to a vendor is that standards, written standards, exist for just about everything. This is a bigger advantage than anyone coming from a "Proprietary World" can imagine. People write documentation using the written standards. People write code conforming (at least mostly) to the written standards. Nobody pulls the carpet out from under you, as the Big Software Vendors tend to do *cough*BEA*cough*. Projects that refuse to fix bugs end up getting "forked" and superseded, so standards actually tended to be observed rather than given lip service *cough*OOXML*cough*.

share|improve this answer
+1 for the OOXML example. For the record, we (.nz) voted against it :) –  jasonwryan Jun 26 '12 at 23:25
add comment

I always say to my friend that Linux treats developers like its own children. It's really easy to link a program with a library, you have a LOT of great editors to use (vi, emacs, Code::Blocks, Geany...), the bash is incredibly flexible (at first you won't use it very much, but when you start you'll notice how some things are easier on it), and you can edit the code of basically everything, if you want to.

But the most important thing for me is the package manager (yum for fedora, apt for ubuntu, pacman for arch). The package manager checks every dependency of every software and library you want to install and install to you. It checks for update for every single one. It... makes your life easier, in general.

Windows, natively, has nothing like that.

Also, Linux is POSIX compliant. This means that it should be easier to make cross-platform software for other POSIX compliant OS (like FreeBSD, OpenBSD, OpenSolaris, and even Mac OS/X). Almost every library of Linux is standard (Windows have a lot of super specific implementations that only work on it, like MFC or DirectX), so it shouldn't be so difficult to make a version of the software for Windows, either.

share|improve this answer
add comment
