Why are there so many different program languages?

There are probably several reasons for this fact.

1) Specialization. Each programming language has its unique strengths and weaknesses that make it more or less applicable for a particular kind of software. For example, C and C++ are great for systems programming and computationally intensive programs. Java and C# are great for web applications and applications with graphical user interfaces. Perl is great for quick ad hoc programs that need diverse capabilities.

2) Preferences. Despite the first point, there is a lot of overlap in the capabilities of programming languages yet people choose different programming languages because the like the style of it more than another comparable programming language. For example, a web application could be written in Java or PHP, but someone may choose PHP because they like that style better. A scientific program could be written in C++ or C#, but the decision could come down to personal preference.

3) Evolution. The field of computer science is still relatively young and so new programming languages are still being created all the time. Its probably safe to say that most programming languages ever created only ever saw very minimal use. Many programming languages were created to try a new idea out or find a new and better way to make programs. Many of these experimental languages have influenced mainstream programming languages even though they may not see regular use anymore. In fact, languages like Java and C# have successfully attempted to assimilate many previous experimental programming language features. Also, because programming languages are still evolving, there is still much software in use that was written 20 or 30 years ago and never rewritten creating the need to keep older programming languages around such as Fortran.