Cygwin, available as a free download from www.Cygwin.com,
could be thought of as a massive example of the Adapter design pattern, because it provides the
Unix/Linux API under Windows. This allows a tremendous amount of existing Linux/Unix code to
be recompiled and used in the Cygwin environment. Basically, if you've ever missed Unix functionality
while in Windows, Cygwin is the solution.
I use Cygwin to solve some of the significant problems left unsolved in the Windows environment.
For example, when creating makefiles it's easy to exceed the dos command-line length, but it's
no problem with Cygwin. Cygwin provides shell scripting and other sophisticated tools like Unix
find and grep at your fingertips. Cygwin comes with the CVS code repository tool built
in, so it's the easiest way to get up and going when using CVS. The abilities of Cygwin expand regularly as the
project grows. In short, if you're a programmer it should be part of your toolkit.
To install, go to www.Cygwin.com. You'll see the installer
and the instructions on the home page. During the installation, you'll reach a point where you
have a tree of selection possibilities. If you have the bandwidth the easiest thing to do is click
the root of the tree and select everything, then optionally go through and deselect anything
you don't want (but it's generally safe to select everything and just go). This takes longer than
the minimal installation and will require more disk space, but you won't then be missing anything later.
If you do select elements by hand, make sure that you get make (Gnu make) and g++ for
compiling C++ programs (Cygwin now maintains relatively recent versions of g++, so you don't need
to build the compiler yourself). You'll usually want to install CVS, as well, so you can use your
Cygwin window as a CVS client.
I find that it's especially useful to configure your Windows environment so that you can
right-click on a folder and get a "Cygwin Prompt Here" option, to open up a Cygwin bash prompt
in a particular directory. You can see how to do that on this page.
Here are some instructions for doing a custom installation of GCC (g++),
which you may need to do if the version of g++ that comes with Cygwin is not current enough for