Slant is a new Q&A site that makes it easy to choose what to use.
Get recommendations
Ask a Question and our community will recommend the best Options that meet your actual needs.
Choose the best
Slant crowdsources research to save hours of work. All the information you need to choose is now in one place.
Join the Community
Slant works like a wiki anyone can edit. Help people find the right Option for them by sharing your knowledge.

Nowadays with the advent of what is called the information age, more and more people are looking to learn computer programming. Either for hobby or as a real opportunity to find a job, with countless resources on the internet (most of them free), learning a new programming language has never been as easy as it is today. But even with the overwhelming information that’s out there, choosing a programming language to learn can be a daunting task. Especially if it’s the first language that someone is learning.

A good programming language to start with should be one that teaches best practices and common paradigms and designs that can be found on all other languages. Some people may prefer a language that has a clearer syntax, like Python for example others may prefer a language that is more verbose but that teaches a lot on what is happening “under the hood” like C. Languages that have an easier syntax especially have a lot more tutorials and resources to learn for beginners than languages that may be a little more complex as syntax goes.

One should also keep in mind that a programming language is just a tool to be used, and as such every language out there has it’s strengths and weaknesses and is better suited at a certain thing rather than others. So for example, JavaScript is essential to anyone who wants to learn web development, C++ is widely used by game developers worldwide, Java is needed for Android development and so on. So another thing to keep in mind is the area where you want to focus and that also should influence your choice.


openWhy do you recommend Python?

openWhy don't you 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...


openWhy do you recommend JavaScript?

openWhy don't you 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

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

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

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...

openWhy do you recommend Ruby?

openWhy don't you recommend Ruby?

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

Elegant syntax

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

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...


openWhy do you recommend C?

openWhy don't you recommend C?

C is a general-purpose programming language.

Understanding of computers

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...

openWhy do you recommend Scheme?

openWhy don't you 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.


openWhy do you recommend C#?

openWhy don't you 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...

.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...

Awesome IDE for Windows

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...

Lacks standard-library support for immutable data structures


openWhy do you recommend Java?

openWhy don't you 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

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...

openWhy do you recommend CFML?

openWhy don't you recommend CFML?

ColdFusion Markup Language

Easily query a database

Newcomers can use an html-like syntax to query a database. Advanced developers can use a scripted syntax to execute stored procedures.

Rapid application development

Get a web app up and running fast with stuff built right in to CFML! Frameworks make it even faster but lengthen the learning curve.

No cons added yet


openWhy do you recommend D?

openWhy don't you 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&#...

openWhy do you recommend Scratch?

openWhy don't you recommend Scratch?

Scratch is a programming language developed for kids ages 8 and up. It is a fun way to introduce computational thinking.

Easy to learn

Scratch is designed to teach computational thinking rather than focus on specific syntax. It was designed specifically to be easy to learn for anyone...


Code is represented as visual building blocks that makes it easy to understand how a program is put together.

Won't get you a job

Scratch is not a language used in the workplace. Instead it teaches computational thinking, helping to create a foundation to aid in learning other l...

openWhy do you recommend Scala?

openWhy don't you recommend Scala?

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

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...


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

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...

openWhy do you recommend Lua?

openWhy don't you 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...

openWhy do you recommend Haskell?

openWhy don't you recommend Haskell?

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

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...

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...

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...

openWhy do you recommend Golang?

openWhy don't you 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...

Simplified C-like syntax that is as easy to read and write as Python

The language is designed in a manner that seems logical. Syntax is simplified to reduce burden on the programmer and compiler developers.

Obscure language with little real-world use

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

openWhy do you recommend Clojure?

openWhy don't you recommend Clojure?

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

A holistic and well designed language.

Simplicity as a pillar of culture.

Simplicity is one of the pillars on which Clojure is built. Clojure tries to solve many problems in software development as simply as possible. Inste...

Confusing error messages

Clojure's error messages more often than not are very confusing. They usually involve stack traces that do not thoroughly explain where the error...

openWhy do you recommend Smalltalk?

openWhy don't you recommend Smalltalk?

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

Easy to learn and experiment

Inspired many other languages' object systems

Not Common

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

openWhy do you recommend LiveCode?

openWhy don't you recommend LiveCode?

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


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

Extremely simple to get started

