beanz Magazine

How to Choose Your First Programming Language

pat00139 on Flickr

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.
  • “Real” Programming Languages — these languages are what adults think of as programming languages. Often obscure and inscrutable at times, programming languages can be learned step by step as people learn how to perform tasks and create applications. Python, PHP, Erlang, JavaScript, and perhaps thousands of other languages fit into this category.

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.
  • They literally start anywhere. Perhaps they install WordPress or Drupal then read the documentation and thereby learn PHP. Or they see a jQuery or JavaScript effect they like on a web page and reverse engineer the effect, then move deeper into JavaScript. Or they have a parent or other adult who programs professionally and helps them get started.

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.

Today, however, teaching little kids with Turtle Art would appear to be an ideal place to start, then evolve to Scratch (and Tynker and other bubble languages), and then on to Python, PHP, and Javascript. Many high schools already teach Visual Basic then Java. Whatever the language, success is defined as the ability to understand programming concepts and have a feel for the strengths and limitations of any language. Plus learning the language should be fun and reward hard work.

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:

  • jQuery is a library of JavaScript code used to make web browser functionality consistent across all web browsers. Created in response to poor standards-compliance of Microsoft's early web browsers, it has become a toolkit coders use to get predictable results regardless of what browser is used to view their web page and code.
  • Node.js is a JavaScript project to make it easy to create servers and networked applications.
  • JavaScript has a broader set of code possibilities than jQuery or Node.js. The language allows you to perform a wide range of interactions between the web browser and the server. For example, you can retrieve and display data without an explicit direct web page refresh. JavaScript can make a web application more like software you download and run on your computer, even as the code is served up by a remote web server.
  • 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!

Learn More

Turtle Art

http://turtleart.org/
http://wiki.sugarlabs.org/go/Activities/TurtleArt/Tutorials

Scratch

http://scratch.mit.edu/
http://info.scratch.mit.edu/Video_Tutorials

AppInventor

http://appinventor.mit.edu/
http://appinventor.mit.edu/explore/tutorials.html

Tynker

http://www.tynker.com/

Alice

http://www.alice.org/
http://www.cs.duke.edu/csed/alice/aliceInSchools/workshop08/tutorials.php

Codea

http://twolivesleft.com/Codea/
https://itunes.apple.com/us/app/codea/id439571171?mt=8

Hopscotch

http://www.gethopscotch.com/
https://itunes.apple.com/us/app/hopscotch-hd/id617098629?mt=8
http://readwrite.com/2013/04/17/hopscotch-code-ipad-app

Lua

http://en.wikipedia.org/wiki/Lua_%28programming_language%29
http://www.lua.org/
http://lua.gts-stolberg.de/en/index.php?uml=1
http://luatut.com/crash_course.html
http://stackoverflow.com/questions/tagged/lua
https://github.com/languages/Lua/most_watched

PHP

http://php.net/
https://en.wikipedia.org/wiki/PHP
http://stackoverflow.com/questions/tagged/php
http://www.w3schools.com/php/
https://github.com/languages/PHP/most_watched

Python

http://www.python.org/
http://www.python.org/doc/
http://en.wikipedia.org/wiki/Python_%28programming_language%29
https://groups.google.com/forum/#!forum/comp.lang.python
https://github.com/languages/Python/most_watched

A Children’s Guide to Python Programming (Simon Haughton)

http://www.simonhaughton.co.uk/python-programming-guide.html

TeCoEd Python Resources

http://www.tecoed.co.uk/learn-python.html

Scala

http://www.scala-lang.org/
http://en.wikipedia.org/wiki/Scala_%28programming_language%29
http://scala-forum.org/
http://stackoverflow.com/questions/tagged/scala
https://github.com/languages/Scala/most_watched

Clojure

