Viability of unpopular programming languages

I said something about Perl 6 the other day, and someone replied asking whether anyone actually uses Perl 6. My first thought was I bet more people use Perl 6 than Haskell, and it’s well known that people use Haskell. I looked at the TIOBE Index to see whether that’s true. I won’t argue how well the index measures popularity, but for this post I’ll assume it’s a good enough proxy.

TIOBE doesn’t separate out variations on Perl [1]. What it calls Perl is 16th on the list this year, while Haskell comes in at 42nd. A few of the more obscure languages that TIOBE ranks higher than Haskell are Scratch, D, ABAP, Apex, and PL/I. Haskell has better public relations than all these languages.

There’s a lot more to viability than just popularity, though popularity matters. More users means more people to find bugs, write libraries, develop tools, answer questions, write tutorials, etc. But the benefit of community size is not linear. It goes through a sort of logistic S-curve. There’s some threshold size where the community is large enough for a language to be viable. And somewhere above that threshold you start hitting diminishing return.

It’s interesting to look at some of the languages currently less popular than Haskell but more familiar: Common Lisp (63), Erlang (66), and F# (67). These show that popularity isn’t everything.

Common Lisp has been around since 1982, and was standardizing a language that had been in development since 1958. Erlang has been around since 1986. These languages have many of the benefits of popularity listed above, accumulated over time.

There is not a huge community devoted specifically to F#, but it shares tooling and libraries with C#, the 5th language on the list. (Maybe the number of F# developers is underestimated because F# is so closely related to C#, not syntactically but in terms of infrastructure.)

Common Lisp, Erlang, and F# would all be safer bets for a production software project than several more popular languages.

Related posts:

[1] At least I don’t think they do. TIOBE does separate out some versions of Lisp as separate languages. It’s possible they do consider Perl 6 a separate language that didn’t make the top rankings.

Larry Wall deliberately introduced many natural language principles in Perl. It seems that one feature that Perl has in common with natural languages is controversy over when two dialects of a language are sufficiently different to be considered separate languages. Advocates consider Perl 6 to be a separate language but outside observers, like TIOBE, may not.

 

8 thoughts on “Viability of unpopular programming languages

  1. For my $work, I ship C++ code. From 1995-2010ish Perl 4/5 was my secret sauce for getting work around that code done. Since then, nearly everything new like that I’ve done in that vein has been in Perl 6. I don’t really have anything over 2,000 lines in Perl 6 (that may just be a matter of time), but it is fantastic for quick and powerful scripts.

  2. Some less popular languages are still influential on the evolution of more popular languages. For example, features I first saw in D have since shown up in the exact same form in C++/14. Features from Scala seem to keep showing up in Java 8, 9, & 10. I might not want to train a team to work in a less popular language, but I enjoy looking at code in some less popular languages to see idiomatic usage of features not yet commonly used in more popular languages that have only recently incorporated those features.

  3. Ada is still used in production for mission critical systems, but over time often replaced by C++ with verification and safety tools. It has influenced many languages and to some extent still does – it still has more features for embedded programming than most languages that are more popular, for example, and not many language have as rich user-defined numeric types as Ada has, although newer languages are slowly catching on.

    In that respect it’s quite similar to LISP.

  4. some of our older, but still used, production web scripts use Perl 6 at my place of work, enough where as a fairly new employee I had to learn the language to help maintain them.

  5. While a language is getting your processes completed in timely manner, it is the viable language. Perl has been my goto [pardon the looping pun] for many years. I can quickly extract complex data from massive cluttered files and present reporting in a clear manner.

  6. @Andrew: Good example. As I understand it, Forth is widely deployed but in invisible ways, in embedded systems rather than business applications. You could say it has a kind of popularity, not in terms of developer community size but in terms of number of devices using it.

    Regarding Perl (6), one of the benefits of source code being plain text files is that you can easily use tools like Perl to do various chores without necessarily requiring other people to learn your tools.

    I’ve enjoyed using Perl before, but I hope I never have to maintain anyone else’s Perl code. The language is huge, and I carved out my tiny subset that I like to use. But someone else might carve out a different subset.

    If I were to use Perl again, I might go with Perl 5. I’ve looked at Perl 6. It sanded off some rough edges, introduced some interesting ideas, etc. And if I wanted to use a Perl for all my work, I’d use 6. But I only use a small piece of Perl, and that piece is essentially the same in Perl 6 but would require learning changes in syntax.

  7. Popularity can influence viability, but ultimately viability is how viable is a language for your specific project right now.

    Also, too much attention is paid to what developers currently know. Any developer who’s not willing to do the work to learn what’s needed for this project right here isn’t a good developer regardless of the language being used.

Leave a Reply

Your email address will not be published. Required fields are marked *