DEV Community

Tomasz Wegrzanowski
Tomasz Wegrzanowski

Posted on

100 Languages Speedrun: Bonus Episode 101: Programming Languages Tier List

No review would be complete without an accompanying Tier List. Every Tier List uses specific criteria, and for this one the tiers are based on how much I'd recommend a language for a new project.

This absolutely is not the same as "how good is the language". For example Python 2 is one of the best languages ever made, and it goes straight into the O obsolete tier, as there's no reason to recommend it anymore.

It also does not mean that you couldn't make decent software in a bad language. For some crazy reason a lot of software we rely on was written in stupid languages like PHP, even though even the creator of PHP agrees that it's trash.

Order within each tier is not meaningful. This is programming Tier List, so languages like CSS are ranked by how well suited they are for programming, not for styling.

Tier Lists are by design opinionated and controversial. For detailed reasoning, check each article.

S Tier. Great first choice across many domains.

  • Python
  • Ruby

You're doing yourself a great disservice if you don't know one of them, and preferably both.

A Tier. Very solid choice for its domain.

  • Crystal
  • JQ
  • Kotlin
  • Rake
  • SQLite

There are more narrow, but they're so far ahead of competition in their domain, you should use them if applicable.

B Tier. Solid second choice languages, or first choice for a small niche.

  • ANTLR
  • Clojure
  • CSVQ
  • Elixir
  • Groovy
  • Julia
  • PowerShell
  • Racket
  • Ruby Z3
  • SageMath
  • SLY
  • Verilog

These are very good at what they're doing, but it's a somewhat narrow thing. Or you can use them if for some reason a higher tier language wouldn't quite work for you.

C Tier. I wouldn't really recommend, but it's not crazy.

  • D
  • Gherkin
  • Octave
  • Perl
  • R
  • Raku
  • Scala
  • XQuery
  • YueScript

I can definitely see why you'd use them, and it's not completely wrong, but I'd generally recommend checking some higher-tier language, they might be a better fit for what you're doing.

D Tier. Don't use in production yet. Experimental languages showing serious promise.

  • Elvish
  • Raku Grammars
  • Wren
  • Xonsh

These are not production ready. But they're promising, and they could be really great in a few years. Or if you're willing to suffer all early adopter problems.

E Tier. Enjoy a weekend with them, then move on.

  • Brat
  • Coconut
  • Factor
  • Forth
  • Haskell
  • Io
  • Ioke
  • Logo
  • Prolog
  • Smalltalk

These are very interesting languages, which I definitely wouldn't recommend for any real programming, but I'd absolutely recommend for giving them a try, to expand your horizons.

F Tier. Fun esoteric language, but definitely don't use for anything real.

  • Asciidots
  • Assembly
  • Befunge
  • ChucK
  • CSS
  • Emojicode
  • Lingua Romana Perligata
  • POV-Ray
  • Thue
  • WebGL
  • Whenever

These aren't meant for any kind of real programming, but they're fun!

K Tier. Kids who don't speak English.

  • Ezhil
  • Langage Linotte
  • Linguagem Potigol

If you need to teach some kids programming, and those kids just so happen to only speak a specific non-English language, and if you also believe that them not knowing English is the main barrier to learning programming, then these are a valid option. I don't really believe that, but hey, maybe you do. Of these Linguagem Potigol was by far the best. I checked a lot of other non-English programming languages, but none were really doing anything new.

O Tier. Maybe it was fine once, but it's completely obsoleted by other languages.

  • Awk
  • BC
  • Emacs Lisp
  • Erlang
  • Fortran
  • Java
  • Lua
  • MoonScript
  • OCaml
  • Pascal
  • PLY
  • Rexx
  • Sed
  • TeX
  • Tcl/Tk
  • Windows Batch Files

Once upon a time, these languages were fine. Maybe even good. Using them in 2022 is a really poor idea, with much better alternatives available.

R Tier. Languages for Robots. Never meant for humans in the first place.

  • JVM Assembly
  • LLVM IR
  • Postscript

These were never meant for humans, and to be honest they're not even that great for expanding your horizons.

T Tier. Trash, and It was always trash.

  • Ada
  • AppleScript
  • Arc
  • Arturo
  • COBOL
  • Go
  • Janet
  • M4
  • newLISP
  • PHP
  • Pyret
  • QBasic
  • Quackery
  • Sidef
  • Tcsh
  • XSLT

Total trash. They were always trash. No redeemigng qualities whatsoever.

Top comments (14)

Collapse
 
asterite profile image
Ary Borenszweig

