Skip to content

There’s Too Many Programming Languages!

October 6, 2015

It’s an opinion that often comes up in development circles. We’re in the middle of a sort of language boom right now, and every time someone comes along and announces a new language, other people suggest that we should all stop creating new programming languages, because there’s already too many out there. Common complaints include the amount of effort needed to constantly learn new languages, the fragmentation caused by the constant introduction of new languages and the lack of innovation in these.

If you feel that new languages require too much effort to learn, the first thing I have to say is: tough luck. Programming is very much about constantly learning new things and being able to learn on your own. Once you’ve mastered a few programming languages, you should begin to see repeating patterns and find that the skills you’ve already acquired are very transferable. For instance, I’ve never written a single line of Go, but I’ve used C, C++ and D. I’m sure I could get started writing Go code within a few hours, and become reasonably proficient within a week. Go doesn’t scare me. Another important thing to realize is that not knowing a programming language isn’t necessarily a flaw you have to correct. Case in point: there are still many job postings out there for COBOL programmers. It’s perfectly acceptable to specialize in one or a few languages of your choosing.

As for the issue of fragmentation, I think there’s truth to it, but it’s not as bad as people imagine. There are only a few languages out there which are truly mainstream. These have existed for years, and if you know just 3 out of the top 10, you’ll be well equipped to realize personal projects or land yourself a development job somewhere. The new programming languages that come out, for the most part, remain relatively fringe and are used mostly by hobbyists. Most of them will likely die out. I’ve written my PhD project in D, and I’ve found that surprisingly few programmers have ever written code in that language. In fact, none of the programmers I’ve met in person outside of DConf had ever used D.

The biggest kind of fragmentation problem, in my opinion, is self-inflicted. I’ve spoken to people at various companies who told me that their architecture was made of some mishmash of parts written in five or six different languages. That seems like an issue to me, if only because more languages means more dependencies, more breakage, more interoperability problems and more code maintenance issues. That’s not the fault of all these languages for existing though, it’s simply bad planning. The administration there let some capricious programmers get their wish and include new code written in their pet language in the system, with little regard for the added complexity this language soup would introduce.

There’s some argument to be made that many of the new languages coming out lack originality. At the moment, most of them are statically typed and compiled ahead of time and most of them have similar syntax. It’s true that there isn’t a lot of innovation overall, but I don’t think that’s a reason to stop creating new programming languages. The design space is huge, infinite in fact, and we’re only beginning to explore it, in my opinion. Consider that even to this day, all the commonly used languages are based on the editing of text files. Also remember that even the languages which don’t succeed on a large scale, such as LISP, can have a tremendous impact on other languages down the road. Imagine a world where there were only two programming languages in existence: COBOL and Fortran. Is that a world you would like to live in? I would argue that there is a need for new languages to solve new problems.

4 Comments
  1. lerc0 permalink

    Most people have a favourite programming language that is younger than the argument “we should all stop creating new programming languages, because there’s already too many out there”

    I like Haxe, and I’m learning Rust right now. Both fairly new languages in the overall scheme of things. Even Rust feels like a precursor language to something that will address points that people currently don’t comprehend well enough right now. We probably won’t even have a decent understanding of what is preferable until enough people have explored the new concepts that Rust introduces. Any language has good ideas and bad ideas. Sometimes it takes years to determine which ones were which.

  2. John Winters permalink

    Yes, everyone should invent a new language for each project.

    You think I’m kidding?

    Ever use macros?

    😂

    • It’s part of the LISP philosophy that you can develop a small domain-specific language that better expresses your problem domain. This works somewhat poorly in C because the macros are very unsafe, but the core idea isn’t necessarily a bad one. Personally, I prefer to code a set of small utility functions for my problem domain… Every programmer understands what a function is, and functions are perfectly safe to use.

Trackbacks & Pingbacks

  1. Have Static Languages Won? | Pointers Gone Wild

Leave a comment