That's a loaded question! Yes, the pun was intended. Ok, a compiler that recognizes some language(such as C, C++, Python, Java, etc.) is the first tool. The next is a linker that is usually included with the compiler. Then you may have to have libraries to access the more complex functions of Windows, XWindows, etc. environments. Oh, and a good IDE ( Integrated Development Environment ) is really nice to have too. And don't forget things to help you design the logic like UML charting programs, flowcharts and such. Google for tutorials and get on a forum board or two with sections dedicated to your chosen language. Try Sourceforge for some good projects to get involved with after you learn. Take a look at www.thefreecountry.com
and check out the free stuff there. Lots of luck getting started!