Congrats on finishing the series! I started writing a series, I wrote 6 blog posts and I'm already tired, so doing 101+ posts is a great achievement!

Like others, I'm curious why you think Go is trash. For what Go was trying to achieve (simplicity, fast compilation, not trying to have too many features, implicit interfaces) they did it really well. I think the fact that it's so popular is because those things are attractive for many. The fact that they don't have generics is being currently solved.

That said, I never wrote more than 5 lines of Go. I only played with it to see how things work in general.

Collapse
 
taw profile image
Tomasz Wegrzanowski

And let's hope you never have to write more than 5 lines of Go.

Collapse
 
robole profile image
Rob OLeary • Edited

Great series. I must take a look at some of them in more detail. Some controversial and surprising picks in all of the tiers! If this got more eyes, surely there'd be folks with verbal pitchforks taunting you! Kudos

Collapse
 
sre profile image
SREagle

The endurance, to finish such a long series, is to be commended! Thanks to you, I got some new pet projects to play with, some new views and several insights.
I have to admit, back when the series was in its "30's", I started hoping for your take on Nim (and - to a lesser degree - Zig), but alas, no luck! Maybe another time... Thanks for this marathon.

Collapse
 
taw profile image
Tomasz Wegrzanowski

I did some languages suggested by commenters like Wren, MoonScript, and YueScript. I excluded the "C++-likes" (except D I guess) as they'd need completely different criteria to judge (bonus episode 102 has all the explanations).

I definitely recommend others to give this kind of series a try. 100 is probably too much, but a series about 20 languages would be great, and definitely doable.

Collapse
 
jstanley0 profile image
Jeremy Stanley

I’ve enjoyed the series! I’ve made use of several languages I hadn’t heard of before, including Crystal and Z3.

I sensed from the shade thrown at “corporate languages” that you weren’t a fan of Go and I hoped to read your takedown of it. I think it’s good for some things, like channels, but when I made myself use it for a few Advent of Code problems I got frustrated with its lack of expressiveness and returned to Ruby, which really is the best language for that kind of thing.

Collapse
 
romeerez profile image
Roman K

Congrats!

Curious, why no "honor" to Rust, JavaScript, C, C++, C#?

I'm very surprised to see Python in S, since you said it's 4/5, not particularly good for anything, and Ruby is far more superior than any other language in the world. Rank "S" is too high for Python and too low for Ruby.

That was ridiculous, annoying, and sometimes fun! Your style makes me and probably other readers, if they exist, hate you, but I like it, so unusual. Go is trash - you think so and you just telling it with zero tolerance. Even though Go wasn't in this series. Cool!

Collapse
 
taw profile image
Tomasz Wegrzanowski

Python is a consistent 4/5 for more things than any other language out there. Arguably it get a whole extra tier for all the data science / NumPy / Pandas / Jupyter stuff it does, where it completely blows out the competition (R, Matlab etc.).

There's a lot of things Ruby is somewhat better than Python (like web servers, Unix scripting, DSLs etc.), but there are also some things where Ruby is basically a no-show, and Python completely dominates its whole competition. They're in S tier for different reasons, and I don't think any of the other reviewed languages belongs there.

I plan to do one more bonus episode with series retrospective where I'll explain why I chose the languages I did.

I didn't do JavaScript or anything else on the frontend because I did a 101-episode Electron Adventures series just before this one, where I covered a lot of frontend languages, and I didn't want to do it again.

Collapse
 
happygu34891963 profile image
Happy Guy

Hey Tomasz, loved the series and the passion you put into it. I could have never pulled it together!

I found it weird you didn't include THE most used language on the web, i.e. javascript (and maybe coffeescript and typescript), which is not just used for front end as you know. But I know a lot of rubyists resent JS because node.js came around and stole their thunder. Rust, arguably the hottest language around at the moment, and Go, which is used extensively, are also baffling misses. And on the more esoteric side also Elm, Idris, .... actually one could easily do another series. Or two.

Thanks and keep up the good work!

Collapse
 
taw profile image
Tomasz Wegrzanowski

You can read in episode 102 why certain languages weren't included.

Collapse
 
happygu34891963 profile image
Happy Guy

Will do.

Btw, what's the next speedrun going to be?

Thread Thread
 
taw profile image
Tomasz Wegrzanowski

I have a few ideas. Stay subscribed to find out.

Collapse
 
jasonc_kwan_1fd5b6a8097f profile image
Jason C Kwan

@taw : how could this possibly be a serious list when Rust isn't being listed at all ?

Collapse
 
taw profile image
Tomasz Wegrzanowski

The selection of languages is explained in the final episode.