What is the best programming language to learn first?

Why do you recommend Python?

Why do you not recommend Python?

Python is a widely used general-purpose, high-level programming language.

Easy to get started

On top of the wealth of tutorials and documentation, and the fact that it ships with a sizeable standard library, Python also ships with both an IDE...

Clear syntax

Python's syntax is very clear and readable, making it excellent for beginners. The lack of extra characters like semicolons and curly braces redu...

Language fragmentation

A large subset of the Python community still uses / relies upon Python 2, which is considered a legacy implementation by the Python authors. Some li...

Why do you recommend JavaScript?

Why do you not recommend JavaScript?

JavaScript (JS) is a dynamic computer programming language. It is most commonly used as part of web browsers, whose implementations allow client-side...

No installation required

1
If you run a web browser you already have JavaScript installed and can get started right away. Modern browsers such as chrome also have very powerful...

Required for web development

1
If you are looking to create web projects you will have to learn Javascript in order to develop the client side code. If you learn the foundations of...

Many errors pass silently

1
JavaScript looks for every possible way to treat the code you write as runnable and is very reluctant to point out likely errors. For example, you h...

Why do you recommend C?

Why do you not recommend C?

C is a general-purpose programming language.

Understanding of computers

1
Learning C forces you to grapple with the low-level workings of your computer (memory management, pointers, etc.) in ways that the other languages ab...

Industry standard

C is the industry standard programming language, moreover, it is the most popular programming language to use. C is the language used for most Window...

Long learning curve

While the language compliments knowledge of computer components very well, and gives a deeper understanding, it is also quite difficult to learn, and...

Why do you recommend Ruby?

Why do you not recommend Ruby?

Ruby is a dynamic, open source programming language with a focus on simplicity and productivity.

Elegant syntax

4
Ruby has a very clean syntax that makes code easier to both read and write than more traditional Object Oriented languages, such as Java. For beginni...

Widely used

Ruby is one of the most popular languages for developing web sites. As a result, there's an abundant amount of documentation, sample code, and li...

Its ecosystem is limited outside of web development

1
If you're looking to host, generate, manipulate or secure a website, Ruby is your language. There's also some great support here for infrast...

Why do you recommend Scheme?

Why do you not recommend Scheme?

Scheme is a functional programming language and one of the two main dialects of the programming language Lisp.

Great, well known textbooks

There is a set of very strong textbooks introducing CS and programming using Scheme. These books are available for free online.The most famous exampl...

No Magic - it's clear how everything works

Scheme has far less built into the language itself, helping students see that things like OOP are not magical: they are just patterns for organizing...

Not Practical

The language is largely reserved for academic and pedagogical use and poorly suited for practical applications.

Why do you recommend C#?

Why do you not recommend C#?

C# is a managed language developed by Microsoft as a Java alternative, containing more syntactic sugar for features such as properties, events, async...

Awesome IDE for Windows

1
On Windows, Visual Studio is the recommended C# IDE. It provides a very flexible GUI that you can rearrange the way you want and many useful features...

.NET is a great toolbox

C# runs on top of the .NET framework, which provides many libraries containing classes used for common tasks such as connecting to the Internet, disp...

Limited support on non-Windows platforms

2
.NET has been ported to Linux and OS X thanks to a project named Mono. Most libraries are supported by Mono, but some aren't and will never be.Cr...

Why do you recommend Java?

Why do you not recommend Java?

Java is a computer programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few implementation dep...

Most commonly used language in industry

Java is one of the most popular languages in industry, consistently ranking either first, or occasionally second (behind C or Javascript) in terms of...

Introduces you to object oriented languages

1
Object Oriented Programming (OOP) is a paradigm that teaches you to split your problem into simpler modules with few connections between them; it'...

Confusing mis-features

Some features in Java can be quite confusing for beginners. Encapsulation is needlessly obfuscated with a confusing access control model. As an examp...

Why do you recommend Scala?

Why do you not recommend Scala?

Scala is an object-functional programming and scripting language for general software applications, statically typed, designed to concisely express...

Multiparadigm

Scala supports both Functional and Object Oriented styles of programming. Beginners can learn both paradigms without having to learn a new language,...

Type inference

Scala offers type inference, which, while giving the same safety as Java's type system, allows programmers to focus on the code itself, rather th...

Can be intimidating for beginners

Scala is an industrial language. It brings functional programming to the JVM, but not with a "start small and grow the language" perspectiv...

