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

EditComments5 Thank

openWhy do you recommend Python?

  • Add a Pro

openWhy don't you recommend Python?

  • Add a Con
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...
133
0

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

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

EditComments Thank

openWhy do you recommend Ruby?

  • Add a Pro

openWhy don't you recommend Ruby?

  • Add a Con
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...
34
0

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

Meta-programming causes confusion for new developers

The ability for libraries to open classes and augment them leads to confusion for new developers since it is not clear who injected the functionality...
3
0

EditComments6 Thank

openWhy do you recommend JavaScript?

  • Add a Pro

openWhy don't you recommend JavaScript?

  • Add a Con
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...
56
0

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

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

EditComments5 Thank

openWhy do you recommend C?

  • Add a Pro

openWhy don't you recommend C?

  • Add a Con
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...
51
1

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

Low-level

Depending on the purpose this can be either a pro or a con. If the task is to learn how to program, low-level of C will impend learning important con...
18
0

EditComments1 Thank

openWhy do you recommend C#?

  • Add a Pro

openWhy don't you recommend C#?

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

Great introduction to object-oriented programming

Object-oriented programming is the most widely-used paradigm. C# offers support for common OOP features such as classes, methods and fields, plus so...
18
0

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

Lacks standard-library support for immutable data structures

8
0

EditComments Thank

openWhy do you recommend Scheme?

  • Add a Pro

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

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

Not Practical

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

EditComments Thank

openWhy do you recommend Java?

  • Add a Pro

openWhy don't you recommend Java?

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

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'...
24
0

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

Locks you into the static OOP mindset

11
0

EditComments Thank

openWhy do you recommend Golang?

  • Add a Pro

openWhy don't you recommend Golang?

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

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

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

Performance slowdown because of indirect calls and garbage collection

Practically no meaningful Go application can be written without indirect function calls and garbage collection, these are central to Go's core in...
0
0

EditComments Thank

openWhy do you recommend Clojure?

  • Add a Pro

openWhy don't you recommend Clojure?

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

Immutability as the default.

Since Clojure is derived from Lisp, it offers a lot of benefits that functional languages have. One of those benefits is immutability.
6
0

A holistic and well designed language.

6
0

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

EditComments Thank

openWhy do you recommend Lua?

  • Add a Pro

openWhy don't you recommend Lua?

  • Add a Con
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...
11
0

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

Not very commonly used outside of the Game Industry

Lua is used very often as an extension language for video games, but outside of that niche, it doesn't see much use in industry.
5
0

EditComments Thank

openWhy do you recommend CFML?

  • Add a Pro

openWhy don't you recommend CFML?

  • Add a Con
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.
13
0

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

Little actual use either in academia or professionally

0
0

EditComments Thank

openWhy do you recommend Haskell?

  • Add a Pro

openWhy don't you recommend Haskell?

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

Very few language constructs

The base language relies primarily on function application, with a very small amount of special-case syntax. Once you know the rules for function app...
5
0

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

Delayed Results

Haskell's static typing, while helpful when building a project, can be positively frustrating for beginners. Quick feedback for errors means dela...
3
0

EditComments Thank

openWhy do you recommend Scratch?

  • Add a Pro

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

Visual

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

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

EditComments Thank

openWhy do you recommend Common Lisp?

  • Add a Pro

openWhy don't you recommend Common Lisp?

Description (optional)

Practical functional programming language

3
0

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

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

EditComments Thank

openWhy do you recommend C++?

  • Add a Pro

openWhy don't you recommend C++?

  • Add a Con
General Purpose Language with Object-Oriented Programming, and Powerful Data Structure and Algorithms

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++
9
0

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

Huge language gets in the way of learning

C++ is such a large language that it presents a steep learning curve and may get in the way of learning fundamentals.
11
0

EditComments Thank

openWhy do you recommend LiveCode?

  • Add a Pro

openWhy don't you recommend LiveCode?

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

Approachable yet capable language

3
0

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

Poor Ecosystem

Not a mainstream programming language.
2
0

EditComments Thank

openWhy do you recommend Elm?

  • Add a Pro

openWhy don't you recommend Elm?

  • Add a Con

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

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

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

EditComments3 Thank

openWhy do you recommend Pascal / Object Pascal?

  • Add a Pro

openWhy don't you recommend Pascal / Object 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

procedure test(); begin DoSomething(); end;
9
0

Easy

Pascal / Object pascal was used in schools during the 2000's to teach kids the basics of object oriented programming.
8
0

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

EditComments Thank

openWhy do you recommend Scala?

  • Add a Pro

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

Multiparadigm

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

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

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

EditComments2 Thank

openWhy do you recommend D?

  • Add a Pro

openWhy don't you recommend D?

  • Add a Con
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...
8
0

Industrial quality

4
0

Poor adoption even after many years of existence

There's a widely accepted perception of D as a language that has been poorly adopted. Since adoption is driven by perception this becomes a fact....
3
0

EditComments Thank

openWhy do you recommend Smalltalk?

  • Add a Pro

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.

Inspired many other languages' object systems

2
0

Easy to learn and experiment

2
0

Not Common

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

EditComments Thank

openWhy do you recommend F#?

  • Add a Pro

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

Built-in REPL

Makes it easy to write scripts and explore the language
1
0

Concise syntax 

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

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

EditComments Thank

openWhy do you recommend Clojurescript?

  • Add a Pro

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.

2
0

Immutability as the default.

2
0

No cons added yet

EditComments Thank

openWhy do you recommend Erlang?

  • Add a Pro

openWhy don't you recommend Erlang?

  • Add a Con

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

Light processes

Erlang's processes have very little overhead (about 500 bytes per process). This means that a huge amount of processes can be created, even on ol...
0
0

Useful in only one niche

Erlang is not really a general purpose language. It has a very special and well-defined niche where it towers above everything else. It's special...
0
0

EditComments Thank

openWhy do you recommend APL?

openWhy don't you recommend APL?

  • Add a Con
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...
2
0

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

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

EditComments Thank

openWhy do you recommend Objective-C?

  • Add a Pro

openWhy don't you recommend Objective-C?

  • Add a Con
The Mac OS OOP

Develop Apple applications

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

Well Documented

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

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

EditComments Thank

openWhy do you recommend Julia?

openWhy don't you recommend Julia?

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

Fast

0
0

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

EditComments Thank

openWhy do you recommend Assembly?

  • Add a Pro

openWhy don't you recommend Assembly?

  • Add a Con
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...

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

Uniform syntax

Assembly language syntax is relatively uniform, and so there's less room for a student to get confused by obscure characters, or miss some meani...
4
0

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

EditComments Thank

openWhy do you recommend Actionscript?

  • Add a Pro

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

Wide Compatability

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

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

EditComments Thank

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

Open source

0
0

A modern C-like language

This language will is the successor to Objective-C, it's modern and easy to learn.
0
0

Extremely young language

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

EditComments Thank

openWhy do you recommend Visual Basic?

openWhy don't you recommend Visual Basic?

  • Add a Con
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...
1
0

Huge Community

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

Limited Practical Applications

4
0

EditComments Thank

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

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

EditComments Thank

openWhy do you recommend PHP?

  • Add a Pro

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%.
5
0

Lots of tutorials online

4
0

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

EditComments Thank

openWhy do you recommend Brainfuck?

  • Add a Pro

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

Esoteric language

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