Then there’s languages you simply cannot use for anything else than their intended use-case — Chuck for instance. Good luck building a web app with a language that’s meant to produce sound. :)
Finally, you have languages that sit at different abstraction levels. Some deal with actual hardware, while others deal with nothing more than a browser. The reality is that while there’s hundreds of programming languages, many of them are not necessarily an alternative to another, and were created for a good reason — to solve a bigger/specific problem.