Why do you recommend D?

Why do you not recommend D?

D provides a low overhead language to begin the learning process. The selection of features allow for an assortment of teaching styles and subjects....

Static with type inference

For a new user adding types can feel tedious, and takes focus off the meaning of the code, but they are also important for checking logic. D provides...

Has an improved C subset

With few exceptions, D will either compile C code to work exactly as when compiled as C, or it won't compile - it won't quietly change the se...

Not widely used, poor ecosystem.

In a nutshell, D is a "better C++". There's no question that as a pure language, D has a lot of advantages over C++. However, it hasn&#...

Why do you recommend Lua?

Why do you not recommend Lua?

A powerful, fast, lightweight, embeddable scripting language.

Fast and lightweight

Lua is light and faster than most other scripting languages, especially with LuaJIT, a Lua compiler that can even run code faster than some compiled...

Straightforward and simple

Lua's syntax is considered to be one of the closest syntax to plain English. Lua's syntax is also very simple and straightforward. Because of...

1-indexed Arrays

Defying conventions from most other programming languages, Lua uses arrays that start at 1, rather than 0. While seemingly beginner friendly, this c...

Why do you recommend Smalltalk?

Why do you not recommend Smalltalk?

Smalltalk is an object-oriented, dynamically typed, reflective programming language. It was designed and created in part for educational use.

Inspired many other languages' object systems

Easy to learn and experiment

Not Common

Smalltalk and its implementations are no longer popular languages to use. Commercial development is scarce (but does exist), and online communities a...

Why do you recommend LiveCode?

Why do you not recommend LiveCode?

LiveCode is both an open-source and proprietary cross-platform rapid application development language.

Cross-platform

Inside LiveCode's IDE you can build for OSX, Linux and Windows, and (making use of Xcode and the Android SDK) for iOS and Android too

Approachable yet capable language

Poor Ecosystem

1
Not a mainstream programming language.

Why do you recommend Haskell?

Why do you not recommend Haskell?

Haskell is a general-purpose, lazily evaluated, purely functional programming language.

Mathematical consistency

As Haskell lends itself exceedingly well to abstraction, and borrows heavily from the culture of pure mathematics, it means that a lot more code conf...

Quick Feedback

It's often said that, in Haskell, if it compiles, it works. This short feedback loop can speed up learning process, by making it clear exactly wh...

Steep learning curve

Haskell lends itself well to powerful abstractions - the result is that even basic, commonly used libraries, while easy to use, are implemened using...

Why do you recommend C++?

Why do you not recommend C++?

General Purpose Language with Object-Oriented Programming, and Powerful Data Structure and Algorithms

Teaches problem solving

1
The great STL is the most powerful Data Structure and Algorithms Library. It would benefit you very much in problem solving, your main main way to l...

Huge Language supports most everything.

C++ is a large language with an even larger community and following. It has libraries for every kind of task that is possible to do with C++

Suffers from fundamental design flaws of C and older C++ specifications

Due to attempting to be fully backward compatible, it continues to implement features on top of broken implementations of past concepts. In example,...

Why do you recommend Golang?

Why do you not recommend Golang?

Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.

Exceptionally simple and scalable multithreaded and concurrent programming.

Simply prepend a function with go to execute it concurrently. Utilizes channels for communication between goroutines which aids to prevent races and...

Built-in Unit Testing

The idiomatic approach to writing a Go software project is to perform test-driven development with unit testing. Every source code file should have...

Obscure language with little real-world use

Popular languages have more avenues for support. They will also be more useful on your resume.

Why do you recommend scratch?

Why do you not recommend scratch?

Easy to learn

Even children can learn from it.

No need to be able to type

Won't get you a job

Why do you recommend Erlang?

Why do you not recommend Erlang?

Used in high profile distributed systems

Erlang is a very popular choice in industry for distributed systems projects in particular, due to its emphasis on asynchronous message passing.Erla...

No cons added yet

Why do you recommend Clojure?

Why do you not recommend Clojure?

A modern lisp, with efficient, persistent data structures, targeting the jvm.

Immutability as the default.

A holistic and well designed language.

No cons added yet

Why do you recommend Clojurescript?

Why do you not recommend Clojurescript?

A modern lisp, with efficient, persistent data structures, targeting javascript as a runtime.

Immutability as the default.

Simplicity as a pillar of culture.

No cons added yet

Why do you recommend Common Lisp?

