Mischa Spiegelmock edited this page Feb 25, 2018 · 27 revisions

Language Tutorials

A common question is "what language should I learn?" This is akin to asking "I want to get into construction, should I learn to use a hammer or a drill?" If you want to specialize in putting nails in things hammer is probably a better route, but really you should focus on how things in a building fit together and the different tools available to you.

Contrary to popular belief, programming languages are not everything. They all do more or less the same thing, and most of the popular ones are derived from C and have very similar syntax and constructs. Knowing a particular language is far less important than knowing the common concepts and vocabulary used to describe how all languages work, so that you can learn new ones as they become fashionable, useful to your project, or are just interesting to you.
That said, there are many times when a particular language is the right tool for the job. If you want to do iPhone development, you should concentrate on Swift. JavaScript is suited for web stuff. Perl isn't really on the list of good choices.
At the very least try doing a few tutorials of different languages and take note of the commonalities and differences between them. This is much more valuable than deciding "I am going to be a python programmer" or shackling yourself to a particular language.


C is the greatest programming language of all time. It gives you the perfect level of abstraction from the underlying hardware to make programs and libraries portable, but is still low-level and expressive enough to do serious work and give you enough control when you need it.
Basically all operating systems, web browsers, databases, high-performance server applications and games are written in C (or C++). Whenever someone creates a new useful library, it is probably written in C, and then bindings are created to make it usable from various higher-level languages.
Every programmer should at least be familiar with C. It's the lingua franca of software, and you will encounter it often.

Stanford CS Course

Stanford has a fantastic free online course on youtube covering basic computer science concepts.
Once you are somewhat familiar with C, your next task is to watch these lectures. There is seriously no good reason for you to not watch this whole thing this instant if you plan on writing code. You don't even have to leave your bedroom and you can get a better, more solid understanding of software than most professional developers. Watch the whole thing right now.


Python is a modern and straightforward programming language designed to remove a lot of the mystery and occult incantations found in many older languages. It's quite popular right now with novices and has a great deal of support, libraries and frameworks. It's designed to make it easy to write clear and readable code, arguably at the expense of elegance and flexibility. The unofficial python motto is "there is only one way to do it."


JavaScript is actually a pretty decent programming language that has evolved considerably. It's used both for making cool programs to run in web pages, as well as backend web application development (node.js).


Go is one of the most interesting and well thought-out modern languages to come along lately. It's backed by Google though it is a project run by the open-source community.


A language introduced by Apple for OSX and iOS development. The libraries used are the same as Objective-C but the language is cleaner and designed from the ground up for their platforms.


Assembly is the least practical but most important language to be familiar with, because it is eventually what all higher-level programs end up as. You do not need to be good at writing assembly, but it is extremely important to have a basic familiarity with the concepts.



PHP does one thing and it does it sorta well: building small-scale web applications.


Java is terrible and you probably shouldn't use it.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.