Best Programming Languages Tier List

Sdílet
Vložit
  • čas přidán 11. 06. 2024
  • Overview, code, and trivia for 38 programming languages.
    A complete ranking of the majority of programming languages in current use plus some historical languages. I define what makes a language "good", show side-by-side code comparisons, and make recommendations on what and how many languages to learn.
    00:00 Popularity Doesn't Matter
    02:35 The Rank & The Criteria
    05:10 Why 3rd Party Libraries Don't Count
    06:07 Java, Kotlin, Groovy, Scala
    08:25 Dart, JavaScript, TypeScript
    10:31 Python, Julia, Ruby
    11:42 Smalltalk
    14:00 PHP, Perl, BASH, AWK
    17:28 C#, Visual Basic .NET, F#, Haskell, Elixir
    18:52 Go, C, C++, Rust, D
    21:12 Matlab, R
    22:21 Swift, Objective-C, Fortran
    23:46 Scheme, Lisp, Tcl, Lua
    26:58 Algol, Pascal, Ada
    29:20 COBOL
    30:36 Favorites
    #programming

Komentáře • 74

  • @SerifSundown
    @SerifSundown  Před měsícem

    "What would you want to use if you had to rebuild every web, desktop, mobile, and server app from scratch with no help from third-party libraries, using only one language for everything, and assuming you don't really care about performance?" That's the question the rank tries to answer, because that's the only way a rank even makes sense. If you care performance, then the rank is asm > C > everything else and it depends on your exact use case. If you include third-party libraries or community support, then you're ranking those things more than the languages -- and those things are based on popularity, which is self-reinforcing (zipfian) and therefore meaningless. If you rate every language only for how good it is at solving the kind of problem you would actually use it for, then every language is S-tier. If you could only use one language for literally every kind of project then you're stuck with assembly. So instead we ask "What if we had our necessary infrastructure in asm/C, but for everything else all we had was one given language? How happy are we?"

    • @curio78
      @curio78 Před 6 dny

      Go has no business existing when D-Lang is already present. D is only one of the 3 along with C++/C# that can be considered feature complete.

  • @GavrielAbrahams-mh5bs
    @GavrielAbrahams-mh5bs Před měsícem +2

    Mate thanks for taking the time. I really appreciate it. Your analysis is the best that I have seen so far. Never seen a language tier list that was based on facts. Until now.

  • @fireninja8250
    @fireninja8250 Před 13 dny

    This is the video type I've been craving. Actual work being done to objectively rank languages, multiple tier lists, examples of code AND you built the same application in every language, giving an understanding of the quirks and how easy or verbose each language is. Extra bonus for thinking through what a beginner would feel, and giving sane language reccomendations. Gold star

  • @linuxgaminginfullhd60fps10

    Let me shed some light on why Lua exists. It was correctly mentioned that it has some game related stuff, but it is also used in automotive for simulating environments where a vehicle software and hardware are tested. There are some very powerful and comprehensive Lua frameworks out there that are used to make sure that your car won't suddenly refuse to cooperate.

  • @revengerwizard
    @revengerwizard Před měsícem +4

    Very nice and cool video about programming languages, especially the historical tips put in!
    Side note: good luck embedding Python into anything, it's 10 times larger and difficult to embed than Lua.

  • @Keldarise
    @Keldarise Před 24 dny +5

    Love your list!
    However, I just can't agree with you about C# - I find it's syntax to be god-tier. Especially in newer versions of C#.
    Yes, I can admit that I am very biased towards C# as it was the first language I "properly" learned as part of a dream of creating games, and is currently the language I work most with.
    Now, I write API's, websites with Blazor, apps for android, windows and Linux etc.
    The performance is amazing, the speed of which I can go from a new project to a fully functional one is great. While C# have for a long period of it's life been tied to the Windows environment, it's not really true anymore. It's super flexible, regardless of what platform you develop to.
    My biggest hurdle with C# was, especially when writing apps with framework like WPF and Avalonia, was the need to also learn XAML, which to be fair, after gotten over that horribly steep learning curve of XAML, I prefer it over HTML/CSS.

    • @AlFasGD
      @AlFasGD Před 3 dny

      Instant dislike by me. Another half-assed N languages comparison

  • @blaisepascal3905
    @blaisepascal3905 Před měsícem +4

    Thank you for showing the Zpif's law! A lot of people do not understand the popularity bias in many fields.

    • @SerifSundown
      @SerifSundown  Před měsícem +2

      My pleasure. I learned Zipf from Vsauce years ago (czcams.com/video/fCn8zs912OE/video.html). I assumed it was probably a good explanation for language popularity, but was a bit surprised by just *how* good. You'd think Computer "Scientists" would be less biased... but nope!

  • @a4e69636b
    @a4e69636b Před měsícem +4

    It made me laugh when you censored the Objective-c code. Great video.

  • @UdacznikDuchowy
    @UdacznikDuchowy Před 12 dny +2

    Where is Wolfram Language?

  • @CallousCoder
    @CallousCoder Před 2 měsíci +2

    Best languages are C, Zig, Go and C++ and of course assembly. Forth and Perl are really nice too. I love small languages (C++ is the odd one out in my list). The rest are small and pretty fast.

  • @Brian-ro7st
    @Brian-ro7st Před měsícem +5

    No Clojure is a crime

    • @SerifSundown
      @SerifSundown  Před 19 dny +1

      I'd probably have put it between Scheme and Tcl. As I stated in the video, I prefer Tcl to *all* Lisps. I chose Scheme to be the representative for the many dialects of Lisp because it's the one I deemed the most serious and worth using. It seems to me that the main reason Lisp is not more popular is because Lisp programmers would always rather invent a new dialect rather than just try to work with the one they've already got, and so no single dialect has ever been able to get a critical market share. You've not only got at least a dozen popular dialects in circulation, but we've seen multiple attempts at creating a "standard dialect" to unify all the conflicting standards. My impression is that Lisp is the preferred language of language nerds who write toy projects that nobody uses, and Clojure is a perfect example. Search GitHub, and you'll see most new Lisp projects are written in Clojure. However, if you look at *recently updated* projects on GitHub, you see more Scheme than anything else. That's because Scheme seems to be the Lisp dialect preferred by people who write real projects that actually get used and maintained for years. And that's why it made the list over Clojure and the other dialects.

  • @mage3690
    @mage3690 Před 18 dny

    Why is Lua? Lua is basically Embedded Python for when you want to learn a language that was designed to be Embedded Python in its inception, rather than adapted for that purpose. Which is why it's commonly used in Minecraft and Roblox mods: you don't have to ship a massive runtime and potentially lots of standard libraries with your mod, but you get a good enough general purpose scripting language that also has 1-based indexing. I hate 1-based indexing now, but I will admit that it would've made "absolute programming noob" me _very_ happy. Also, Brazil mentioned. Brazil has a very large population. When India and China invent a good enough language that can sit in a niche like game modding (or even the entire game, see Hades I and II), those languages will also become permanent fixtures of the language landscape.

  • @gavintillman1884
    @gavintillman1884 Před 26 dny

    Does the advent of Mojo change things?

  • @timog7358
    @timog7358 Před měsícem +1

    great video

  • @SerifSundown
    @SerifSundown  Před 4 měsíci +7

    I gather that this video's "gravest injustice" is my C# ranking, so I'll elaborate. When you consider *all* categories of programming, non-Microsoft operating systems are very common, so Java being even slightly more cross-platform matters a great deal. For example, if you just wanted to make a GUI application that works on both Windows and Linux, with .NET you need a third-party framework like GTK#, whereas Java developers would use the built-in Swing libraries. For *general* programming, it's very difficult for C#'s superior syntax to overcome Java's systemic advantage, particularly when you remember that the JVM also supports Kotlin, Groovy, and Scala, *all of which* have better syntax than C#. The only place C# is clearly superior to Java is in video game development, because desktop gaming has been Microsoft-dominated for decades and so cross-platform support is irrelevant for that category. But my ranking considers *all* programming categories, not just the one that C# is the best at.
    And yes, I rate Visual Basic higher than C#. Because it's the *same* language -- same platform, same features, same classes and methods, same implementation -- with more readable syntax. Visual Basic may be a meme, but there's never been an objective basis for saying it was a bad language. After all, much of it was stolen from the incredibly popular Pascal language. The reason developers don't like it is because it was always a language primarily marketed to, and used by, business users with no programming experience. So, professional developers would get recruited to overhaul VB projects written by amateurs, the code would be garbage and super hard to work with, and developers came to believe it was the fault of the *language* instead of the people using the language.

    • @hid6347
      @hid6347 Před měsícem +1

      actually, we got MAUI which is cross platform and is by microsoft, i think on macos, windows, android, linux and ios. tho thats shitty, so ppl just use avalonia now

    • @RonnieBanerjee007
      @RonnieBanerjee007 Před měsícem

      First of all great list, I agree with most of your ranking and would have ranked them as such myself, but the C# ranking was definitely unjustified, its a pretty beautiful language. Anyway, I think This clarification of yours defies your Kotlin and Dart ranking justifications then. C# can be made much less verbose than Java and more akin to Kotlin and Dart, there's much less boilerplate that you have to write in C# since a while now, you can actually just create a c# console project and write Console.WriteLine("hello!"); and it'll print, no entrypoint needs to be defined, no classes needs to be named, no using statements on top. it's got things like the using() statement, which makes GC more efficient. On top of that it's on more platforms than either of Kotlin or Dart. Not to mention C++ and C are the ultimate multiplatform languages there and they sit beneath AWK.

    • @SerifSundown
      @SerifSundown  Před měsícem

      @@hid6347 For the record, MAUI does not support Linux (which is why I mentioned it). And given the track record of first-party vs third-party GUI frameworks for Windows, I'm not surprised people would avoid using MAUI anyway.

    • @SerifSundown
      @SerifSundown  Před měsícem

      @@RonnieBanerjee007 Thanks for the info. I added a comment on the methodology behind my ranking. I actually used a fairly complicated scoring system that makes it hard to explain why each language appears exactly where it does. The above C# explanation was my attempt to describe the score components that put C# as low as it ended up, but those considerations don't necessarily explain the position of other languages. I know it's confusing. Don't take it too seriously 🙃.

    • @hid6347
      @hid6347 Před měsícem

      @@SerifSundown oh yea i forgot about that mb, but anyways ppl just dont use maui

  • @enzo7698
    @enzo7698 Před 29 dny +1

    Lua could never be replaced by Python. The idea behind PUC was to make a language that was fast, light and different from the famous "like c". The idea of tables also has a lot of potential. Compare the 500kbs package of the library package compared to the python ones 😂😂

  • @SerifSundown
    @SerifSundown  Před měsícem +1

    Methodology: For the purpose of ranking, each language was assigned a score that was the average of a "syntax score" and a "utility score". While the utility score is more important, the syntax score is more objective. That's why I used their simple average.
    The syntax score was based on the test program (1:45) written for each language. The raw syntax score is the sum of three negative metrics: the program character count excluding white space, the number of functions and types I had to define that weren't provided by the language (but are available in other languages), and the median similarity ratio of all pairs of program lines, as reported by Python's SequenceMatcher. Therefore, the syntax score captures language power (productivity), verbosity (writeability), and ambiguity (readability). You can see the language rank based solely on this syntax score at 3:48.
    The utility score is a weighted sum of scores in the eight programming categories mentioned in the video (automation, front-end, back-end, desktop, ...). The category weights were based on the proportion of respondents claiming to work in that programming category in the 2022 stack overflow developer survey. For each category, a language's score is based on its relative rank versus other languages in suitability for that kind of programming. These relative ranks are my subjective opinion, based on a combination of what is popularly believed about the languages by developers, characteristics of the language such as typing system and whether it is interpreted or compiled, and what functionality is provided by the first-party libraries.
    Notably, even slightly changing the ranking in a single programming category tends to cause 4-5 languages to move up or down a rank in the final result! This is why I warned against taking the rank too seriously. You may as well interpret the rank with a +/- 1 margin of error, so that C# is quite possibly an A-tier language, and Java is quite possibly a B-tier language.

  • @eHcOZaX
    @eHcOZaX Před měsícem +4

    Some of your comments are a bit shallow.
    For example, even though swift's syntax is similar to kotlin's, there's some fundamental differences.
    Swift supports value semantics with structs, and reference semantics with classes, while koltin (because of the jvm) only deals with references.
    Const correctness of standard library data structures in swift is better than in kotlin. That's why in kotlin you have List and MutableList, while in swift you only have a List, and its mutability is defined by the declaration operator (var/let). Hence, in koltin as you can cast const away with (as MutableList) but in swift it's not possible without copying the list.
    Swift also supports manual memory management, c/c++ interoperability and many other interesting features that also makes it interesting.
    It's true that there's Kotlin multiplatform, but swift is open source and there's active development on making it support multiple platforms.
    ----
    On Lua,
    Lua's advantage over python is that its interpreter is much smaller, it's like a number of magnitude smaller, (~100 kb lua, ~10 mb python) which makes imbedding it in other software very easy, (roblox, neovim).
    That being said, I would never try to develop a web server with it, but I develop neovim plugins with it and I like the minimal syntax.
    ----
    I don't understand how you put php and perl above rust and c++. Php is just a mess of a language with a lot of inconsistencies. It was good at one thing (rendering html) which I think became obsolete. Making a webserver in python with Flask/FastApi is much more convenient than php now.
    ----
    I can't put ruby and python at the same level, they're very similar but with somewhat opposite philosophies, and I think python won, which makes ruby obsolete.

    • @eHcOZaX
      @eHcOZaX Před 25 dny

      ​@@andym2723 yeah php is still surviving thanks to wordpress, but its popularity is dwindling. I feel we're getting newer frameworks for new developers and over time, people starting new projects won't use wordpress and start adopting the new frameworks, and wordpress will stay for legacy projects. currently, I feel that wordpress and its plugin ecosystem is a pain in the ass.

  • @ruturajzadbuke9646
    @ruturajzadbuke9646 Před měsícem

    This was a quality video. So much information per minute. I hope the channel goes big soon.

  • @DhampirKid
    @DhampirKid Před měsícem

    in brazil lua is used with NCL4 for TV applications

  • @MykolajGuzej
    @MykolajGuzej Před 11 dny

    🤔🤔🤔 The Zig is missing... I'd like to know, where and with what argumentation it'd be in this rank 😁

    • @FelipeV3444
      @FelipeV3444 Před 2 dny

      I was thinking the same, I assume he hasn't tried Zig (at least not enough) to include it?

  • @BJ-ze8hn
    @BJ-ze8hn Před 22 dny

    Interesting and thoughtful summary. Even though I'm LAMP stack, I wouldn't go all in on learning PHP first in 2024 due to its continued general decline in usage. But it's sad that PHP still catches so much hate because its current version (PHP 8) is vastly improved over its old PHP5 days in terms of performance, better typing, overall OOP support, etc. Considering the hate the video creator had for it, that PHP earned an A is a testament to the relative objectivity of the video ratings.

  • @nunograca2779
    @nunograca2779 Před 14 dny

    PHP at the same level of Go and ranked above of Rust, C#? That's ok...

  • @brunodelpiero
    @brunodelpiero Před 3 dny

    Ty

  • @Megalcristo2
    @Megalcristo2 Před 23 dny

    That C++ comparison is unfair, this is how I would write it in modern C++:
    template
    requires std::convertible_to
    bool found_dup_at_abbr_len(R&& words, std::size_t const abbr_len) {
    auto const unique { words
    | rv::transform([abbr_len](auto const& r){ return std::string_view{r | rv::take(abbr_len)}; })
    | rg::to() };
    return unique.size() < words.size();
    }
    You can delete the template stuff and use a std::vector to make the comparison more fair

    • @mage3690
      @mage3690 Před 18 dny

      "Your C++ is bad, here's how to write C++ correctly." -every C++ dev ever.
      I think it's great, personally -- only C++ allows you to do anything in any of a thousand ways, and that's beautiful to me. It's also one of the reasons I don't use C++, but it's beautiful nevertheless.

    • @Michallote
      @Michallote Před 11 dny

      Yeah still looks awful

  • @mlv60
    @mlv60 Před 22 dny

    I sub so fast to channels like this

  • @Radehx
    @Radehx Před 20 dny

    Lua is S tier because it's used to config Neovim.

  • @rallisf1
    @rallisf1 Před měsícem

    Dart is awful for web development. It is ok for backend staff, although Go is more suitable, but front-end in Dart with Flutter really sucks. It doesn't produce HTML, everything is in a . Zero SEO, and you can't really use any external javascript.

  • @rallisf1
    @rallisf1 Před měsícem

    (meme) We are not the same: You say "MatLab is expressive" I hear "Matlab is expensive".

  • @iamjimgroth
    @iamjimgroth Před rokem +22

    C# is the best programming language. Source: me.

    • @GavrielAbrahams-mh5bs
      @GavrielAbrahams-mh5bs Před měsícem +4

      Any language is awesome if you're good at it. The problem with c# is not specialized in many aspects like front end JavaScript, back end PHP, readability Python. Readable compiled Kotlin which is as fast as Java and has access to all Java libraries and is backed by android development is better any day of the week.

    • @iamjimgroth
      @iamjimgroth Před měsícem +6

      @@GavrielAbrahams-mh5bs You are wrong. Source: still just me. 😁

    • @kodidrive3033
      @kodidrive3033 Před měsícem

      @@GavrielAbrahams-mh5bs You are quite right. I would add that Python dominates the Data Science and C++ high performance applications ( games, algotrading, etc.) just as PHP is King of the backend and Kotlin Android Development.

  • @SerifSundown
    @SerifSundown  Před 19 dny

    i use vim btw

  • @Special1122
    @Special1122 Před 23 dny +2

    when I see Java above C# I can't help but think that you didn't really dive deep into those languages

  • @oilybrakes
    @oilybrakes Před měsícem +1

    I've seen you put JS and C into the same category, so I know you are a pro 😂

  • @user-fq2ty
    @user-fq2ty Před rokem +3

    But Ruby has no jobs :/

  • @pmcgee003
    @pmcgee003 Před měsícem +1

    This man just described ... C ... as more expressive and readable than Pascal. 😢
    C. The language written by seagulls walking in ink and then across some paper ... 😅

    • @fireninja8250
      @fireninja8250 Před 13 dny

      I mean, it is pretty readable. Most programming languages borrow syntax or concepts from C so they must have done something right

  • @Brian-ro7st
    @Brian-ro7st Před měsícem

    Rating scheme as C on “expressivity and readability” invalidates this nature list for me.

    • @Michallote
      @Michallote Před 11 dny

      You should have seen how it was done prior to it

  • @Coolkid245
    @Coolkid245 Před měsícem +1

    haskell is by far the best

  • @raphaelamorim
    @raphaelamorim Před 19 dny

    I don't know why lua exists? Python is simply terrible, heavy and slow compared to lua as a scripting language.

  • @drxyd
    @drxyd Před měsícem

    All of these languages suck, either the type systems aren't expressive enough or they don't give you enough low level control. All I want for Christmas is assembly with fully dependent types.

  • @Dez-E
    @Dez-E Před 3 dny

    python? yuck

  • @vitalyl1327
    @vitalyl1327 Před 14 dny

    Sapir-Whorf works. People who think Python is an adequate language are so utterly broken that there is zero hope they will ever become decent engineers.

    • @fireninja8250
      @fireninja8250 Před 13 dny

      If you need to sort 100 files in a directory you can do it in Python in like 10 lines. Simple tasks that require "just get it done" are fine for Python. I'm a Rust user and I can say it's a hassle to get something working because of all the rules and whatnot, but it pays greatly for performance which is why I'm using it.

    • @vitalyl1327
      @vitalyl1327 Před 13 dny

      @@fireninja8250 or you can do it in one line in bash. Use the right tool for the task, always. And Python is almost never a right tool.

    • @Michallote
      @Michallote Před 11 dny +1

      I think Python has everything it needs to make it successful. Most projects can be prototyped in Python to a good enough degree to see if they are viable products, when it fails at least you didn't spend ungodly amounts of time developing it in rust for example. And when it succeeds you can extract performance critical parts into any language you want (C or Rust mainly) and still embed them into Python transparently.
      Is like Python is top tier glue haha

    • @vitalyl1327
      @vitalyl1327 Před 10 dny

      @@Michallote if most projects you can think about can be prototyped by glueing existing things together, you have a very limited imagination.
      And even as a glue, Python is an utter trash. Linguistic relativism is real, people who think Python is an adequate language were mutilated by Python beyond any hope.
      And it is utterly hilarious how Python-mutilated brains think that Python is somehow "productive". What a funny delusion!

    • @vitalyl1327
      @vitalyl1327 Před 10 dny

      @@fireninja8250 and why would you write 10 lines iin this abominable Python for something that can be done in one line of bash or Perl?