Why do you not recommend Common Lisp?

Description (optional)

Practical functional programming language

Makes you a better Programmer

Alone the learning an understanding of Lisp gives you a new perspective to look a your Code and Lisp is a really expressive language, useful for meta...

Scheme exists as an alternative

Scheme, with its minimalist design philosophy and great resources (including SICP), may be a better language as a "first language" than Com...

Why do you recommend APL?

Why do you not recommend APL?

Array-focused programming language

High-level

No complicated loop processing to apply a function to a array of arrays. Functions are defined in a way that they will typically operate the same way...

Clear syntax

There is no operator precedence to memorize, as everything is evaluated right-to-left. E.g., in APL 3*10+3 = 39. You do have to type in some otherwi...

No cons added yet

Why do you recommend Assembly?

Why do you not recommend Assembly?

Assembly is a low-level programming language for a computer, or other programmable device, in which there is a very strong (generally one-to-one) cor...

Low Level - it's how the computer works

One of the best ways to learn how a computer actually works is to work your way up from lower level abstractions. Assembly, being only a level above...

Useful for embedded systems

A curriculum that involves an embedded component, such as an Arduino or a Raspberry Pi, can encourage students by allowing them to immediately conne...

Steep Learning Curve

Starting off as a beginner with assembly language could prove very daunting. I suggest learning a high level language first (e.g. C) to get a good gr...

Why do you recommend F#?

Why do you not recommend F#?

F# is a statically typed, functional-first programming language that encompasses imperative and object-oriented techniques and features global type i...

No pros added yet

No cons added yet

Why do you recommend Pascal?

Why do you not recommend Pascal?

Pascal is an influential imperative and procedural programming language, designed in 1968–1969 and published in 1970 by Niklaus Wirth as a small and...

Clear syntax

Easy

Niche language

1
Most use of this language will be found in jobs supporting legacy code. It will be hard to find things to do with this language outside of that nich...

Why do you recommend Actionscript?

Why do you not recommend Actionscript?

Adobe AIR & Flash programming language

Large Community

Online games and a colorful history means there are a lot of existing scripts and examples on the internet for available integration as well as tutor...

Wide Compatability

Runs on all major platforms as an AIR executable or mobile app, as well as in-browser as a FLASH file.

Not very widely used

Past its hay-day, ActionScript is reserved for more niche products. This in turn means that choosing ActionScript as a career path is often ill-advis...

Why do you recommend VBA?

Why do you not recommend VBA?

Visual Basic for Applications

Immediate practical use.

VBA contains all of the same ingredients as more general-purpose programming language and can be immediately put to use in a professional capacity fr...

Limited Use

While it makes a lot of sense for someone wanting to get the most out of Microsoft Office and a handful of other applications, perhaps for the very p...

Why do you recommend Swift?

Why do you not recommend Swift?

Swift is a multi-paradigm, compiled programming language created by Apple for iOS and OS X development

No pros added yet

No cons added yet

Why do you recommend Objective-C?

Why do you not recommend Objective-C?

The Mac OS OOP

Develop Apple applications

Similar to C# and Java, but used to develop native applications for Apple hardware.

Well Documented

Objective-C's documentation exists on Apple's website, and explains language features in detail.

Requires Understanding of C-language.

Objective-C is built on top of C, and as such, requires at least a basic understanding of how to program in C.

Why do you recommend Visual Basic?

Why do you not recommend Visual Basic?

Created to be easy to learn and use, VB is a modern and capable object oriented language.

Huge Community

Being Microsoft's introductory language, visual basic has a strong and large community.

Capable language

Compiling to the same intermediate language as C# and compiling against the same .NET libraries, the differences between C# and VB are largely syntac...

Bad Reputation

Being a visual basic programmer, you're unlikely to be taken seriously by other programmers.

Why do you recommend PHP?

Why do you not recommend PHP?

Its one of the most common languages

Lots of tutorials online

Poorly Designed Language

Despite its widespread use, PHP is generally looked upon poorly from a design point of view. The consistency of function names and function argument...

Why do you recommend Brainfuck?

Why do you not recommend Brainfuck?

Brainfuck is an esoteric programming language noted for its extreme minimalism. The language consists of only eight simple commands and an instructi...

Designed to challenge and amuse programmers.

Esoteric language

Brainfuck is by design extremely difficult to use. This makes it un-learnable to beginners.

Are we missing something?

Help make this question more complete.