DEV Community

Discussion on: What language would you recommend for a beginner?

Collapse
 
ahferroin7 profile image
Austin S. Hemmelgarn

For absolute beginners, Python. That's kind of what it's designed for, and it's got a big standard library that includes a lot of stuff you'd otherwise have to go searching for, so at least at the beginning you don't even need to touch a package manager (and by the time you do, you should have a solid enough understanding that pip and/or venv won't be much of an issue to work with).

Others that come to mind include:

  • C. Especially for those looking at doing systems or embedded programming. It's easy to branch out from (C++, C#, Objective-C, Cilk, even Rust to a certain extent), provides a solid understanding of the true fundamentals, and it's a very marketable skill by itself. Doing well though really requires knowing how to read documentation.
  • Lua. Super-lightweight, runs on almost anything (any platform with an ANSI C implementation can run Lua), relatively easy to learn, and remarkably useful. Package management is not bad, but not great either, and you kind of need to use it to do many useful things in standalone Lua. The downside is that Lua has some quirks that are a bit odd by most standards (like arrays actually being tables under the hood).
  • Ruby. I have little to no experience with it myself, but that's mostly due to not needing any so far. What I do know of it indicates that it's a relatively good language for beginners. My only complaint given my limited experience with it is that some of the naming is a bit... odd.

For specific types of programming:

  • Web Development: JS. Syntactically and semantically it's not very beginner friendly, but package management is wonderfully simple, you don't need any special IDE, and you don't need to worry about portability anywhere near as much as with many other languages.
  • Game development: C#. Essentially, just start using Unity directly. There are all kinds of other game engines and languages they use, but C# plus Unity is one of the easiest combinations out there for learning.

Ones I'd say for beginners to avoid:

  • BASIC. Encourages lots of bad habits, not particularly portable, not particularly salable, and has very limited utility in the modern world.
  • Java. Encourages lots of bad habits and has a number of performance and efficiency issues.
  • Ada. Not a bad language, but seriously over-complicates many things in ways that are challenging even for some experienced developers to understand.
  • Almost any pure FP language (Haskell, Erlang, Elixir, ML etc). FP is seriously hard for a lot of people, and traditional procedural paradigms are often challenging enough for new programmers.