What’s the best programming language for a beginner to start with?
It seems like a simple question, and one that lots of aspiring developers ask themselves, but it’s actually somewhat loaded. Are you asking because you want to get a job as a developer? Because you want to get in on the mobile app craze? Because you’ve been tasked with improving your company’s web offerings, even though you’re not a developer? Or just out of personal interest, for the fun of it?
I fell into the “for the fun of it” category when I first learned at the age of 11, by taking a weekend class in BASIC at a local private school, on a good old TRS-80 Model III. Why BASIC? Because that was pretty much the only beginner language used at the time, if you were too cool for Logo. In high school, I learned BASIC again before moving on to Pascal. I never wrote anything terribly advanced in either language, but the experience gave me a good basic grounding in understanding how programming languages work—procedural ones, anyway.
For the purposes of this discussion, I’m going to try to consider the question in a vacuum. I’ll assume the goal is “I want to know more about how to write code in a current language.” If you need to know a language for a specific work task, then the choice is probably made for you already.
I believe a good beginning programming language should have the following characteristics:
- A relatively forgiving syntax. This isn’t to say that a starter language should encourage bad habits. However, a language shouldn’t require developers to master the debugger before they see their first running application.
- Immediately visible results. For a novice programmer, writing simple starter applications, immediately getting to see what you wrote translate into some kind of results on your screen is the best way to keep interest high. If you need to mess around with a bunch of different includes or libraries before you get to see something, that interest will wane.
- A lightweight or non-existent IDE. Again, for a novice programmer, the tools shouldn’t get in the way of seeing the results. If you have to spend time installing or configuring an IDE, you’re not coding.