Have you ever gone to a library with no idea what you’re looking for? That’s how I feel when I consider what has happened to the computer industry since I first became aware of it (I was five years old when my dad started teaching me BASIC on a VIC-20 he set up in my room. Can you say “doomed”? I knew you could.)
When you look at the menu of choices for technologies with which to engage as a hobbyist or professional, being proactive is a truly daunting challenge. The problem is that there are so many choices. If you’re involved in software development, you’re already past some major decisions. You’ve chosen a specialty. Or have you? When computing was still a young practice and computers occupied whole buildings or at least whole rooms, to be a computer programmer meant you were indeed a specialist. A specialist in computers. But as one could reasonably expect, the field has blossomed and expanded with the ever-increasing adoption of computers in every aspect of human society. So “computer programmer”, “software developer”, and other semi-interchangeable titles are no longer specialist titles in computing any more than “doctor” is in medicine.
How many programming languages are there? Probably over 750 that have actually been published and used widely enough for inclusion in this list. And that’s not the comprehensive list, because such a list cannot be made. People create their own languages for special applications all the time.
You can probably throw out the bulk of the options on that list when considering languages to learn. Experts such as Larry Wall and Bjarne Stroustrup sometimes recommend learning about five programming languages. I know what you’re thinking. “Five? But there are hundreds, maybe thousands! That’s hardly a drop in the bucket!” Well, if you’re not thinking it, I am. That’s what brings us here. How does one choose such a miniscule fraction of the whole array of options? There’s not even enough time in one’s life to properly survey the entire thing.
There are tools that offer some help. The Tiobe Index offers some insight as to which languages are most relevant in current industry based on Web search keyword frequencies. As of my writing this, C tops the chart. (You’ll find out that C is always somewhere near the top; most developers with whom I speak are well aware of the reasons why, so I won’t parrot them here.) Another useful tool is the GitHub language list, which ranks the languages used in active projects on GitHub. OpenHub, formerly Ohloh, follows active Free and Open Source projects and offers statistics on programming language usage.
If you’re already making more money than I do developing software (and you probably are), it’s unlikely that any of this is a serious problem for you. But for someone who is both curious about the vast landscape of computing and looking for a path through the complexity toward a goal worthy of his or her pursuit, the choices presented are boggling. There is something to be said for the adage that it’s best to start where you are with what you have. There’s also something to be said for indulging curiosity. Every once in a while, make like the Enterprise and explore strange new worlds.
Oh, and check out Brainf**k. It’s the most aptly named language I’ve ever seen.