Single-click install of entire development environment, and all-in-one IDE makes it easy to go from visually layout out a user interface to writing c...

Poor Ecosystem

Not a mainstream programming language.

openWhy do you recommend Common Lisp?

openWhy don't you 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...

openWhy do you recommend Elm?

openWhy don't you recommend Elm?

Easy to debug

Elm has a time traveling debugger which helps a great deal with debugging. The absence of run-time errors also makes the surface area for things that...

Understandable error messages and other feedback

Error messages are carefully formatted with color highlighting and indicators. Errors also come with hints on how to fix problems.

Still changes a lot every release

Elm is a young language and is still finding it's way, especially in the library functions space. So updating your program to a new version will...

openWhy do you recommend Erlang?

openWhy don't you recommend Erlang?

Built from the ground up with concurrency and distributed computing in mind

Erlang has strong roots with the telecom industry in which concurrent processes are normal. It's designed to be concurrent, to be used for distri...

Consistency across platforms

Erlang's processes run in a complete independent way from the OS (they aren't managed by the OS scheduler neither). This means that programs...

Eccentric syntax

Erlang's syntax may feel very strange to 99% of programmers who have never used it. This is because it does not share any similarities or common...

openWhy do you recommend F#?

openWhy don't you recommend F#?

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

Concise syntax 

F#'s syntax tends to be terse while remaining very readable and easy to understand without being a chore to write.

Easier transition from other paradigms 

Since F# is not a purely functional language, it lends itself to being more easily picked up by programmers that have experience with other paradigm...

Not really cross platform 

Though the community sites are touting F# can be cross platform through use of Mono, the reality is that it is more of a hack to replay on larger mo...

openWhy do you recommend Clojurescript?

openWhy don't you recommend Clojurescript?

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

Simplicity as a pillar of culture.

A holistic and well designed language.

No cons added yet

openWhy do you recommend APL?

openWhy don't you recommend APL?

Array-focused programming language


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...

Does not prepare you for most of the practical programming languages of today

While APL does have a strong use in certain areas (mostly mathematically intensive applications), it is a Domain-Specific language. That along with...

openWhy do you recommend C++?

openWhy don't you recommend C++?

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

Teaches problem solving

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,...

openWhy do you recommend Julia?

openWhy don't you recommend Julia?

Julia is a high-level, high-performance dynamic programming language for technical computing.


Young language with limited support

Julia was released in 2012. Due to it's short existence, there is a limited amount of support for the language. Very few libraries exist as of ye...

openWhy do you recommend Pascal?

openWhy don't you 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

Niche language

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...

openWhy do you recommend Objective-C?

openWhy don't you 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.

More Technical

To be able to do basic tasks in Objective-C requires a strong understanding of programming.

openWhy do you recommend Actionscript?

openWhy don't you recommend Actionscript?

Adobe AIR & Flash programming language

Wide Compatability

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


Teaches strong typed habits and follows many conventions of major programming languages.

Waning Support

Un-usable in-browser on most mobile devices, ActionScript is used mainly for niche AIR programs, graphical mobile and in-browser apps and games, and...

openWhy do you recommend Swift?

openWhy don't you recommend Swift?

Swift is a multi-paradigm, compiled programming language created by Apple for iOS and OS X development. It has been announced that Swift will be open...

No pros added yet

Extremely young language

Swift was released in 2014. Though it's quickly increasing in popularity, it's still not a commonly used language.

openWhy do you recommend VBA?

openWhy don't you 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...

openWhy do you recommend Assembly?

openWhy don't you 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...

openWhy do you recommend Visual Basic?

openWhy don't you recommend Visual Basic?

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

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...

Huge Community

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

Bad Reputation

Being a visual basic programmer, you're unlikely to be taken seriously by other programmers. According to the 2015 Stack Overflow survey, it was...

openWhy do you recommend PHP?

openWhy don't you recommend PHP?

PHP is a server-side scripting language that is most often used for web development. However it is also used as a general-purpose programming languag...

One of the most common languages

According to the 2015 Stack Overflow Developer Survey (26,086 people surveyed), PHP was the 5th most popular/used language at 29.7%.

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...

openWhy do you recommend Brainfuck?

openWhy don't you 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

Rather than have a practical application, Brainfuck is an esoteric language for the purpose of challenging programmers who want to code in a more unu...

Esoteric language

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