September 7th 2020
There’s a ton of programming languages out there. We’ll outline the differences between them and what they’re commonly used for, as well as which ones to use and which ones are easiest to learn.
We’re going to split up our languages into three categories:
- Front-end web languages — there are three of these that work together to make up the visual side of web sites.
- Back-end web languages — those which handle the processes that a user doesn’t see, such as saving data to a database, checking a user’s password is correct or paying for an order with a credit card.
- Mobile languages — used to make iPhone, iPad and Android apps.
With front- and back-end languages, think of a website as being like a restaurant. You have front-of-house waiting staff and back-of-house staff in the kitchen. Customers interact with the waiters, who tell the chefs what meals to prepare. The chefs make the food, hand it to a waiter, who delivers the food to the table. On a website, you only see the front-end, or what you interact with. The back-end is what happens behind the scenes.
Let’s look at front-end languages. With all websites, the visual side uses a combination of these three:
- HTML or HyperText Markup Language, which essentially helps create content such as paragraphs, headings, links and more.
- CSS or Cascading Style Sheets, which helps define how content (the HTML) should look, such as this header should be red with font size 32px in the font Helvetica. It also handles how websites look on different screens such as a mobile or a laptop.
Next, onto back-end languages. Each has its benefits but generally they’re all doing the same job, which is to show users web pages and talk to databases. They include:
- Ruby (used by a lot of large startups like Basecamp and Shopify)
- PHP (used by Facebook)
- Python (used heavily by Google and Amazon)
- Elixir (what SuperHi uses, it’s particularly good for handling a lot of data at the same time)
- Erlang (invented by telephone companies to handle lots of messages at the same time, now used in Whatsapp and Facebook Chat)
Mobile languages are another category.
Mobile apps have completely different structures to websites. If you’re building an iPhone app, for instance, you wouldn’t need any of the visual side of web coding as you’re not building a website. Apple provides a lot of the structure you need for building apps using two languages (you can pick either), Objective-C and Swift. Swift is probably the most beginner-friendly of the two.
Android apps have different structures again. You have to build your apps in Java using special libraries that Google provides. If you want to build an app for both iPhone and Android, you’re essentially building two separate products that work completely differently.
Around all these languages, there are also tools that make it easier for coders to work together. You may have heard of Git, which is a version control tool (think of it like Dropbox for coders). Git doesn’t stand for anything, the inventor just thought the British word “git”, meaning an ignorant or annoying person, was a funny word.
With Git, there’s a site called GitHub where coders can store their files to share either privately among their teammates or publicly if they’ve selflessly made some code other people could use.
So that’s a very broad overview of some of the programming languages that are available out there.
Now that you have an overview of what programming languages are out there, you may be wondering, okay that’s great: but how exactly do you choose the right one to learn?
Succeeding in any digital project depends on selecting the right coding language, but this doesn’t necessarily mean you should dive in with learning that language first.
As of this writing, there are about 9000+ programming languages and because anyone can create one, we’ve got some bizarre ones like LOLCODE, Chicken, even Shakespeare. Programming languages also grow and wane in popularity, which is why choosing the right language isn’t as important as learning how to think like a coder—because what you choose today may not be popular ten years from now. The popular languages of tomorrow may not even be invented yet.
What’ll be important as you start to learn to code is getting into the right mindset.
Most languages work according to similar overarching processes. They take in data, do something with that data, then return something out of the other side. For instance, if you’re logging onto a site or an app, all code will be doing the same thing: taking a user name and password, checking those items against a database, and if they are correct, logging you in. The code might be different but the process is the same.
It sounds very logical (and it is) but when you mix that logic with art, that’s when you get creative, interesting projects. Being able to combine the craft with the vision is what makes coding so fun.
This means starting to approach any projects logically, and in sequence.
What does that mean?
Before I write any code, I always use pen and paper to write out the overarching process. If it’s taking a payment on SuperHi’s site, what’s the order I should ask for things? Do I ask for an email address first, or a start date? Do I make it a stepped process or one big form?
This overall process is the real part of coding. It’s working out how to make things easier for the user.
With this in mind, it doesn’t matter too much what code language you learn first. As long as you understand the overall process, it’s easy to apply that to other languages. And once you know one, it’s a lot easier to pick up another, just as learning more than one spoken language can make it a lot quicker to learn more.
We’ve taught a lot of different languages at SuperHi and at other code schools. There are definitely some which are a lot easier for our students to pick up. Here’s some popular programming languages, ordered roughly from most easy to learn to most difficult:
- 1. HTML
- 2. CSS
- 3. Ruby
- 4. Python
- 5. Elixir
- 6. PHP
- 8. Swift
- 9. Java
- 10. Erlang
If you’ve never coded before, I recommend taking this order into account, and also thinking a bit about your goals and what you’d like to create. Is it purely front-end or back-end? Or is it a mix?
I won’t go into detail about why I picked this order but mostly it’s to do with the structure of the languages themselves. The hardest ones have more ways to go wrong, whereas the easiest are more flexible.
That all said, different people have different opinions on which are hardest to get right. There’s some backend developers who can’t figure out how to position elements using CSS.
Illustration by: André Cândido