The Different Programming Languages
This page discusses the different popular programming languages and help you choose one to learn. You shouldn’t worry too much about which language you choose, since the basic programming fundamentals are the same in each one. But you might as well pick the language that fits best with your goals. You can look at this chart to get an overall idea and read below to find out more about a language.
Higher Levels of Languages
As mentioned before, there are "medium" languages which are closer to the machine, and high-level languages that take care of more things automatically. Even within these high-level languages, some languages (such as Java and C#) are more optimized for the machine while other languages choose greater flexibility for the programmer.
Java and C#
Java and C# are two very similar programming languages that are well-optimized and have stricter rules to help prevent programming mistakes. Code in these languages need to be “compiled” into lower-level code before it runs, and all variables need to be “declared” with their name and type. They also enforce/encourage a methodology known as “object-oriented programming”, requiring all code to belong to an “object”.
People who program in these languages use an IDE to write their software in, which can provide various features to help with programming, such as auto-completion suggestions while they code, and automatic highlighting of certain errors. The rules in these languages will help you detect certain errors before you even run your code, which can be especially helpful when learning programming. However, Java or C# are not made for writing simple scripts, and they are not as popular for quickly creating dynamic websites.
Java vs. C#
Both languages are popular in large companies, large projects and in projects that need optimized code.
C# can be called "Microsoft's Java", but it also has features missing in Java. It does not yet support multiple platforms as well as Java does, but it does fit well with Microsoft's other offerings. If someone is within a Microsoft world anyways, it likely makes sense to use C# over Java. Microsoft has started to open-source C# and associated technologies, so support for other platforms will improve over time.
In summary, you should learn one of these languages if you:
- Want to program for a big company
- Want extra rules to help prevent errors
- Require very fast software for large projects
You should likely do C# if you'll just be doing things on Windows, but you should do Java if you want to make Android apps or are going to a college that does Java.
The "interpreted languages" are more flexible, and are probably a better choice for a beginner who doesn't care about the reasons mentioned above. Since they're popular on the web, I’ll quickly review how websites work before going through different languages. (For more information see Intro to Web Development.)
PHP is a language built for creating dynamic web pages, and it runs on the server-side. Let’s say you just finished building a website without programming and now you want to be able to customize things further. You want to learn how to program the brains of the website, i.e. the back-end. A large number of websites and scripts are built using PHP, and web hosts often come with a list of one-click-install scripts. If you want to create a plugin for WordPress or work with the same script that runs Wikipedia, then PHP is for you. Practically all dynamic web hosts run PHP, and its very easy to get started with it. However, PHP has some issues, such as a messy syntax and certain inconsistencies and quirks. This means you should probably learn a different language if you just want to learn programming or you want to create an entirely new web app. However, PHP has improved over time, and if it fits your purposes, go ahead and learn it.
Ruby is similar to Python in many ways. It is a general-purpose language which is focused more on programmer productivity than running-time on a machine. This ‘slowness’ isn’t really an issue for most things a beginner will be building. Ruby has become popular in the last few years due to the website-building framework written in it – Ruby on Rails. Rails developed certain principles (such as “convention over configuration”) that let programmers built websites quickly. If you are interested in creating websites with Rails, then it obviously makes sense to learn some Ruby. While Rails can be used without that much Ruby knowledge, I think a beginner should first learn a simple language before taking on a complex framework.
The C language is the 'grandfather' of modern languages, and it (and C++) influenced many languages, especially Java and C#. Many lower-level systems (and language compilers themselves) are written in C, but a beginner should usually learn an easier higher-level language for creating applications.
Objective-C (which appeared in 1983) is Apple's variant of C for creating apps for Macs and iPhones. It still requires programmers to do certain things that modern languages take care of automatically. Apple recently came out with Swift, as an easier alternative to Objective-C. Swift offers various beginner-friendly features, such as playgrounds for seeing your code execute live. Swift is a good choice if you're interested in creating iPhone apps.
The table below provides some additional info about each language. See this post for sample code for each language.
Scroll table sideways to view all languages.
|About name & original purpose
|Named for Java Coffee, created for interactive TV
|Named after C++ and the musical note. Microsoft's Java competitor
|Implies faster coding,
"Objective-C without the C"
|Named for Monty Python, created as a scripting language to bridge the gap between the shell and C
|Named for the gemstone, created as a true object-oriented scripting language
|Named after Java as a marketing ploy, created as a scripting language for Netscape browser in 10 days
|Creator made it for his own Personal Home Page and it evolved from there
(official or otherwise)
|Robust to catch errors
Portable to run anywhere
Multithreading for concurrency
(See Design Goals of the Java)
|Strong type checking
Robust & durable Programmer productivity
Source code portability and programmer portability
Run on hosted and embedded systems, distributed environments, large to small
|Builds on the best of C and Objective-C, without the constraints of C compatibility.
Systems programming language that is as expressive and enjoyable as a scripting language.
Modern, functional, easy to experiment with, safe and powerful.
Explicit is better than implicit.
Flat is better than nested. Sparse is better than dense.
Special cases aren't special enough to break the rules. Although practicality beats purity.
Errors should never pass silently. Unless explicitly silenced.
There should be one - and preferably only one - obvious way to do it.
If the implementation is hard to explain, it's a bad idea.
|Make programmers happy
Principle of least surprise
There's more than one way to do it
Concise and succinct
Helps get the job done
We are the masters, computers are the slaves
|Scheme-like language using Java-syntax.
HTML needed a 'scripting language', a programming language that was easy to use by amateurs and novices, where the code could be written directly in source form as part of the Web page markup. We aimed to provide a "glue language" for the Web designers and part time programmers who were building Web content from components such as images, plugins, and Java applets.
|"I have absolutely no idea how to write a programming language, I just kept adding the next logical step on the way."
PHP is an HTML-embedded scripting language. Much of its syntax is borrowed from C, Java and Perl with a couple of unique PHP-specific features thrown in. The goal of the language is to allow web developers to write dynamically generated pages quickly.
|Used for creating
|Android apps, large websites
|Windows apps, large websites (Unity games)
|iPhone and Mac apps
|Math scripts, wesbites
|Ruby on Rails websites
|Anything that runs in a browser (and beyond)
|Applications built on older scripts like Wordpress
|Used especially by
(Banks, eCommerce, Google, etc.)
(Microsoft, healthcare, etc.)
|Academics, startups, Google
(Airbnb, Github, Scribd, etc.)
|Older companies, Facebook.
|Pro / Unique Feature
|Well-optimized Java Virtual Machine for running code.
|LINQ for easily querying and updating data.
|Easy to try out code with Interactive Playgrounds and REPL.
|List comprehensions for creating lists based on other lists.
|Pass around Blocks of code to get stuff done concisely.
|Only language that runs in browser.
|Quick to set up server and web host.
|Cons / Tradeoffs
|Strict rules help catch errors but reduce flexibility and brevity. Requires more boilerplate code than others. Primitives.
|Similar to Java. Integrates well with Windows, but not yet as well with other platforms.
|May be harder to find answers when coding in a new language. Still has some issues with performance and bugs.
|Somewhat slow. Using whitespace looks nice, but may cause occasional issues. Language split between Python 2 and 3.
|Slower run-time on a computer. Multiple ways to do things can make reading code a little harder.
|Its flexibility sometimes leads to inconsistencies, bugs or surprises. E.g. there's one global namespace for all code.
|Messy syntax and some inconsistencies and quirks. Makes it easy to create something quickly, but also to follow bad practices and leave security holes.
|How language is executed
|Compiled to run on the Java Virtual Machine so you can "Write once, run anywhere".
|Compiled to run on the Common Language Infrastructure (part of .NET platform) which is primarily used on Windows but will become more cross-platform.
|Compile to run apps on the Mac and iPhone.
|Commonly executed on CPython, the official Python implementation written in C.
|Commonly executed on MRI, the official Ruby implementation written in C.
|Runs within any browser from source code; well-optimized for a scripting language.
|Commonly executed on the official Zend PHP implementation. Facebook's newer HHVM compiler can execute PHP faster.
900 (Android: 800)
340 (Rails: 1,020)
|2,070 for both
|Top Web Framework
|Ruby on Rails
|Node.js for server, many for front-end