There are many for the same reason that engineers don't make a single tool that does everything. There are so many different contexts for programming languages. At the core they allow expression of a solution. This draws on the context the language provides. More context, more concise solutions, but less generality. Also might incur performance penalty, which is a drawback in other circumstances. It's also hard to get a good balance of things in a language, and as things evolve they get used in different ways than when they were designed. And people start using a language and don't want it to change too much after that, so that language is kept around and new ones serve other uses.
There are many for the same reason that engineers don't make a single tool that does everything. There are so many different contexts for programming languages. At the core they allow expression of a solution. This draws on the context the language provides. More context, more concise solutions, but less generality. Also might incur performance penalty, which is a drawback in other circumstances. It's also hard to get a good balance of things in a language, and as things evolve they get used in different ways than when they were designed. And people start using a language and don't want it to change too much after that, so that language is kept around and new ones serve other uses.
(post is archived)