For beginners, there are so many programming languages, how do you choose one? Here are 18 options for grade schoolers, older students, and adults.
Links (60+) are at bottom of this article to avoid distracting readers.
How to choose your first programming language is a challenge. There are so many languages. Where do you begin? How do you pick the best programming language for your needs?
There are at least three types of programming languages:
- Image or Picture Languages — these languages teach computer science and programming concepts through the manipulation of images. Turtle Art is a great example.
- Block or Bubble Languages — these languages use blocks and sometimes actual code to perform tasks, for example, spinning an image or making an image follow a specified route. Scratch, Tynker, and several other languages are examples. These languages bridge the gap between picture languages and traditional languages.
It is rare for first-time coders to pick a programming language the way you might pick a video game from a wall of many video games. Instead, coders learn their first language in several possible ways:
- In grade school, they’re exposed to Turtle Art, Scratch, Tynker, or similar language to learn basic concepts and have some fun playing with coding.
- They finally get a computer science or programming class in middle or high school. Often this means VBScript is the first formal language they learn.
- They want to modify a favorite game by coding a mod. So they do their research, and learn what they need to know by trial and error. Sometimes this means Lua is their first language; however, it could be another game-specific language like Papyrus for Skyrim.
Kids Can Learn Real Programming Languages
While the progression from picture languages (Turtle Art) to bubble languages (Scratch, Tynker, Hopscotch) to “real” programming languages appears to be the norm for students, people like Simon Haughton believe very young kids can learn Python if it is taught based on clearly understood concepts. He's written a PDF booklet, A children’s guide to Python programming, that teaches Python through simple concepts using free or near free Python emulator applications easily available for smart phones and tablets.
The evolution from simple picture languages to adult languages should become shorter. Students, teachers, and individuals will be able to choose where to start based upon comfort level. How to choose your first programming language will become much easier, despite many options.
Where You Start Might Not Matter
It also is important to note the language you begin with is not critical. How you choose your first programming language is more important.
For example, your first programming language should be easy enough for you to understand, have plenty of places to learn the basics, and have a strong online support community where you can ask questions and later on help others learn.
If you are in high school, picking a commonly used language might be a good strategy, or a less common but critical language. For most students, however, how they choose a first programming language should not be affected by whether or not jobs exist. It’s more important to learn programming concepts, find hands on support, and learn at their own pace.
The best programmers also have experience with enough languages to understand the common parts of all programming languages. They understand how languages really work. And they understand their limitations. Learning three or four programming languages by college can help anyone be a better programmer. Flexibility based on experience counts in programming.
It’s also true many companies use multiple languages based on the strengths of each language and the problem solved. Some languages work great for scripting small tasks but not for managing the replication of data across multiple machines.
Learn How to Get Help
What language first-time coders learn first is less important than learning how to get help and how to find proficient coders to help them. Fortunately, there are a number of great reference books, easily found in book stores and libraries, and forums like StackExchange, as well as forums for specific projects like WordPress or Joomla. If you post a question that shows you've tried, and describe what you’ve tried, people are more than willing to help with code and ideas. You also learn coding by helping other beginners on these forums.
Today first-time coders also can learn languages online. However, these courses only take you so far. Beginning coders need to find support to help them solve problems as they work with the language once they complete a course or tutorial. Support can include books, online forums, tutorials, and videos. The easiest way to find support is online through posting questions on forums and looking for open source projects written in the language where you can find support and participate.
There is a hurdle between learning a language for the first time and proficiency. Jumping that hurdle is key to being a happy coder. For example, professional coders have enough proficiency to overcome common problems, even to solve complex first-time problems, because they have peers they work with, reference books, online references, and online forums. They also work on projects which keep their skills sharp.
Students also need to find projects and other ways to keep going as coders. This could include participating in open source projects or working with friends and other students. Coder Dojo and similar groups also help bridge the gap between simply learning a language and using the language on a regular basis.
More Choices for Your First Programming Language
Beyond the issue of how to migrate from learning your first language to proficiency in that language, there are many languages to consider when you choose your first programming language. If you have a choice of what language to learn first, and you don't have a desire to mod your favorite game or reverse engineer a neat effect you saw on a web page, these languages are worth a look:
- PHP is used in a number of open source projects like Drupal, Joomla, and WordPress with extensive documentation, forums, online communities, and other support. First-time coders can find ways to use their PHP skills over time to gain proficiency. Even though some professional coders look down on PHP, it's a good first language. Best case, you'll grow as a coder and know first hand any limitations of PHP, instead of simply repeating what others might say.
- Python is used by Google and other technically-oriented coding shops. It has excellent documentation, forums, books, and other help. Unlike PHP, where you code scripts then run them by calling up the scripts in a web browser, Python also works from a command line, especially for learning the language. I find a lot of Python coders are university trained coders and have highly structured ways they think about coding problems and solutions. That's actually good if you're a first time coder with plans to take high school and university classes in software programming.
- Lua is a simple tightly written language used in machines, games, and a wide range of applications. Most people encounter Lua while trying to mod Minecraft or other games. And Lua is available for direct use in Codea, the iPad app that is an excellent transition from drag and drop bubble languages like Scratch to actual coding. Lua syntax, the way the language is written, is clean like Python code, which can make the code easier to read than PHP, which uses curly braces and semi-colons like C, .NET, and other languages.
Beyond these three, first-time coders looking to learn from scratch might also look at these languages:
- Scala is often taught in first year university programming classes because it is a tight but powerful language. This language is ideally suited for financial software, as well as academic and research software. Scala is designed to be smaller and faster than comparable applications coded in Java. Ideally you should know some Java before tackling Scala, as the latter is based somewhat on Java.
- Clojure also is a language with an avid community. It is a dialect of the Lisp language, which goes back to 1958, the second oldest programming language. However, Clojure is a modern language to evolve the spirit of Lisp to solve common problems, for example, decrease code execution times, improve portability across operating systems, and handle multi-threading. It is designed to be a pragmatic general purpose language.
- In addition, Haskell and Go are two other languages with strong communities, documentation, and online editors where you can try out the language. This makes it fairly easy to read up about each language to see if it is useful and interests you.
Begin Your Search With Your Needs in Mind
If you are a first-time coder with the luxury of picking your language, start by figuring out what you would like to do with coding. If you want to modify favorite games, research the programming language used for their mods, then learn the language. Look for support in online forums, documentation, and books. If you don't care what you do with coding, look at Github projects to see if there are projects you'd like to use, learn more about, and maybe contribute. Or look at the languages described above until you find a fit.
The one guarantee of failure to learn coding is a poor fit between purpose and language. If you don't have a reason to learn coding, the inevitable struggle to learn a language likely will lead you to give up. Be sure your first step is to figure out how you want to use your coding skills. Let your purpose drive your choice of first language.
In short, begin with what feels comfortable to you.
How to Choose Your First Programming Language?
With two or three possible languages in mind, research what kinds of support is available online. Research how the language is used in the real world. Research where you can get help learning each language. For example, knowing someone who can help answer questions when you get stuck might work best if you want to learn on your own or take online classes. All programming languages have nuances learned over time. They’re passed on person to person.
If you cannot find a programmer to help from time to time, also look into local Meetup groups and check them out. While coding is a solitary activity, meetups and having someone to answer questions are very important to your development as a programmer.
And one last point: it’s not enough to learn to code. This magazine exists to explore the vast range of ideas and issues that go into technology, starting with coding but expanding to:
- Basics of programming and where to learn more
- Problem solving and collaboration
- Mathematical foundations of computing and computer science
- Computational thinking
- Recognizing and selecting computer devices
- Community, global, and ethical impacts of technology
Don’t lose sight of the big picture: coding is simply one way to start to learn about technology, its uses, and its impacts on you, me, and everyone else. That’s true whether you become a programmer or take on a different technical role or find interesting work outside of technology.
Whatever language you choose for your first programming language, good luck!
A Children’s Guide to Python Programming (Simon Haughton)
TeCoEd Python Resources
Scripting language to code modifications to the Skyrim, Fallout, and other Bethesda games.
Which Language Should You Learn First?
Two excellent articles on the topic, from O’Reilly Publishing’s programming blog.
Picking a Programming Language
This page lists places where you can go to learn about coding, practice coding, and have fun meeting others learning to code.
Also In The August 2013 Issue
Troy Hunt is a software architect and Microsoft Most Valued Professional (MVP) focusing on security concepts and process improvement in a Fortune 50 company. He's based in Australia.
If you use a password you created that is less than eight characters, your password is vulnerable to hacking. Here are three ways to create and use secure passwords online.
Coding securely doesn't have to kill the joy of programming. In fact, learning how to code securely provides insights into languages and computing.
How to code an HTML email like the ones you open every day turns out to be an offbeat software coding challenge.
How to tell if a web page is secure is one of the most basic yet least obvious ways to protect your data online.
One key computing skill is the ability to use command line interface (CLI) software to enter commands to control a computer. Here are some options.
Lua is a comparatively simple programming language used in a wide range of places, from digital TVs to video games to phone applications. It's also designed to be simple to use and lightweight.
Here is how three programming languages handle a common problem: how do you organize and keep track of useful data?
Some of the most common commands you'll need for a command line interface (CLI), in a Linux command list.
Must read stories about computer science, software programming, and technology for September 2013.
Links from the bottom of all the October 2013 articles, collected in one place for you to print, share, or bookmark.
Here is a deceptively simple math puzzle at least 1200 years old.