tags:

views:

123

answers:

4

I want to learn to program in a UNIX/Linux environment. I'll be using the C, C++, and Perl programming languages (as well as learning bash, of course). I just keep getting fascinated over POSIX and other differences between Windows and *nix libraries (and also just bought the Perl Llama book), and I want to try programming for a different operating system for a change. Also, this will give me some experience writing more portable code.

However, I feel like a lost little boy in a large, overgrown forest of *nix distros and I don't know anything about them. What are some good, common ones? What does just "UNIX" refer to (if I said I run UNIX, what would I really be running?)? Which ones are more for average computer users (I think Ubuntu is like this) and which are better suited for programmers? Is there that much of a difference between them? Should I be hardcore and compile the kernel myself or just download some easy-to-use distro and install emacs?

I think this sort of walks the line between programming related and "doesn't belong here," so I'm tagging it with not-programming-related to be safe.

I'll be installing this on a portable hard drive, and not replacing my precious Windows XP (if it matters).

update

I guess I'm going with Ubuntu to start. Thanks for the quick answers.

+3  A: 

Any of the BSD's, and many of the Linux's should work fine, even Mac OS X.

If you want something that's as close as the original nx as possible, whatever that might be, then perhaps FBSD, OBSD, or even NBSD would probably be best.

Additionally, if you have a fast machine, I suggest using a virtual machine to start with, keeping in mind that disk IO speed in that environment can be very bad - using a portable HDD will result in even worse disk IO speeds.

If you choose Linux, then I suggest going with Ubuntu, as that has one of the best automatic hardware configuration I have seen.

Arafangion
Thanks, I'll probably go with the virtual machine idea. I realized that I just so happen to have VMware installed, too.
Carson Myers
+2  A: 

To be called UNIX you have to pass a certification that it conforms to the specification, so Linux is more precisely called a UNIX-like operating system. The main paradigms remain even if many particulars will change if you go from Linux to UNIX and from UNIX to another UNIX flavor. That said, you should take a look at The Art of Unix Programming to get a feeling about the ways of doing things.

The more practical thing to do is to get an easy to use Linux distro (Ubuntu, SuSE, Mandriva) and familiarize yourself with it while doing some programming projects. Then, when you are more familiar with how things work so you can manage to solve issues by yourself with ease, and to get a feeling about a different flavor of OS, try OpenSolaris (Nexenta) or some BSD flavor (for instance FreeBSD). The reason for this is that you'll be able to get an environment which works without much (or any) trouble using mainstream Linux, whereas with less used free Unices you'll may hit upon unsupported hardware, harder configuration and so on.

Also, user oriented distros will fare as well as programmer oriented distros (if such a thing exists) to do programming, all the tools will be there at a single package download away, if they don't come in the DVD or CDs themselves. You can usually set up at install time how you wish to use your OS, there are server groups, programming groups and so on, which you can select.

One of the most shocking differences from the user point of view between Unices and Linux is that Unices do not come with the GNU set of tools. These tools are of very high quality and you will miss them if you get used to them and then move to another flavor. It is usually heard that sysadmins first install all the GNU tools on OSs that don't have them.

Vinko Vrsalovic
thanks--I think I'll try Ubuntu first.
Carson Myers
"(if such a thing exist)". Yes, they do. See Backpack Linux.
new123456
+2  A: 

Go with Ubuntu. It has great support and documentation, and coupled with apt-get, it's a breeze to get the development environments up and running.

gommo
+1 for Ubuntu, also you can try Debian
zdmytriv
+1  A: 

Don't bother with any sort of hardcore, advanced Linux distros, or compiling your own kernel, there's no point unless you have a specific reason, and it'll just get in the way. The major distros (Ubuntu/Debian/Fedora/SuSE and many others) should all have a good variety of C/C++/Perl development tools available, because C/C++/Perl apps are a core part of pretty much every distribution. Just choose one that has most of the tools you want, and that's relatively easy to use.

I personally use Ubuntu. It's relatively easy to get all your development needs installed using the package manager in Ubuntu. Debian, Fedora, SuSE, and a lot of the other mainstream distros will be just as good.

_jameshales