Skip to content

Latest commit

 

History

History
191 lines (151 loc) · 4.31 KB

which_language.md

File metadata and controls

191 lines (151 loc) · 4.31 KB

Which language should I choose?

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

For teachers

Hopefully this is useful to teachers as well as a resource to decide what language they want to keep their course in

C

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

Usual usage

  • Operating systems
  • UNIX system layer
  • Embedded
  • Lingua franca to combine software written in other languages

Pros

  • 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

Cons

  • 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

Recommended when

  • You are more interested in the journey than the end result
  • You want to learn computer internals
  • You are interested in systems programming

Materials

C#

Usual usage

  • Games (scripting Unity, XNA)
  • Web applications

Pros

Cons

Recommended when

Materials

C++

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++

Usual usage

  • 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

Pros

  • Useful across the board
  • Allows access to nuts and bolts of the system without requiring it

Cons

  • 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

Recommended when

  • You want performance
  • You want to learn the nuts and bolts
  • You are interested in systems programming

Materials

Python

Quite simple language originally written with the explicit goal of teaching programming. Used in plethora of things because of its apparent simplicity

Usual usage

Pros

Cons

Recommended when

Materials

Java

Usual usage

Pros

Cons

Recommended when

Materials

Javascript

Originally created for interactive components for web pages, has spread to plethora of different uses

Usual usage

  • web development (frontend and backend)

Pros

  • the most used language, so there are many learning resources available
  • dynamically typed: good for starters

Cons

  • due to backwards compatibility, there are obsolete ways to write JS that should be avoided
  • dynamically typed: bad for serious projects

Recommended when

  • you want to do anything web, but aren't ready to jump into TypeScript yet

Materials