I talked quite a bit about code, but two other important aspects of code is what to use to write code and how to finalize the code so that the end user will be able to use the program created. For writing the code, many individuals will use an Integrated Development Environment (better known as an IDE) which will have a source code editor, some build automation tools, and a debugger. Some IDEs will also use "intelligent sensing" (better known as Intelli-sense) to detect and resolve code misunderstandings, typos, and other errors. Some individuals will not use an IDE and sometimes will write code in a basic text editor such as vi or emacs, but IDEs do provide some advantages on speed.
As for finalizing the program, the code is either compiled or interpreted. Compiling code is done for languages such as C and C++, which is a process where the code checked for errors and once error-free, translated into machine code to be executed for the platform it has been compiled for. For other languages such as C# and Java, the code is interpreted, where either the source code is executed or it is translated into an intermediate representation that is executed. This results in a couple of things to make notes of.
First, compilers and interpreters have their own respective advantages. In the case of compiled code, the performance is notably superior, but the code must be compiled for each platform respectively. For interpreted code, it will be notably slower, but moving from platform to platform can be easier depending on the project in question.
With all of this now explained, I can talk about some of the options available for IDEs and Compilers/Interpreters. In the case of Java the interpreted code is ran on a Virtual Machine, which is called a JVM commonly. In my case I mainly used Eclipse for development and the basic JDK for code, but I will mention that there are third party JVMs including some non-free solutions that are notably better than the standard work on performance. I also will mention that I understand the hesitation of others not wanting to use the standard JVM in light of the numerous security issues that have plagued Java.
As for C#, there are two main options. The first one is to use the .NET framework based version which relies on Visual Studio. The other option is to use the Mono platform, which honestly speaking I have not used as of yet. What I can mention about it though is that it is a platform independent implementation of C#. It is recommended though that for Windows only work the .NET framework should be suitable so long as the program does not need to be platform independent.
As for C++, there are plenty of compilers, but I will mention that the more commonly used one is the GCC compiler. I have mainly used this for Windows and Linux so that going from platform to platform is not too painful, and when used with the Eclipse IDE. For some projects though I also use Orwell Dev-C++, which is considered the spiritual successor to Bloodshed Dev-C++ and there are versions that include either the MinGW32 or TDM-GCC compilers. (Both of these are GCC compilers designed primarily for Windows) As for Mac OS X, Apple has made XCode free to use for developers and from what I have seen has served to be a good IDE for that platform. While the initial learning curve is a bit steep for those used to Eclipse and Visual Studio, I have had a positive experience with working with XCode.
This is a very basic introduction to these topics as there are plenty of IDEs and Compilers that are available to use. I suggest users look for the solutions that best suit their work. Just remember that most of the IDEs and compilers that are more widely used are pretty well documented and to take advantage of this documentation when issues arise as typically other users may have ran into them and figured out how to resolve them.