http://clojure.org/
https://en.wikipedia.org/wiki/Clojure
https://groups.google.com/forum/#!forum/clojure
http://clojuredocs.org/
http://clojure-doc.org/
http://stackoverflow.com/questions/tagged/clojure
https://github.com/languages/Clojure/most_watched

jQuery

http://en.wikipedia.org/wiki/JQuery
http://jquery.com/
http://www.referencedesigner.com/tutorials/jquery/jq_1.php
http://www.w3schools.com/jquery/
http://stackoverflow.com/questions/tagged/jquery

Node.js

http://nodejs.org

JavaScript

https://en.wikipedia.org/wiki/JavaScript
https://developer.mozilla.org/en-US/docs/Web/JavaScript
http://referencedesigner.com/tutorials/js/js_1.php
http://yuiblog.com/crockford/
http://www.w3schools.com/js/default.asp
http://stackoverflow.com/questions/tagged/javascript
https://github.com/languages/JavaScript/most_watched

Go

http://golang.org/

Haskell

http://www.haskell.org/haskellwiki/Haskell

Papyrus

Scripting language to code modifications to the Skyrim, Fallout, and other Bethesda games.
http://www.creationkit.com/category:papyrus
http://www.cipscis.com/skyrim/tutorials/beginners.aspx
http://www.gameskyrim.com/papyrus-worth-learning-t254615.html

Which Language Should You Learn First?

Two excellent articles on the topic, from O’Reilly Publishing’s programming blog.
http://programming.oreilly.com/2013/11/which-language-should-you-learn-first.html
http://programming.oreilly.com/2014/01/to-ide-or-not-to-ide.html

Picking a Programming Language

http://www.hobbygamedev.com/beg/picking-a-programming-language/
http://www.andrewkkirk.com/2012/09/4-factors-choose-first-programming-language/

Coder Organizations

This page lists places where you can go to learn about coding, practice coding, and have fun meeting others learning to code.
https://www.kidscodecs.com/resources/organizations/

Also In The August 2013 Issue

Hello World! in 100 Programming Languages

When you learn a new programming language, one of the first programs you learn is how to code, "Hello World!" Here's the phrase in four programming languages, as well as links to 100 plus examples.

Online Guidelines for Student Blogging, Commenting, and Personal Safety

These guidelines are collected from the internet, with links for more ideas to help teachers and students.

An Interview with Patrice Gans

A university trained programmer, with a masters in computer science and a full professional career, Patrice teaches technology and computer science to kids in kindergarten through eighth grade.

Codea, Hopscotch, Tynker

These three applications make it fairly easy to learn basic software programming concepts, from block building (Hopscotch and Tynker) to the more sophisticated (but easy to understand) approach for the Codea iPad application.

How to Choose Your First Programming Language

There are so many programming languages, how do you choose one? Here are 18 options for all ages.

Owls and Super Bugs

Here are two programmers who use their coding skills to solve complex problems, from tracking endangered owls in Yosemite to tracking and isolating a deadly virus in a hospital isolation ward.

Computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty.

Learn More Links for August 2013

Links from the bottom of all the August 2013 articles, collected in one place for you to print, share, or bookmark.

Website Design Patterns

In the software world, patterns provide a useful way to critique, discuss, and build screens to help people do things online.

News Wire Stories for August 2013

3D game design tech, a guitar that does email, what wi-fi would look like if we could see it, golf ball technology, women in tech, and other stories from the past month or so from around the internet.

HTML Coding for Beginners

Creating content in an online publishing tool often requires zero knowledge of HTML. When hand coded HTML is required, however, you only need to know five tags. Seriously.

How to Teach WordPress Basics to Students

It's easy to teach students how to create and publish content with WordPress because the software rewards clicking links to find what you need to do.

Tools to Create and Develop Software

These tools make it easy to create and develop software with the ability to validate code, connect to web servers, store code snippets, and other useful features.

PHP

From a simple website activity application written in the C language in 1994, the PHP programming language has evolved into a robust language optimized for web servers and web applications.