C. It's the foundation of today's software: operating systems, databases, embedded systems -- all mostly written, even in 2021, in C.
Lisp. Doesn't really matter which one. It's just a different way of approaching problems.
Python. It's hard to beat for translating an idea into running code.
JavaScript. Ok, it might not be the "best" language, but it is deployed to literally billions of people and you should know how to put your software in front of them.
After these, you can pick up other things as required. C++, C#, Java, Rust, Go, Swift, whatever. Try something new every few years.
* comparative programming languages
* programming language implementation
what you need to know is not a large number of programming languages but rather the content of those courses. That is, that old versions of FORTRAN didn't need a stack (it's all static), C has a stack, languages like ML don't need a stack (it can be all on the heap.) What was special about LISP and why it isn't so special as it was, etc.
I also don't see much of a point in learning languages that you have no expectation of using routinely. The knowledge will invariably atrophy and the time will have largely been wasted. The counterargument is that some of it will be retained unconsciously and influence how you think. Personally, I find that argument to be exceedingly frail.
So pick a couple and then let any future language learning efforts be directed by your immediate needs. It is in any case not hard to learn most languages once you have a good foundation.
Languages in common use today for most software engineers in FAANG/startups: Javascript/Typescript, Java, Python, Golang, Rust
For mobile: Swift, Kotlin
For embedded/performance: C, C++
For frontend: HTML, CSS, TS/JS
I would also recommend having a good grasp of Bash (& shell utilities) and SQL.
prolog
smalltalk
java
c++
haskell
turbo pascal
ada
I don't know man, what do you mean by "should know"? I don't think there's any such list in a universal sense. The languages one "should" know are simply the ones that let you achieve your goals. If you're building embedded systems firmware, maybe that's assembler or C. If you're building backend API's maybe it's Java or Go. If you're building control software for a rocket, maybe it's Ada. For a video game graphics engine, possibly C++. For a web-based social media app, probably Javascript. For weather forecasting / simulation / high energy physics / etc., you might want FORTRAN. For maintaining 40 year old banking applications on mainframe, probably COBOL or PL/1. If you're writing BBS door games, you probably want Turbo Pascal. It's really pretty context dependent.
Excel - You should understand how to work with data flows
Python - A good REPL with a huge library available almost everywhere.
Forth - Concatenative programming offers a lot of power, by trading off nicely organized parameter/return values.
LISP - the opposite of forth, with more power because you can trade your parenthesis keys for huge amounts of power properly organizing data Almost any huge system will eventually implement most of LISP, but badly. Why not learn the right way to do it?
An old school GUI builder like VB6 or Delphi 3, where you can build a GUI and then wire up a few lines of code to make it actually do everything.
GIT - You need to learn source control, command line or GUI doesn't really matter much. Anything is better than a stack of .ZIP files containing everything You should learn enough to be able to work on something, make a commit, push it to your github (or equivalent) account, and work the reverse of that, with a merge local.
GNU Radio - You should learn how to process data in real time, understand IQ data, negative frequencies and the rest. Fun fact, you can take data from your microphone, and output it to your speakers, with all the DSP you want in between.
Mathematica/Octave - You should learn how to push data around, perhaps in a class about machine learning, or DSP.
SQL - You should learn enough to know how to create a table, query it, etc. by hand, or via generating code in some host language.
Regular Expressions - You should learn how pattern matching can be used to do a huge amount of things that otherwise require pages of code.
HTML/CSS/Javascript - Use your favorite text editor to build a few pages, navigate, etc. Just have a good idea of what is under the surface.
NAND2Tetris - If possible, work your way through the course, you'll have a much better idea of the big picture of computing.
The ones that your community is using.
The ones you enjoy.