Please ELI5, I lost track. I used to learn a bit of C and a bit of Python a few years ago but never really went deeper into programming. And now suddenly it seems that a host of new programming languages have appeared and that stuff that used to work fine in whatever old language it was in is now rewritten in a new language.

How do languages like Golang and Rust differ from older languages (these two have probably been around a while but for me they feel 'new')? Why are we coming up with new languages all the time? Besides those two, what other languages are there worth knowing about? Is it worth learning them? Are they going to come up with yet another one next week? (I know, many questions, an invitation to infodump I guess ...)

EDIT: A deep reaching, long and detailed history of some programming languages, for the future passerby:

https://www.makonea.com/en-US/blog/programming-languages-are-authoring-tools-for-platforms

you are viewing a single comment's thread
view the rest of the comments
[–] 5 points 1 month ago* (1 child)

A lot of the time, a new language is created to make one particularly difficult thing easy.

For Go, that one thing was concurrency. You CAN do concurrency in C or Python or whatever, but it's not really built into the language. It's hard to do right and easy to do dangerously wrong.

For Rust, that one thing was memory safety. C leaves it all up to you, so it's very easy to make mistakes that lead to memory leaks, crashes, or security vulnerabilities.

If you program in any language for a significant amount of time, you're bound to find a few things that you do a million times that you wish were easier to do right and harder to do wrong. Some people see those problems and say "I can make something better".

  • source
  • hideshow 2 child comments
  • [–] 2 points 1 month ago

    But if a language makes a particular thing easy, it also forces you to adopt a certain premise and accept the way the language solves that particular problem. This also limits you.

    Every new language wants you to accept a new premise.

    I've got a friend who rewrote parts of the C++ standard lib to optimize it for his purposes. I guess an STL isn't the same as a language, but my friend's efforts is maybe a small version of people recreating a new language to solve a problem.

  • source
  • parent