The one most relevant to what you want to be doing.
It's up to you. Each has its good and bad sides, and not everyone likes to express ideas in the same way.
Language is a tool to express ideas, programming languages are no different. And like with usual spoken languages, it becomes easier and easier to learn new ones after the first.
There are very few programmers who can only write in one programming language.
Don't stress too much about the choice, you can switch later if you think something else suits you better, it won't go to waste either way
If you absolutely have zero clue, 3 of the more usual starting languages are Python, Javascript and C
Languages in this page are listed in alphabetical order
Hopefully this is useful to teachers as well as a resource to decide what language they want to keep their course in
The lingua franca of programming languages, your toaster can probably run software built with C.
Helps you understand what your computer hardware actually does when you instruct it to do something
- Operating systems
- UNIX system layer
- Embedded
- Lingua franca to combine software written in other languages
- Quite simple feature set
- Common as dirt
- Need to understand nuts/bolts of what is going on
- A lot of languages are heavily inspired by C
- Extremely easy to make mistakes
- Long time to get anything flashy going (can get boring)
- Need to understand nuts/bolts of what is going on
- Not necessarily the hottest language to advertise for headhunters
- You are more interested in the journey than the end result
- You want to learn computer internals
- You are interested in systems programming
- Games (scripting Unity, XNA)
- Web applications
Started as a way to reduce perceived complexity of the C programs while keeping compatibility to C code. Has since diverged significantly from the original "C with classes"
Internet tutorials for this language are almost always total garbage and actively harmful, so requires either a teacher or a good book and a cabin without Internet.
Protip: do not try to learn C to learn C++, it's a trap and you'll need to unlearn a lot of C to be good at C++
- Automation (vehicles, industrial, flight control...)
- Autonomous machines
- Embedded
- Game engines
- Low-level or performance-critical functionality for other languages
- CAD/Graphics software
- High-frequency trading
- Useful across the board
- Allows access to nuts and bolts of the system without requiring it
- Complex
- May take a long time to get anything flashy going (can get boring)
- Absolutely requires a good teacher or really good self-discipline plus a good book
- Most online courses are decades old and don't reflect the current best practices
- You want performance
- You want to learn the nuts and bolts
- You are interested in systems programming
Quite simple language originally written with the explicit goal of teaching programming. Used in plethora of things because of its apparent simplicity
Originally created for interactive components for web pages, has spread to plethora of different uses
- web development (frontend and backend)
- the most used language, so there are many learning resources available
- dynamically typed: good for starters
- due to backwards compatibility, there are obsolete ways to write JS that should be avoided
- dynamically typed: bad for serious projects
- you want to do anything web, but aren't ready to jump into TypeScript yet