Introducing Vetted.ai Logo
Vetted.ai Logo

The Slant team built an AI & it’s awesome

Find the best product instantly

Add to ChromeAdd to EdgeAdd to FirefoxAdd to OperaAdd to BraveAdd to Safari
Try it now
4.7 star rating
Slant logo
0
Log in • Sign up
Follow
DevelopmentBackend DevelopmentWebProgramming Language

What is the best programming language to learn for backend developers?

32
Options 
Considered
997
User 
Recs.
Jul 3, 2023
Last 
Updated
Related Questions
Activity
Here’s the Deal
Slant is powered by a community that helps you make informed decisions. Tell us what you’re passionate about to get your personalized feed and help others.
Have feedback or ideas?
Discord logoJoin our community
on Discord
Ad

26 Options Considered

Best programming language to learn for backend developersPriceCurrent stable versionPlatforms
84
Golang
Free1.21.0Windows, Linux, Mac etc.
76
Elixir
-1.11.2-
75
Python
Free3.9.1Windows, Linux, macOS, AIX, IBM i, iOS, z/OS, Solaris, VMS
67
Rust
Free1.71.1Linux, MacOS X, Windows, BSD
--
TypeScript
-3.7-
See Full List
84

Golang

My Recommendation for Golang

My Recommendation for Golang

Add Video or Image
All
48
Experiences
9
Pros
20
Cons
18
Specs
Adrian Clepcea
Top Pro
•••

It is supported on all the mainline operating systems and supports cross-compilation

You can compile an executable for linux, windows, OSX, FreeBSD, NetBSD etc. You can easily cross-compile accross platforms. See More
Monika
Endi Sukaj
Łukasz Jan Niemier
Top Con
•••

No user defined generics

This means that you can utilize strong typing only as long as you do not need a generic container like for example list. Only ways to deal with it is either code duplication or using interface{} which means that you lose strong typing. See More
ShrewdUkur
ShrewdUkur's Experience
Google calling the shots. Eat what they feed you. They have no worries, search results or YouTube recommendations will be whatever. You lose, Google wins. See More
Specs
Current stable version:1.21.0
Platforms:Windows, Linux, Mac etc.
Developer:Google with Ken Thompson, Robert Griesemer, Rob Pike
Dave Jensen
Top Pro
•••

Large community

The community is large enough at this point that there are plenty of resources on the web for learning, asking questions, and interacting with many other Gophers. See More
Fork Posix
Top Con
•••

Easy to shadow variable

Due to single character only difference, declare and assign statement can easily shadow variable from outer scope unconsciously. Example: err := nil if xxx { err := somefunctionthatreturnsanerr } return err // always return nil See More
Roman Scharkov
Roman Scharkov's Experience
Go provides a very simple mental modal to solve a relatively complex computer programming problem, that is concurrency. Goroutines make asynchronous, non-blocking and highly concurrent code much easier to write and read. Unlike in many other languages running on top of an event loop, like JavaScript for example, where you have to write non-blocking async code properly to not shoot yourself in the foot blocking the single execution thread - in Go writing blocking synchronous code is just fine, because the builtin goroutine scheduler will automagically swap any blocked goroutine for another to not waste any CPU time. What makes goroutines special, is that they are very leightweight compared to regular OS threads we know from Java or C++ and similar, you can spawn millions of them and Go's scheduler will use up all available CPU cores to run as many of them at once as possible. The Go compiler compiles the source code into final machine code which is executed directly by the CPU bypassing any interpreters and virtual machines eliminating the runtime costs of such abstractions as well as any runtime dependencies. Although the compiler isn't probably as smart as a regular modern C or C++ compiler yet, it's compile times are very low and the generated machine code is very efficient making Go blazingly fast, almost as fast as C/C++ (not quite, but still). The built-in concurrent mark-and-sweep garbage collector has it's tradeoffs (like any another GC) but is optimized for latency to minimize stop-the-world delays and does it's job pretty well. The compiler also tries to optimize memory efficiency by trying to allocate as much on the stack (which is also special in Go, but that's a whole other topic) as possible through escape analysis and similar techniques. Besides that, Go offers a strong static type system, supports reflection and encourages duck typing, interfaces instead of classes and composition instead of inheritance. The language grammar is very simple, it makes working in a team of people with different levels of skill a piece of cake. Go has basic support for generics. The builtin map, array and slice containers are fully generic. Documentation is built into the language. Source code comments are automatically transformed into documentation. godoc.org constantly scans for Go repositories and generates public documentation for them on-the-fly. Modular design is achieved through packages, every folder represents a package containing exported and unexported functions, types , constants and singleton variables. All that together with a rich standard library and a high quality toolset make Go a simple, elegant and highly efficient platform for application and systems development. See More
Laura Kyle
Slava Chernoy
Top Pro
•••

Supports packages properly

Explicit package-level export/import. Package dependency graph (DAG) defines the order of compilation and initialization. Packages help to build the architecture and to deal with the complexity of the system. Packages and clear dependancies makes it easy to understand the system (design). No surprises -- easy to learn and to develop. See More
Monika
ArticulateLulal
Top Con
•••

Forces K&R style and won't allow Allman style

Golang developers were extremely short-sighted and biased by forcing the K&R style, which should never have happened. Basically kicking Allman style users out of their languages. See More
Doug Sparling
Doug Sparling's Experience
Needed something for high traffic website where caching was of little benefit. (Hundreds of thousands of unique requests.) Go may not be the only solution, but I like the language and with Go’s high performance concurrency I got the performance I needed. See More
Roman Scharkov
Top Pro
•••

Supports 'modules' in the form of packages.

Every Go source file contains a package line that indicates which package a file belongs to. If the name of the package is 'main', it indicates that this is a program that will be compiled into a binary. Otherwise, it will recognize that it is a package. See More
ExceptionalTlazolteotl
Top Con
•••

Does not have sum types

Makes it harder to have functions of different parameters types in a non OOP language. Thus messy generics and interfaces, and more confusion, where sum types could have solved a number of issues. See More
Elias Van Ootegem
Elias Van Ootegem's Experience
As Backend is growing more and more towards containerised micro-services, Golang definitely has got a bright future ahead of it. Having a clean, simple language with the X-platform portability of "ye olde C", and the design team that is focussing the development with networking in mind just makes sense. Your code compiles down to a single binary, that you just drop in a scratch container as your entry point, and job done! That's not to even mention the toolchain. For a language that isn't that old, its toolchain feels very solid, and full-featured. There's go-metalinter to lint-check your code, there's the built-in testing (go test), formatting (gofmt), race detection during testing and/or compilation, profiling, ... it's all ready to be used through a handful of binaries. Java has been around for over 2 decades, and still they haven't settled on a single build tool (maven, gradle, ivy, ...). No language is perfect, but to me, Go strikes a nice balance between cleanliness, not adding bloat (e.g. No classes, but you do have interfaces). Some things take some getting used to, and you might end up abusing them at first (errors as return values, the empty interface type, and race conditions aren't always easy to spot if you're not used to reading go code) See More
prohyon
Top Pro
•••

Supports 'modules' in the form of packages

Every Go source file contains a package line that indicates which package a file belongs to. If the name of the package is 'main', it indicates that this is a program that will be compiled into a binary. Otherwise, it will recognize that it is a package. See More
ExceptionalTlazolteotl
Top Con
•••

Doesn't have true enums

Golang does weirdness with const versus having real enums, like other languages. This reflects the stubbornness and shortsightedness of the core developers, similar to the issue with generics, where it was denied that it was needed until it became too obvious that it should have been added years ago. See More
zou ying
zou ying's Experience
Support multiple cores naturally. Highlight feature of goroutine(corroutine), channel. Wonderful golang ecosystem. See More
Doug Sparling
Top Pro
•••

API documentation is rich in content; easy to memorize

Only features deemed critical are added to the language to prevent cruft from working it's way into the language. The language is small enough to fit inside one's head without having to repeatedly open documentation. Documentation is hosted on an official webpage in a manner that is simple to read and understand. See More
CourageousBaalHammon
Top Con
•••

Golang controlled by Google

Solves Google problems, which might not be your or the majority of user's problems. Was created for the benefit and purposes of Google, so is less flexible in language direction and options. See More
Dave Jensen
Dave Jensen's Experience
Early on in our project we moved from Node.js to Golang. The big concern was that we were losing our expertise in Javascript for something new. After a few weeks on go those conerns went away. The simplicity of the language and the culture of writing simple code hooked us almost instantly. As already experienced programmers we went from beginners to power users overnight (but we're not experts, yet). See More
IntellectualCerberus
Top Pro
•••

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 an associated *_test.go file which tests functions in the code. See More
Hasnat Babur Raju
Top Con
•••

Expects prior familiarity with tooling, "advanced" OS use

A standard step of even installing Go is modifying your path -- a person who's encountering their first language might not even understand. It's hard to escape using Go without familiarity with using build tools, managing and organizing project directories, etc. It's not as simple as Python's "just run the .py file with the interpreter." See More
AwareSobek
AwareSobek's Experience
I have used Go full-time for the past two and a half years building RESTful API microservices. I came from python and we investigated using nodejs but settled on Go. The language was much easier to understand and debug and third-party packages were solid. It's a fast little language, with small binaries that can be compiled to run on any platform. See More
RickZeeland
Adrian Clepcea
Top Pro
•••

The final package contains everything you need to run it

Everything is contained in the executable, it is like static linking in C. That means you no longer need to provide external libraries. This also simplifies the installers (if you need them at all). See More
ExceptionalTlazolteotl
Top Con
•••

Lacks support for immutable data

Only way to prevent something from being mutated is to make copies of it, and to be very careful to not mutate it. See More
RobustCottus
RobustCottus's Experience
Go speed and simple c-like syntax makes it a good fit for our production. See More
Paolo
Doug Sparling
Top Pro
•••

Multiple variables may be assigned on a single line

This conveniently eliminates the need to create temporary variables. Fibonacci example: x, y = y, x+y See More
Paolo
Łukasz Jan Niemier
Top Con
•••

Default package manager doesn't allow multiple versions of the same package to be used at once

Default package manager fetch all packages to $GOPATH and use them across all projects which mean that 2 projects cannot use different versions of the same package. However 3rd party solutions exists. This has been solved with the dep tool and semver. See More
CourteousAmanikable
CourteousAmanikable's Experience
Type system is very limited. The language is not well thought out and has many glaring problems that require janky workarounds. It's fine for relatively simple projects, but you will quickly outgrow it. See More
IntellectualCerberus
Top Pro
•••

The go compiler compiles binaries instantly — as fast as a scripting language interpreter

Compiled binaries are fast — about as fast in C in most cases. Compiles on every OS without effort — truly cross-platform compiler. As a result of the fast compilation speed, you can use the gorun program to use go source code as if it was a scripting language. See More
Monika
CourageousBaalHammon
Top Con
•••

It appears Google uses position to snuff out or suppress other languages

Newer languages that could threaten Golang (or other Google controlled languages) appear to have suppressed search results on Google and YouTube. Dangerous situation where large company can manipulate user choice and market share. The freedom to freely choose and user rights need to be protected. See More
Slava Chernoy
Top Pro
•••

High level programming language

It makes it easy to learn and the learning curve is friendly for beginners. One can learn the main concepts and ignore unimportant details. While in low level programming languages, like C, one should spend a lot of time on low level details even when developing very basic (web) service. See More
Monika
Hasnat Babur Raju
Top Con
•••

No forms designer

Those who are used to Visual Studio may feel the lack of a forms designer for rapid development. See More
Sandeep Kapri
Top Pro
•••

Multiple values can be returned from a function

See More
gilch
Top Con
•••

Hard to abstract even the simplest notions

Go is famously regarded as very simple. However, this simplicity becomes problematic in time. Programmers who use Go find themselves over and over again writing the same thing from a very low point of view. Domains not already served by libraries that are easy to glue are very difficult to get into. See More
Roman Scharkov
Top Pro
•••

Provides tools for automatically formatting code for your entire software project

This helps keep every programmer on the same page in a project and eliminates arguments over formatting styles. See More
gilch
Top Con
•••

Implementation of interfaces are difficult to figure out

Finding out what interfaces are implemented by a struct requires a magic crystal ball. They are easy to write, but difficult to read and trawl through. See More
Roman Scharkov
Top Pro
•••

Great team working behind it

Go has a solid team of engineers working on it (some of the best networking engineers in the world are working on Go). Up until now, the great engineering of the language has compensated for its lack of power. See More
Fork Posix
Top Con
•••

Weak type system

See More
teadan
Elias Haileselassie
Top Pro
•••

High Performance & great concurrency support on constrained resources

The best fit for billed cloud resources. See More
teadan
Hasnat Babur Raju
Top Con
•••

Simplicity is not often beneficial

See More
Doug Sparling
Top Pro
•••

Automatically generates API documentation for installed packages

Godoc is provided to automatically generate API documentation for Go projects. Godoc also hosts it’s own self-contained web server that will list documentation for all installed packages in your Go path. See More
IntellectualCerberus
Top Con
•••

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 infrastructure. But these are major impediments to achieving good performance. See More
Roman Scharkov
Top Pro
•••

Supports splitting source code into multiple files

As long as every source code file in a directory has the same package name, the compiler will automatically concatenate all of the files together during the compilation process. See More
Hasnat Babur Raju
Top Con
•••

Requires specific directory structure and environment variable settings

Too much knowledge required for a first programming language. See More
Doug Sparling
Top Pro
•••

Programmers don't have to argue over what 10% subet of the language to implement in their software project

The language promotes programming in a specific idiomatic style, which helps keep every programmer on the same page. See More
Hasnat Babur Raju
Top Con
•••

Does not support circular dependencies

See More
Doug Sparling
Top Pro
•••

Syntax for exported code from a package is simplified to be less verbose than other languages

Any variable, type and function whose name begins with a capital letter will be exported by a project, while all other code remains private. There is no longer a need to signify that a piece of code is 'private' or 'public' manually. See More
Paolo
Doug Sparling
Top Pro
•••

Supports functional programming techniques such as function literals

This naturally also supports first class and high order functions, so you may pass functions as variables to other functions. See More
HideSee All
76

Elixir

My Recommendation for Elixir

My Recommendation for Elixir

Add Video or Image
All
30
Experiences
1
Pros
19
Cons
9
Specs
Peter Carter
Top Pro
•••

Great concurrency and scaling

Processes in the Erlang VM are lightweight and run across all CPUs. Thread handling is simpler and more intuitive, and does not require developers to specifically impliment multi-threaded solutions. With multi-core CPUs now mainstream, and octocore not uncommon, this will have a significant effect on performance now, and likely more-so in the future. See More
Endi Sukaj
JovialDumakulem
Top Con
•••

Lack of static typing

Should be mentioned that Elixir also has its own way to check type safety : pattern matching, guards, typespecs and dialyzer. See More
Hasnat Babur Raju
Hasnat Babur Raju's Experience
Still requires to know Erlang See More
Specs
Current stable version:1.11.2
Site:https://elixir-lang.org
GZipped size:3.61 MB (without required Erlang VM)
Łukasz Jan Niemier
Top Pro
•••

Pleasant Ruby-like syntax

Default Erlang syntax (which is Prolog-based) is very unpleasant for newcomers. Elixir on the other hand solved this problem with creating more familiar syntax while keeping Erlang expressivity and all features. See More
Łukasz Jan Niemier
Top Con
•••

Takes some time to wrap your head around around OTP supervisors trees

This (unique?) feature of the OTP is quite uncommon and takes some time to get into understanding what is going on, when, and how to use all it's features and servers like GenServer, Agent, etc. See More
Matthew
PleasantSirsir
Top Pro
•••

Great for concurrency

Leverages the existing Erlang BEAM VM. See More
Łukasz Jan Niemier
Top Con
•••

Requires some knowledge of Erlang

Sooner or later you will be forced to dig into internals of the libraries that you use and some of them are written in Erlang, which has slightly different syntax. However after understanding some Elixir it becomes easier. See More
Rok
Top Pro
•••

Fault-tolerant

Elixir applications are composed of lightweight processes, mainly divided into workers and supervisors. When such a process crashes it can be automatically restarted in a number of ways so that there is minimal downtime. See More
byme
Top Con
•••

Doesn't have wide adoption in industry

See More
DeliberatePolyhymnia
Top Pro
•••

Functional programming

See More
Hasnat Babur Raju
Top Con
•••

Still requires to know Erlang

Still requires to know Erlang See More
Łukasz Jan Niemier
Top Pro
•••

Easy interoperability with Erlang libraries

Elixir which is build on top of Erlang's BEAM can directly use Erlang libraries and code, without any trouble. This gives developer access to over 30 years of libraries development for Erlang without any penalty and trouble. See More
Monika
michel perez
Top Con
•••

Bad for CPU bound processing

See More
Łukasz Jan Niemier
Top Pro
•••

Built-in support for hot-upgrades and hot-downgrades

As built for telecommunications system Erlang VM requires support for application updates without interruptions in running system (imagine that your call was unexpectedly ended due to software upgrade in your provider relay station). This allows you to update your system without disconnecting your users from yours services. See More
Hasnat Babur Raju
Top Con
•••

Some design choices may seem strange

Some design choices could have been a little more appealing, for example: using "do...end" comes natural in Ruby for blocks but Elixir uses them for everything and it looks pretty weird: Enum.map [1, 2, 3], fn(x) -> x * 2 end or receive do {:hello, msg} -> msg {:world, msg} -> "won't match" end See More
PleasantSirsir
Top Pro
•••

Great documentation

Elixir's documentation is very good. It covers everything and always helps solving any problem you may have. It's also always available from the terminal. See More
Jake Gage
Top Con
•••

Immature backend runtime environments

See More
PleasantSirsir
Top Pro
•••

Easy to download libraries

Comes with built in build tool called "mix". This will automatically download libraries and put them in the scope of the application when you add them to the "deps" function and run mix deps.get See More
DeliberatePolyhymnia
Top Con
•••

Deployment is still not as easy as it should be

See More
PleasantSirsir
Top Pro
•••

Powerful metaprogramming

Write code that writes code with Elixir macros. Macros make metaprogramming possible and define the language itself. See More
PleasantSirsir
Top Pro
•••

Great getting started tutorials

The tutorials are very clear and concise (even for a person not used to functional programming). Plus they are also very mobile friendly. See More
ResourcefulPales
Top Pro
•••

Scalability

Elixir programming is ideal for applications that have many users or are actively growing their audience. Elixir can easily cope with much traffic without extra costs for additional servers. More details can be found here. See More
IntelligentNanaya
Top Pro
•••

Types don't get in the way

Gradual typing is a wonderful middle-ground for those who like dynamic languages but see the value of typing. See More
PleasantSirsir
Top Pro
•••

Full access to Erlang functions

You can call Erlang functions directly without any overhead: https://elixir-lang.org/getting-started/erlang-libraries.html See More
IntelligentNanaya
Top Pro
•••

Distributed mode

Distributed mode included by default See More
PleasantSirsir
Top Pro
•••

Syntax is similar to Ruby, making it familiar for people used to OOP

All of the benefits of Erlang; without as steep a learning curve of prolog based syntax. Elixir is heavily inspired by Ruby's syntax which many people love. See More
IntelligentNanaya
Top Pro
•••

Soft real-time

See More
DeliberatePolyhymnia
Top Pro
•••

Regular expression-based method overloading

Method overloading works in a unique manner for very clear understanding and ease of maintainability See More
IntelligentNanaya
Top Pro
•••

Built in Redis and MySQL

Redis -> ETS MySQL -> Mnesia See More
HideSee All
75

Python

My Recommendation for Python

My Recommendation for Python

Add Video or Image
All
53
Experiences
2
Pros
28
Cons
22
Specs
Robert McAlery
Peter Carter
Top Con
•••

Slower than alternative languages

Compared to alternatives such as C++, C#, F#, Elixir/Erlang or Go, Python can be sluggish and is often not a good choice for applications where performance is a significant concern. See More
Endi Sukaj
Laura Kyle
Barbara Glowa
Top Pro
•••

Easy to learn

Python has simple to learn syntax which helps beginners to utilize this programming language and has support guide available. See More
Elias Van Ootegem
Elias Van Ootegem's Experience
I've tried my hand at python, and I have to say: I'm still baffled at its popularity. It's slow, the tooling isn't great, and the syntax is horrible (I know: "You'll get used to it", and "after a while, the significant whitespace becomes a plus"... spare me the cliches, it's not for me). For quick prototyping, I suppose Python allows you to get started quickly. It's well supported and a great number of people can write it. Those who can't, can at least read it. True, but the performance is pitiful. Because so many people write it, a lot of the code out in the wild really shouldn't exist. The documentation is painful to navigate, the dependency management tool is poor (I mean: PHP has a better tool in composer!). Most of the people who write Python use frameworks like Django, and don't really understand what it does under the bonnet... I've found myself explaining to Python devs why golang yields much better performance. I started off by saying that you don't need something like nginx for a start. Your binary is the server. They seemed confused by this concept. To use python on the back end means you have too much money to burn on CPU power and RAM. Same holds true for any interpreted language in fact. The pythonians (or whatever they call themselves) can say what they want about something not being very pythonic (or "unpythonic"). The fact remains: the language allows you to do things the wrong way. PHP gets a lot of hatred for allowing people to query a database in a template, and rightfully so. Why don't we hold Python to the same standards? PHP is often criticised because it has no real deprecation process. It just ships with one or more replacement modules next to the old one, then at some point it's announced the old module will start issuing E_DEPRECATED notices, and further down the line, the extension will be removed. That is indeed messy. But let's look at Python. How many places still rely on Python 2.x? Youtube (owned by google, who employed Guido Van Rossum, creator of Python) is one. some popular modules only support Python2. How long until the community makes the switch? It's been years now... The language itself feels messy. Passing through the implicit object variable self isn't a huge problem, but it makes it harder to distinguish between static and non-static methods. The "private method by convention" rule is a joke. Python, to me, feels more like a hackers tool. An alternative to the mess that is bash, and more readable than something like Perl. Given the choice, though, I'd rather write a production grade application in anything other than python. Python is a confused language. It doesn't quite know what niche to focus on: is it a language for the web? Django seems to think that it is. Is it for data analysis, machine learning, and science? Others claim that it is. Is it a scripting language that takes away the pain of writing portable Bash, or spending days wading through someone else's Perl scripts? Perhaps. Why not add GUI's to the mix while we're at it... oh, someone did (Pygame, PyGTK, ...). I wouldn't at all be surprised if one of these days we'll see a kickstarter to build a python machine like the good old lisp machines from the days of yesteryear. Some specific oddities about the language that really irked me: Only recently type-hints were added (just checked - about bloody time) No switch-case - a wide-spread construct. This issue is commonly mitigated using dictionaries. If you need a fallthrough case, God help you... Try-catch is again a well-established paradigm, but for some reason, python chose to replace the catch keyword with except. Grammatically, this doesn't even make sense. I read "Try X except Y" to mean: try doing X, except in case Y, implying an exception is checked before the try. I know I'm nit-picking here, but things like this really bug me. No bloody explicit interfaces. Without these interfaces, you have to rely on the hack that is the pass keyword. The pass keyword. I can declare a function, class, or start a block (if, else, except, ... whatever) and tell the interpreter to just not expect anything to be there... just skip it. Save for a few very rare cases, I don't see the point. Even in those rare cases, I'd argue most of those might actually indicate you're doing something wrong to begin with. Like using a language that doesn't have interfaces, for example. Pythonians will say python is strongly typed, and it is. Internally, however, everything is a PyObject. This enables Python to be dynamically typed, but for most use-cases for backend development, you know what types you're dealing with. A statically typed language, like it or not, is safer. Python values are typed, variables are not. I can reuse the same variable for different types. It should be obvious how this makes code more error prone as time goes on. The threading issues are bizarre. Depending on the implementation, you might have things like GIL to contend with. Either way, giving threads to inexperienced developers (like many python devs are) is like taking a group of toddlers on a trip, first to a brewery, then a distillery, to end up at a firing range. It's going to get messy. I mentioned it before, but the syntax... yuck. Significant whitespace is all well and good, but leaving blank lines to make code more airy is important. brackets make it more clear when a block ends (editors even highlight the closing bracket for that reason). No such luck for python devs. See More
Specs
Current stable version:3.9.1
Platforms:Windows, Linux, macOS, AIX, IBM i, iOS, z/OS, Solaris, VMS
GZipped size:22.5MB
Typing discipline:Dynamically typed
See All Specs
Robert McAlery
Monika
Nick Luger
Top Con
•••

Not type-safe

For back-end system development, strong static type checking is extremely important. Without strong static type checking, errors that could have been detected at compile time won't show up until run time, which could have disastrous consequences. See More
ResponsibleOshosi
Top Pro
•••

Lots of tutorials

Python's popularity and beginner friendliness has led to a wealth of tutorials and example code on the internet. This means that when beginners have questions, they're very likely to be able to find an answer on their own just by searching. This is an advantage over some languages that are not as popular or covered as in-depth by its users. See More
IntellectualAsaruludu
IntellectualAsaruludu's Experience
best See More
Simona
IntellectualCerberus
Top Con
•••

Slow to run

Check for example the first result from Google. See More
ResponsibleOshosi
Top Pro
•••

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 (Integrated Development Environment: A graphical environment for editing running and debugging your code); as well as a text-based live interpreter. Both help users to get started trying out code immediately, and give users immediate feedback that aids learning. See More
JM80
Hasnat Babur Raju
Top Con
•••

Speed can matter

Python, like many interpreted and untyped languages, is fairly slow compared to compiled languages like C, C++ or Java. Sometimes this won't matter, but when it does you're talking about twenty times slower than C/C++ and ten times slower than Java. See More
ResponsibleOshosi
Top Pro
•••

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 reduces distractions, letting beginners focus on the meaning of the code. Significant whitespace also means that all code is properly and consistently indented. The language also uses natural english words such as 'and' and 'or', meaning that beginners need to learn fewer obscure symbols. On top of this, Python's dynamic type system means that code isn't cluttered with type information, which would further distract beginners from what the code is doing. See More
IntellectualCerberus
Top Con
•••

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 libraries still have varying degrees of support depending on which version of Python you use. There are syntactical differences between the versions. See More
ResponsibleOshosi
Top Pro
•••

Very similar to pseudo-code

When learning Computer Science concepts such as algorithms and data structures, many texts use pseudo-code. Having a language such as Python whose syntax is very similar to pseudo-code is an obvious advantage that makes learning easier. See More
Monika
Kamil Renczewski
Top Con
•••

Not good for mobile development

You can use frameworks like Kivy, but if your ultimate goal is to write mobile apps, Python may not be the best first choice. See More
ResponsibleOshosi
Top Pro
•••

Active and helpful community

Python has an active and helpful community, such as the comp.lang.python Google Groups, StackOverflow, reddit, etc. See More
NeighborlyHapantali
Top Con
•••

Hard to debug other people's code

As the structure of Python code is based on conventions many developers are not following them and so it is difficult to follow/extract the design of not trivial application from the code. See More
IntellectualCerberus
Top Pro
•••

Comes with extensive libraries

Python ships with a large standard library, including modules for everything from writing graphical applications, running servers, and doing unit testing. This means that beginners won't need to spend time searching for tools and libraries just to get started on their projects. See More
Kamil Renczewski
Top Con
•••

Does not teach you about data types

Since Python is a dynamically typed language, you don't have to learn about data types if you start using Python as your first language. Data types being one of the most important concepts in programming. This also will cause trouble in the long run when you will have to (inevitably) learn and work with a statically typed language because you will be forced to learn the type system from scratch. See More
Elliot Alderson
Top Pro
•••

It's really simple

It's very simple for understanding how programming works. See More
Hasnat Babur Raju
Top Con
•••

Significant whitespace

While proper formatting is essential for any programmer, beginners often have trouble understanding the need and lack the discipline to do it. Add to that all those editors that randomly convert N spaces (usually 8) to tabs and you get an instant disaster. See More
Lubo
Top Pro
•••

Can be used in many domains

Python can be used across virtually all domains: scientific, network, games, graphics, animation, web development, machine learning, and data science. See More
Monika
Elias Van Ootegem
Top Con
•••

Inelegant and messy language design

The first impression given by well-chosen Python sample code is quite attractive. However, very soon a lack of unifying philosophy / theory behind the language starts to show more and more. This includes issues with OOP such as lack of consistency in the use of object methods vs. functions (e.g., is it x.sort() or sorted(x), or both for lists?), made worse by too many functions in global name space. Method names via mangling and the init(self) look and feel like features just bolted on an existing simpler language. See More
Elliot Alderson
Top Pro
•••

Good documentation

The Python community has put a lot of work into creating excellent documentation filled with plain english describing functionality. Contrast this with other languages, such as Java, where documentation often contains a dry enumeration of the API. As a random example, consider GUI toolkit documentation - the tkinter documentation reads almost like a blog article, answering questions such as 'How do I...', whereas Java's Swing documentation contains dry descriptions that effectively reiterate the implementation code. On top of this, most functions contain 'Doc Strings', which mean that documentation is often immediately available, without even the need to search the internet. See More
Monika
Elias Van Ootegem
Top Con
•••

Confused as to its purpose

Python is used for 1001 different tasks. As a result, the language lacks a clear direction. It seems to be loved by system administrators (because they are done with the mess that is Perl, or Bash). At the same time, a lot of people seem to really love Django. Scientists use Python because it's easy to learn. It seems to have established itself in other fields to do with big data and experimental stuff like machine learning to some extent. The result is a language that feels confused and more of a collection of hackers tools than a purpose-built, razor sharp tool waiting for an expert pair of hands. See More
Elliot Alderson
Top Pro
•••

Has many libraries for scientific computing, data mining and machine learning

Python is commonly used in data science and has many libraries for scientific computing, such as numpy, pandas, matplotlib, etc. See More
CourageousBaalHammon
Top Con
•••

Bad for games

Python has a lot of frameworks like pygame, but exporting the game is hard and building files like .exe gets very large and have a bad performance on bad computers. See More
Michael Howitz
Top Pro
•••

Advanced community projects

There are outstanding projects being actively developed in Python. Projects such as the following to name a random four: Django: a high-level Python Web framework that encourages rapid development and clean, pragmatic design. iPython: a rich architecture for interactive computing with shells, a notebook and which is embeddable as well as wrapping and able to wrap libraries written in other languages. Mercurial: a free, distributed source control management tool. It efficiently handles projects of any size and offers an easy and intuitive interface. PyPy: a fast, compliant alternative implementation of the Python language (2.7.3 and 3.2.3) with several advantages and distinct features including a Just-in-Time compiler for speed, reduced memory use, sandboxing, micro-threads for massive concurrency, ... When you move on from being a learner you can still stay with Python for those advanced tasks. See More
Monika
CourageousBaalHammon
Top Con
•••

Worst language design ever

Instead of sticking to a certain paradigm, the original writer of the language couldn't make up his mind, and took something from everywhere, but messing it up as he went by. This is possibly one of the worst balanced languages ever. People who pollute their mind with Python and think it's the best thing since sliced bread, will have to un-learn a lot of garbage 'pythonesque' habits to actually learn how to program. It's not because the academic world uses it a lot, that it's a good language. It says something about the inability of the academic world to write decent code, actually. See More
Arpit Arya
Carson Wood
Top Pro
•••

Lots of framework choices

Has many frameworks like flask, django, pyramid, etc See More
Zi-yao Jian (XenStalker)
Top Con
•••

Multi-threading can introduce unwanted complexity

Although the principals of multi-threading in Python are good, the simplicity can be deceptive and multi-threaded applications are not always easy to create when multiple additional factors are accounted for. Multi-thread processes have to be explicitly created manually. See More
Michael Howitz
Top Pro
•••

Static typing via mypy

Python's syntax supports optional type annotations for use with a third-party static type checker, which can catch a certain class of bugs at compile time. This also makes it easier for beginners to gradually transition to statically typed languages instead of wrestling with the compiler from the start. See More
Hasnat Babur Raju
Top Con
•••

Limited support for functional programming

While Python imports some very useful and elegant bits and pieces from FP (such as list comprehensions, higher-order functions such as map and filter), the language's support for FP falls short of the expectations raised by included features. For example, no tail call optimisation or proper lambdas. Referential transparency can be destroyed in unexpected ways even when it seems to be guaranteed. Function composition is not built into the core language. Etc. See More
Alex
Luiz Barni
Top Pro
•••

Promotes beautiful code

You are basically put in a situation where you have to write beautiful code, because of the indentation rules. See More
Hasnat Babur Raju
Top Con
•••

Unflexible userbase

You will be expected to rigidly stick to the coding practices and to do everything by-the-numbers. See More
ResponsibleOshosi
Top Pro
•••

Cross-platform

Installs and works on every major operating systems if not already installed by default (Linux, macOS). See More
WhiteLilac
Reviews
Top Con
•••

Unstable python enviroments

An python enviroment can be easily turned into an unusable mess thus breaking a production system with the slightest effort. Totally Not Production Ready. See More
Paolo
Arpit Arya
Top Pro
•••

Supports multiple databases

See More
Hasnat Babur Raju
Top Con
•••

Version Confusion with V2.x and V3.x

See More
gilch
Top Pro
•••

Best chances of earning most money

According to Quartz, Python programming skills on average earn $100,000 per year. Closely followed by Java, C++, JavaScript, C, and R with $90,000 per year and above. See More
NeighborlyHapantali
Top Con
•••

Might not be very future-proof

Lots of features that will probably be crucial as time goes (good support for parallelism for example) are missing or are not that well-supported in Python. See More
gilch
Top Pro
•••

One right way to do things

One of the Guiding Principles of Python is that there should be only one obvious way to do things. This is helpful for beginners because it means that there is likely a best answer for questions about how things should be done. See More
Belle
Polyglot
Alex
Top Con
•••

No delimiters, just indentation

If you forget to indent your code, it will not work properly. Also you can't see the end of the command (";") or the end of the scope ("{" and "}"). This can prove itself very inconvenient for both beginners and experienced programmers. See More
Elias Van Ootegem
Top Pro
•••

Language of choice for hobbyists

Hackers projects based on platforms like the RaspberryPi almost unanimously use Python. Editors like (neo)Vim allow you to write plugins in Python... you can easily build/extend something if you know how to write this language. See More
tehsphinx
Top Con
•••

The process of shipping/distributing software is reatively complicated

Once you have you program the process of having a way to send it to others to use is fragile and fragmented. Python is still looking for the right solution for this with still differences in opinion. These differences are a huge counter to Python's mantra of "There should be one-- and preferably only one --obvious way to do it." See More
CompetentChernobog
Top Pro
•••

Interpreters for JS, Microtontrollers, .Net , Java & others

Python is not limited to just be cross platform. It goes far beyond all high level languages since it can run on top of several other frameworks & architectures : Examples of interpreters: Standard (PC Win/Lin/Mac, ARM, Raspberry, Smartphones): CPython usually, but some more specialized for smartphones: Kyvi, QPython, ... Web Browser JS : Brython, PyJS, .Net : IronPython Java: Jython Microcontrollers with WiFi like ESP8266 or ESP32: MicroPython Can be statically compiled (instead of interpreted) with Cython. (Do not mix up with cPython) With python, you're sure your code can run (almost) everywhere, from 2€ computers to the most expensives. So, for instance, with Jython you can access the Java libraries with Python language. See More
Hasnat Babur Raju
Top Con
•••

Abstraction to the point of hinderance

Python is abstracted far enough that if it's your first language, it will be harder to pick up lower level languages later versus going the other direction. See More
Simona
CompetentChernobog
Top Pro
•••

Import Turtle

Do something visually interesting in minutes by using the turtle standard library package. Turtle graphics is a popular way for introducing programming to kids. It was part of the original Logo programming language developed by Wally Feurzig and Seymour Papert in 1966. Imagine a robotic turtle starting at (0, 0) in the x-y plane. After an import turtle, give it the command turtle.forward(15), and it moves (on-screen!) 15 pixels in the direction it is facing, drawing a line as it moves. Give it the command turtle.right(25), and it rotates in-place 25 degrees clockwise. Turtle can draw intricate shapes using programs that repeat simple moves. Example Turtle Star Drawing from turtle import * color('red', 'yellow') begin_fill() while True: forward(200) left(170) if abs(pos()) < 1: break end_fill() done() See More
CompetentChernobog
Top Pro
•••

Good introduction to data structures

Python's built-in support and syntax for common collections such as lists, dictionaries, and sets, as well as supporting features like list comprehensions, foreach loops, map, filter, and others, makes their use much easier to get into for beginners. Python's support for Object Orient Programming, but with dynamic typing, also makes the topic of Data Structures much more accessible, as it takes the focus off of more tedious aspects, such as type casting and explicitly defined interfaces. Python's convention of only hiding methods through prefacing them with underscores further takes the focus off of details such as Access Modifiers common in languages such as Java and C++, allowing beginners to focus on the core concepts, without much worry for language specific implementation details. See More
gilch
Top Pro
•••

Easy to find jobs

Python's popularity also means that it's commonly in use in production at many companies - it's even one of the primary languages in use at Google. Furthermore, as a concise scripting language, it's very commonly used for smaller tasks, as an alternative to shell scripts. Python was also designed to make it easy to interface with other languages such as C, and so it is often used as 'glue code' between components written in other languages. See More
PersistentCeres
Top Pro
•••

Automatically optimized C code

Django specifically uses Cython to turn python code to C code that is super fast. Though python on its own is slow, with cython fast. See More
CompetentChernobog
Top Pro
•••

Has features of both high and low level language

It is somewhere between C and Java. See More
prohyon
Top Pro
•••

Includes pygame library

Want to start game development? No problem! Using pygame open-source library you can fast begin creating games without worrying about pointers or undefined behaviors which they exists in C/C++. See More
Alejandro Arciniegas
Trimalchio Pertinax
Top Pro
•••

Multiparadigm language

Python supports three 'styles' of programming: -Procedural programming. -Object orientated programming. -Functional programming. All three styles can be seamlessly interchanged and can be learnt in harmony in Python rather than being forced into one point of view, which is helpful for easing confusion over the debate amongst programmers over which programming paradigm is best, as developers will get the chance to try all of them. See More
HideSee All
67

Rust

My Recommendation for Rust

My Recommendation for Rust

Add Video or Image
All
29
Experiences
1
Pros
17
Cons
10
Specs
Kristaps
Oleg Tsyba
Top Pro
•••

Compiler prevents memory management and concurency mistakes

See More
ResponsibleOmfale
Top Con
•••

Significant time required to understand the language fully

There's the infamous borrow checker for example. See More
SophisticatedMayahuel
SophisticatedMayahuel's Experience
Please no, programming in Rust feels like bashing my head against a wall. The syntax is a horrible combination of ML/Haskell and C. Tha lambda syntax is strange, the need to constantly unbox and collect standard lib types, the weird guideline that 'you shouldn't use return except sometimes you should' as if they want to emphasize pure functions but only go halfway with it; the language is unwieldy. So-called safe Rust has both borrow checking soundness holes and provenance-based LLVM miscompilations. Creating &mut without incurring UB is harder than C++. Rust is not my favorite cup of tea. See More
Specs
Current stable version:1.71.1
Platforms:Linux, MacOS X, Windows, BSD
License:MIT/Apache
PleasantSirsir
Top Pro
•••

Catch errors at compile-time

Since Rust is statically typed, you can catch multiple errors during compile time. This is extremely helpful with debugging, especially compared with dynamically typed languages that may fail silently during runtime. See More
SpiritedClio
Top Con
•••

Low readability

Harder to read and understand language. See More
PleasantSirsir
Top Pro
•••

Support for macros

When you identify a part of your code which gets repeated often, which you cannot abstract using functions or classes, you can use Rust's built-in Macros. See More
Monika
ArticulateLulal
Top Con
•••

Forced fighting with compiler

Will spend way too much time trying to get code to compile. See More
PleasantSirsir
Top Pro
•••

Threads without data races

Unique ownership system guarantees a mutable data to be owned and mutated by only one thread at a time, so there's no data race, and this guarantee is checked at compile time statically. Which means easy multi-threading. Of course, immutable data can be shared among multiple threads freely. See More
SophisticatedMayahuel
Top Con
•••

Very ugly and verbose syntax

Compared to many languages. One tool needed to be productive is the language to be pleasing and effective, yet Rust friction is as high as its safety. See More
PleasantSirsir
Top Pro
•••

Compiles to machine code allowing for extra efficiency

Rust uses LLVM as a backend, among other things this allows Rust code to compile down to machine languages. This allows developers to write programs that run as efficiently as possible. See More
SophisticatedMayahuel
Top Con
•••

Rust not as safe as it pretends to be

Rust problems: 1) Massive undisclosed usage of unsafe. 2) Massive amounts of memory safety CVEs - see details. 3) Large bloated Rust binaries increase attack surface for exploits. 4) Many corporate types claiming Rust is safe, don't actually program or use it (have some quiet financial interest to push it). See More
PleasantSirsir
Top Pro
•••

Generics support

You don't have to write same array and dictionary classes hundreds and thousands times for strong type check by compiler. See More
SophisticatedMayahuel
Top Con
•••

Long compile times

Way longer to compile than other languages. See More
Jeroen
Top Pro
•••

Lifetime semantics have benefits in other languages

When you are used to the lifetime semantics of Rust, you can easily use the knowledge to also better manage memory in other programming languages. See More
SophisticatedMayahuel
Top Con
•••

Low productivity

The compiler is strict, such as ownership and borrowing checkers. See More
PleasantSirsir
Top Pro
•••

Supports cross compilation for different architectures

Since Rust 1.8 you can install additional versions of the standard library for different targets using rustup/multirust. For example: $ rustup target add x86_64-unknown-linux-musl Which then allows for: $ cargo build --target x86_64-unknown-linux-musl See More
TallFurrina
Top Con
•••

Not as useful or productive as advertised.

If really out here wanting to use something besides C/C++, in 98% of use cases, would do just as well or be better off using something other than Rust. Will complete the project faster, would be easier, will be happier, and nearly as safe (use newer language with optional GC). See More
PleasantSirsir
Top Pro
•••

Easy to write understandable code

While not as verbose as Java, it still is much more verbose than languages like Go and Python. This means that the code is very explicit and easy to understand. See More
TallFurrina
Top Con
•••

Steep learning curve

Pretty strict and hard to adapt for beginners. See More
PleasantSirsir
Top Pro
•••

Built-in concurrency

Rust has built-in support for concurrency. See More
michel perez
Top Con
•••

Lifetimes can be tricky to learn

See More
PleasantSirsir
Top Pro
•••

Zero-cost futures or Async IO

See More
PleasantSirsir
Top Pro
•••

Makes developers write optimal code

Rust is a modern programming language written around systems. It was designed from the ground up this way. It's language design makes developers write optimal code almost all the time, meaning you don't have to fully know and understand the compiler's source code in order to optimize your program. Furthermore, Rust does not copy from memory unnecessarily, to give an example: all types move by default and not copy. Even references to types do not copy by default. In other words, setting a reference to another reference destroys the original one unless it's stated otherwise. See More
teadan
JovialGlooscap
Top Pro
•••

Official package manager and build tool

Cargo is the official package manager for Rust. It comes with the language and downloads dependencies, compiles packages, and makes and uploads distributable packages. See More
Monika
Kovah
Top Pro
•••

Most popular programming language 2017

Rust was the number one wanted programming lnguage in the 2017 Stack Overflow Developer Survey (see here). See More
rasmusmerzin
Top Pro
•••

Great support for WebAssembly

It is viable to write client-side web applications entirely in Rust. See More
Simona
Alex
Pro Neon
Top Pro
•••

Functional programming

Very easy to create functional with some additional from structure application. See More
Pro Neon
Top Pro
•••

Big community

The biggest community contributing to language. See More
HideSee All
--

TypeScript

My Recommendation for TypeScript

My Recommendation for TypeScript

Add Video or Image
All
30
Experiences
1
Pros
16
Cons
12
Specs
Gabriel Csollei
Top Pro
•••

Optional static typing

Typescript has optional static typing with support for interfaces and generics, and intelligent type inference. It makes refactoring large codebases a breeze, and provides many more safeguards for creating stable code. See More
Gabriel Csollei
Top Con
•••

Too similar to Javascript

Presents some advantages compared to Javascript, but because it is designed to be a superset of Javascript, it means all the bad parts of Javascript are still present. See More
Ryan O’Hara
Ryan O’Hara's Experience
Reasons to use JavaScript: no compile step What TypeScript adds to JavaScript: a compile step See More
Specs
Current stable version:3.7
IDE Support:Very good
Azerty pow
Top Pro
•••

Great support for editors (Sublime, Code, Vim, IntelliJ...)

See More
Hasnat Babur Raju
Top Con
•••

Benefits don't exceed costs

It is rather unnecessarily complicated for experienced JavaScript developers. See More
prohyon
Top Pro
•••

Low number of logical errors brought in by built-in type annotations

TypeScript's built-in type signatures allow developers to fully document interfaces and make sure that they will be correctly compiled. Therefore, cutting down on logical errors. See More
AffableHobnil
Top Con
•••

Another Microsoft Evil Scheme

Another slick trick by Microsoft to undermine or disrupt a competitor. Think of the history of Microsoft versus Borland/Delphi or C#/Microsoft versus Java/Sun. Now TypeScript/Microsoft versus JavaScript. See More
prohyon
Top Pro
•••

First party Visual Studio support

As a Microsoft developed project, it has first party Visual Studio support that's on par with its C# support with features like syntax sensitive statement completion. See More
Hasnat Babur Raju
Top Con
•••

Syntax is too verbose

See More
prohyon
Top Pro
•••

Adds support for object-oriented programming

Typescript enables familiar object-oriented programming patterns: classes, inheritance, public/private methods and properties, et cetera. See More
Gabriel Csollei
Top Con
•••

Type checking not enforced by default

You have to use compiler flags to make sure it catches flaws like usage of implicit any, etc. See More
prohyon
Top Pro
•••

Has a repository of high quality TypeScript type definitions for popular libraries

There are many ready to use and high quality TypeScript definitions for popular libraries including jquery, angular, bootstrap, d3, lodash and many-many more. See More
Gabriel Csollei
Top Con
•••

No support for dead code elimination

Typescript compiler does not remove dead code from generated file(s), you have to use external tools to remove unused code after compilation. Which is harder to achieve, because Typescript compiler eliminated all type information. See More
Gabriel Csollei
Top Pro
•••

Strict superset of Javascript

Every existing Javascript program is already a valid TypeScript program giving it the best support for existing libraries, which is particularly useful if you need to integrate with an existing Javascript code base. See More
Hasnat Babur Raju
Top Con
•••

No support for conditional compilation

There is no clean way to have debug and release builds compiled from the same source, where the release version removes all debugging tools and outputs from the generated file(s). See More
prohyon
Top Pro
•••

Ability to do functional programming

See More
Hasnat Babur Raju
Top Con
•••

Small community

See More
Rūdis
Azerty pow
Top Pro
•••

Strong typed language

Lots of benefits of it, you can read this. See More
Hasnat Babur Raju
Top Con
•••

No Java-like package structure

If you prefer a Java-like approach of partitioning your code into different packages, the module system of typescript will confuse you. See More
Azerty pow
Top Pro
•••

Compiles to very native looking code

Compiles to simple looking Javascript making it easy to understand what is happening and learn the language (if you already know Javascript). See More
Hasnat Babur Raju
Top Con
•••

Requires "this" for field access

Even in cases were there is no ambiguity, you still have to use "this.fieldName" instead of just "fieldName". See More
Gabriel Csollei
Top Pro
•••

Polyfill for ES6 fat-arrow syntax

Typescript implements the fat arrow syntax, which always maintains the current context for this and is a shorter/more convenient syntax than traditional function definition. See More
Simona
Hasnat Babur Raju
Top Con
•••

Far less typed libraries than Dart (and TSD are never up to date).

Just compare this and this Typescript => 930 Dart => 2060 See More
Azerty pow
Top Pro
•••

Works well with Angular 2

Angular 2 is built using TypeScript and applications built using it can make use of that (or not). See More
Hasnat Babur Raju
Top Con
•••

Type inference coverage is incomplete

The default type when declaring and using a variable is any. For example, the following should break but does not: function add(a:number) { return a + 1 } function addAB(a, b) {return add(a) + b} addAB("this should break but doesn't :(", 100) In order to avoid this, you have to declare type signatures for every variable or parameter or set the flag --noImplicityAny when running the compiler. See More
Azerty pow
Top Pro
•••

Great support for React, integrated typed JSX parsing

Strongly typed react components, so UI "templating" automatically gains type safety. See More
prohyon
Top Pro
•••

Works well with existing Javascript code

Both can call Javascript code and be called by Javascript code. Making transitioning to the language very easy. See More
prohyon
Top Pro
•••

Built and supported by Microsoft

Being built by Microsoft, TypeScript is much more likely than most other similar open-source projects to receive continued long-term support, good documentation, and a steady stream of development. See More
prohyon
Top Pro
•••

Clear roadmap

TypeScript has a clear and defined roadmap with rapid and constant releases. See More
HideSee All
61

Java

My Recommendation for Java

My Recommendation for Java

Add Video or Image
All
35
Experiences
2
Pros
19
Cons
13
Specs
Ole Kristian Sandum
Top Con
•••

Bloated

For the sake of your code's correctness, you had better write (or have your IDE generate) getters and setters for data fields you expose. And for the sake of safety you should definitely add null-assertions to all non-null method parameters. You also have to catch or rethrow/redeclare all checked exceptions. This, among other things, makes the average Java code extremely bloated and difficult to read. See More
Alex
Luiz Barni
Mário Barbosa
Top Pro
•••

Lots of libraries

See More
Abioye Bankole
Abioye Bankole's Experience
I have used Java for more than 18 years and its concept of object-oriented programming makes code management a worthwhile activity. See More
Specs
Current stable version:10
Site:https://www.java.com
Price:Open source (free)
Ryan O’Hara
Top Con
•••

Half-baked generics

Type erasure means it doesn't even exist at runtime. The whole generics system is confusing for beginners. See More
Bruno Déry
Top Pro
•••

Mature corporate multi-platform language

See More
Santosh chaudhary
Santosh chaudhary's Experience
Java is the future. See More
SophisticatedHonos
Top Con
•••

Too verbose

A Hello world needs package, class, static method and the actual printf. Reading a line from input requires instatiating 5 objects in the right order. Exceptions are everywhere, particularly since all values are nullable. Java has a getter/setter culture, but without native syntax support. portable Java code lacks anonymous functions, and continues to lack good support for partial application, compensating instead with verbose design patterns, kludges like anonymous inner classes, or just inline code. It is statically typed without type inference, with a culture that promotes long class names. Poor support for sum-types and pattern matching leads to overuse of inheritance for dynamic dispatch and chains of nested conditionals Especially for beginners, this can make reading Java code feel overwhelming; most Java courses tell students to simply copy, paste, and ignore a significant percentage of the code until they've learned enough to understand what it means. For experienced programmers, this makes Java feel tedious, especially without an IDE, and actively discourages some solutions and some forms of abstraction. See More
Laura Kyle
Chip Chipiik
Top Pro
•••

Lots of well paid job opportunities

See More
Kamil Chmielewski
Top Con
•••

Locks you into the static OOP mindset

See More
NeighborlyHapantali
Top Pro
•••

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 usage. Polls (see sources below) show it to be consistently in high demand, particularly as measured by job board postings. This makes Java a great time investment, as you will be easily able to get a job utilizing your skills, particularly as those Java applications in production now will continue to need maintenance in the future. It also results in great support for tools and plenty of computer science books, example projects and online tutorials. See More
Chip Chipiik
Top Con
•••

Can be hard to choose right stack (frameworks) for beginner

See More
NeighborlyHapantali
Top Pro
•••

Platform Independent

Because of the Java Virtual Machine, the Java programming language is supported wherever a JVM is installed. See More
Aubrey
Ole Kristian Sandum
Top Con
•••

Slow to evolve

Java, which is probably the industry's biggest language and platform, is notorious for being slow to evolve. Many useful features, concepts and ideas that the majority of the languages out there have already used for years, are yet to be implemented (or even considered) in Java. Language features which could boost productivity, safety, and overall quality and have proven to do so, are not coming to the next version of Java (probably not the next after that either). See More
Thaniell
Top Pro
•••

Fantastic IDEs

Because Java is statically typed, integrated development environments (IDEs) for Java can provide a lot more feedback on errors you will encounter. Java IDEs can give you specific errors in the location where they occur without having to run the code every time. This makes is faster to debug and learn from your mistakes. IDEs also have extensive auto complete capabilities that can help you learn the programming libraries you are using faster and tell you what functions are available. See More
Endi Sukaj
Bruno Déry
Top Con
•••

A bit overkill for smaller projects and junior developers

See More
NeighborlyHapantali
Top Pro
•••

Massive amount of libraries and APIs

Java has been around for such a long time that there have been tens of thousands of APIs and libraries written for almost anything you want to do. See More
Kamil Chmielewski
Top Con
•••

Lacks modern features

Java evolves very slowly - lambda expressions weren't available until Java 8 (which is not available on Android), and despite getters/setters being a long-time convention, the language still doesn't have native accessor syntax (a la C#'s properties). It's unlikely newer, popular features like list comprehensions or disjoint union types will be available anytime soon. While not strictly required for novice programmers, these make problems more complicated and tedious than they need to be - for example, when a simple local function would do, (portable) Java demands anonymous inner classes, an interface and a class, or worse, no abstraction at all. See More
Izem Lavrenti
أحمد حبنكة
Top Pro
•••

Standard-based programming

It's good to have standards for the many tasks needed to do in the web, this makes it easier for you to swap a library without changing much in your code. See More
Ryan O’Hara
Top Con
•••

Worst-of-both-worlds static type system

It's just barely good enough to make decent IDEs, but it's not at the level of Idris or even Haskell. For large enterprise projects, the IDE support is important, but the static typing in Java just gets in the way for the smaller projects beginners would start with. Python is duck typed and this makes small programs easy to develop quickly, but the price is that you have to write unit tests to avoid breaking larger programs. In contrast, you can be reasonably certain that a program that actually compiles in Idris does what you want, because assertions are built into the powerful type system. Java can't make that claim and still requires unit tests. Java has the worst of both worlds because of its poor static type system. See More
gilch
Top Pro
•••

Huge community

See More
Kamil Chmielewski
Top Con
•••

Enforces some misguided principles

Java utilizes principles that organize code into "classes" as the central concept, instead of more familiar organizational methods. See More
gilch
Mário Barbosa
Top Pro
•••

Documentation is excellent

See More
Kamil Chmielewski
Top Con
•••

Garbage collection may teach bad habits

Java is a garbage collected language and it does not force programmers to think about memory allocation and management for their programs. This is fine most of the time. However, it may cause some difficulties in adjusting to a non-GC language (such as C for example), where memory management needs to be done manually. But if good coding practices and habits are followed, this shouldn't be much of a problem. See More
Laura Kyle
Chip Chipiik
Top Pro
•••

Best virtual machine

Proven, highly tuned and high performance multiplatform JVM. See More
Ryan O’Hara
Top Con
•••

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 example, the "protected" keyword not only grants access to child classes, but to the entire package. Since small programs are written as one package, it becomes functionally equivalent to "public". In OOP, everything is supposed to be an object, but, in Java, primitive types such as integers, booleans and characters are not, and must be handled as special cases. Java continues to lack many high-level features, and, particularly prior to Java 7, compensated by adding confusing Java-only features, such as anonymous subclasses. Some example code is unreadable without knowing a special-case feature, libraries differ in style based on when they were released or what platform they target(e.g., Android vs. Desktop), and some solutions just aren't available on some platforms. See More
Mário Barbosa
Top Pro
•••

Strong typed language with an excellent compiler

You always know that if it compiled then you won't have big surprises when running See More
Ole Kristian Sandum
Top Con
•••

No top-level functions

Sometimes the appropriate abstraction is just a function. In Java everything happens within a class. If all you want is simply a function, then you first need a class. This class should act as a container or a namespace for your function. Therefore it should not be instantiated, so you should make it final and its constructor private. Maybe make the constructor throw an exception for good measure. Within this class you can declare your function as a static method. Now, the class we declared (usually referred to as a utility class or a helper class) can hardly be considered a class anymore. There is no way to make an object out of it and it exists merely to act as a namespace for your function(s). See More
Mário Barbosa
Top Pro
•••

Pushes you to use pattern-oriented approaches

Just by looking at the language's source code you can learn a lot and get good ideas as to how to develop your own approaches "the good way". See More
NeighborlyHapantali
Top Pro
•••

Consistent programming standards

Most Java code follows very standardized coding styles. This means that when you're starting out, there are fewer questions about how you should implement something as the programming styles and patterns are well established and consistent. This consistent style means that it's often easier to follow others' example code, and that it's more likely to meet at least a certain minimum standard of quality. This discipline with consistent stylistic standards also becomes useful later, when collaborating on projects with larger teams. See More
Hasnat Babur Raju
Top Pro
•••

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's the most common paradigm used in industry. Java is the best choice as an introduction to object oriented languages because, as a statically-typed OOP-only language, it very clearly highlights core OOP principles such as encapsulation, access control, data abstraction, and inheritance. While a scripting language provides more flexibility and terseness, learning a scripting language first would not instill these fundamental concepts as well, as they tend to obscure details such as how types work, and are less encouraging of an object oriented style. See More
Reviews
Top Pro
•••

Market share

Java is the lingua franca of the enterprise languages. Most Databases expose their APIs in Java (sometimes it is Java Only API). This together with C++ are the top backend languages. See More
Monika
Hasnat Babur Raju
Top Pro
•••

You know what you do, and still simple

Because everything is typed and there is no silent cast or fail, you know exactly what you are manipulating, and there's no magic. Have you ever watched a beginner struggling with a "couldn't call method x on y" in Python or Javascript? These languages don't teach you what proper types are. Java is one of the simplest languages to learn these basic concepts you find in every programming language. See More
Hasnat Babur Raju
Top Pro
•••

Best introduction to "C style" languages

The Java syntax is very similar to other C style languages. Learning the fundamentals of Java will port over well to other languages so you can apply what you've leaned to other languages afterwards. See More
Izem Lavrenti
أحمد حبنكة
Top Pro
•••

Novel ideas

See More
HideSee All
--

V

My Recommendation for V

My Recommendation for V

All
16
Pros
15
Specs
prohyon
Top Pro
•••

Fast as C

V is easier than C and fast like C. See More
Specs
Platforms:Windows, Linux, Mac
Site:vlang.io, https://github.com/vlang
License:MIT
Typing discipline:Strong, static, inferred, structural
See All Specs
prohyon
Top Pro
•••

Generics

V has generics. See More
prohyon
Top Pro
•••

Simplicity

V is simple and powerful. See More
CommunicativeFebruus
Top Pro
•••

C Interop

Can import C libraries, structs, and headers. See More
SpiritedClio
Top Pro
•••

Cross-platform

Compile to many OSes. See More
SpiritedClio
Top Pro
•••

Clear syntax

Highly understandable language. See More
SpiritedClio
Top Pro
•••

Inline assembly

Can add Assembly code. See More
CommunicativeFebruus
Top Pro
•••

Safety

V is very safe. See More
CommunicativeFebruus
Top Pro
•••

Can create multi-OS GUIs

Multi-OS GUI creation is more integrated into the language than others. See More
ExceptionalTlazolteotl
Top Pro
•••

Supports concurrency and channels

Can run functions concurrently that communicate over channels. See More
ExceptionalTlazolteotl
Top Pro
•••

Closures

V has closures, which gives the user additional options and usefulness. See More
SpiritedClio
Top Pro
•••

Sum types

V has Sum Types. See More
TallFurrina
Top Pro
•••

Fast compile times

Compiles programs fast, less waiting around, so more productive and fun. See More
ColorfulPhobos
Top Pro
•••

Friendly and helpful community

Just check the V Discord channel or their GitHub Discussions and you will see by yourself. See More
SpiritedClio
Top Pro
•••

Single paradigm

Follows the philosophy that there should be only one way to do something, as opposed to multi-paradigm languages like C++. See More
HideSee All
--

Clojure

My Recommendation for Clojure

My Recommendation for Clojure

Add Video or Image
All
20
Experiences
1
Pros
15
Cons
3
Specs
michel perez
Top Pro
•••

Simplicity

See More
Cezar Jenkins
Top Con
•••

Requires the JVM

See More
InterestingAm-heh
InterestingAm-heh's Experience
Truly the best general-purpose language, it has great language design and all the functionality you could wish for with back-end development. For free you get front-end thrown in too, thanks to Clojurescript an d Garden CSS. See More
Specs
Current stable version:1.10.1
Platforms:Windows, Linux, Mac
Site:www.clojure.org
Price:Free, Open Source
See All Specs
Kristaps
Adrian Clepcea
Top Pro
•••

Can use all the libraries from the huge JVM ecosystem

You can easily import Java libraries and use them in your program. See More
Robert McAlery
Top Con
•••

Lack of static type safety

Problems that could have been easily detected at compile time show up a run-time, which is terrible for back-end development. See More
Paolo
Adrian Clepcea
Cezar Jenkins
Top Pro
•••

Easy concurrency

Uses channels and STM (Software Transactional Memory). That means you no longer need to fear all the locks and deadlocks from the standard concurrency model. See More
DiligentCoeus
Top Con
•••

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 was caused or what caused it. See More
InterestingAm-heh
Top Pro
•••

Cross platform

Clojure compiles to JVM bytecode and runs inside the JVM. This means that applications written in Clojure are cross-platform out of the box. See More
InterestingAm-heh
Top Pro
•••

Minimal syntax

Being a LISP, programs are simple: they're just functions and data. That it doesn't get bogged down with syntax or the loftier FP concepts like monads makes it one of most approachable functional languages for beginners. See More
InterestingAm-heh
Top Pro
•••

Immutability is the default

Clojure programmers are highly encouraged to use immutable data in their code. Therefore, most data will be immutable by default. State change is handled by functions (for transformations) and atoms (an abstraction that encapsulates the idea of some entity having an identity). See More
DedicatedMutunusTutunus
Top Pro
•••

Extensible

Clojure has an elegant macro system which enables language additions, Domain-specific languages (DSLs), to be created much easier than most other languages (with the exception of Racket, perhaps). See More
DedicatedMutunusTutunus
Top Pro
•••

Good for writing concurrent programs

Since Clojure is designed for concurrency, it offers things like Software Transaction Memory, functional programming without side-effects and immutable data structures right out of the box. This means that the development team can focus their energies on developing features instead of concurrency details. See More
Yoshiyuki
InterestingAm-heh
Top Pro
•••

No C/Java syntax

This is refreshing. See More
InterestingAm-heh
Top Pro
•••

Tries to solve problems as simply as possible

Simplicity is one of the pillars on which Clojure is built. Clojure tries to solve many problems in software development as simply as possible. Instead of building complex interfaces, objects or factories, it uses immutability and simple data structures. See More
DedicatedMutunusTutunus
Top Pro
•••

Dynamic language

A superb data processing language. While rich type and specification systems are available they are optional. See More
Paolo
michel perez
Top Pro
•••

Compiles to Javascript

See More
InterestingAm-heh
Top Pro
•••

Rich Hickey

The creator is so awesome, he's a feature. Just look up his talks and see why. See More
InterestingAm-heh
Top Pro
•••

Huge ecosystem of libraries to work with

There's a very large ecosystem of high-quality Clojure libraries which developers can use. One example is Incanter. It's a great data analytics library and a very powerful tool for dealing with matrices, datasets and csv files. See More
InterestingAm-heh
Top Pro
•••

Great tool used in automating, configuring and managing dependencies available

Leiningen is a very useful tool for Clojure developers. It helps wiht automation, configuration and dependency management. It's basically a must for every Clojure project. See More
HideSee All
59

C#

My Recommendation for C#

My Recommendation for C#

Add Video or Image
All
22
Pros
15
Cons
6
Specs
Ray
Top Con
•••

Complex syntax

Too many syntactic constructs to learn before it becomes usable. See More
Ray
Top Pro
•••

.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, displaying a window or editing files. Unlike many other languages, you don't have to pick between a handful of libraries for every small task you want to do. See More
Specs
Platforms:Windows, Linux, Mac, Android, IOS
License:MIT, Open Source
IDE Support:Visual Studio on Windows, JetBrains Rider, Visual Studio Code on other platforms
Standard:ECMA
AffableHobnil
Top Con
•••

.NET is a mess

Continual drama with standards, updates, Microsoft, and being really cross-platform. See More
Yoshiyuki
Ray
Top Pro
•••

Very high demand in the industry

See More
AffableHobnil
Top Con
•••

Class-based OOP Centric Language

Way too much into class-OOP paradigm. See More
Simona
Ray
Top Pro
•••

Incredibly well-engineered language

Where other languages invoke the feeling of being a product of organic growth over time, C# just feels like an incredibly well-designed language where everything has its purpose and almost nothing is non-essential. See More
Ray
Top Con
•••

Dependecy on IDE

Most people learn and depend on VisualStudio to write C#. The result is people learn how to use an IDE and not the concepts or fundamentals of good programming. This isn't necessarily a knock on the language itself, but it is frustratingly difficult to do things in C# when not using VS. See More
Ray
Top Pro
•••

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 such as refactorings (rename a variable, extract some code into a method, ...) and code formatting (you can pick exactly how you want the code to be formatted). Visual Studio also highlights your errors when you compile, making your debug sessions more efficient since you don't have to run the code to see the mistakes. There's also a powerful debugger that allows you to execute the code step-by-step and even change what part of the code will be executed next. In addition to giving you all the line-by-line information you'll need in a hassle-free manner, Visual Studio has stuff you can click on in the errors window that will take you to the documentation for that error, saving you several minutes of web searching. In addition to all of this, Visual Studio has an intuitive, intelligent, and helpful graphical user interface designer that generates code for you (the best of WYSIWYG, in my opinion), which is helpful for new programmers. Being able to create a fantastic-looking UI with one's mouse and then optionally tweak with code helps make programming fun for beginner developers. Visual Studio also has the best code completion --Intellisense is every bit as intelligent as the name says it is. It, as well as VS's parameter hinting, is context-, type-, user-, and position-sensitive, and displays relevant completions in a perfectly convenient yet understandable order. This feature allows a new programmer to answer the questions "What does this do?" and "How do I use it?" right then and there rather than having to switch to a browser to read through extensive documentation. This allows the programmer to satisfy their curiosity before it is snuffed out by several minutes of struggling through exhaustive documentation. And for the more adventurous and text-ready developer, Microsoft does the best job of ensuring that everything, from interfaces and wildcard types down to Console.WriteLine("") and the + operator, is well-documented and easy to understand, with relevant and well-explained usage examples that manage to be bite-size yet complete, simple yet truly helpful. The reference site is easy to navigate, well-organized, clean and uncluttered, up-to-date, and fresh and enjoyable to look at, and every page is well-written with consideration for readers who are not C# experts yet want to read about changing the console background color. The best part? It's free! Visual C# Express contains all of the features described above, at zero cost. If you are a student, you can probably get Visual Studio Professional from your university, which also includes tools for unit testing and supports plugins. See More
Simona
CourteousAmanikable
Ray
Top Con
•••

Too easy to write multithreading apps that are buggy

Many web frameworks or GUI libraries will push novice users to writing multithreaded code, which leads to frustrating race condition bugs. Other languages with multithreading push users towards safe constructs, like passing messages and immutable or synchronized containers. But in C# the data structures aren't synchronized by default, and it's easier to just set a field and observe the result from another thread. See More
Ray
Top Pro
•••

With ASP CORE a good language to learn

With CORE you are no longer just limited to Windows, so a language worth learning. See More
CourteousAmanikable
Ray
Top Con
•••

Lacks standard-library support for immutable data structures

This is false. There are many ReadOnly data structures in the library. See More
Ray
Top Pro
•••

Supported on many platforms

C# can be used for Windows apps, Linux apps, OS X apps, Windows 8 "modern" apps, websites, games, iPhone apps, Android apps, Windows Phone apps, and more. If you want to create a cross-platform application, you can share most of the code and write one GUI for each platform. See More
Ray
Top Pro
•••

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 some features not found in competing languages like properties, events and static classes. C# code is much more readable thanks to the syntactic sugar it offers. You can truly concentrate on your code, not on the way it's implemented. See More
Ray
Top Pro
•••

Supports some functional features

C# is primarily object-oriented, but it also supports some features typically found in functional languages such as lambdas, delegates and anonymous classes. Methods can be treated like any other object, and the Linq query system operates on monads with lazy evaluation (though it hides this with a lot of syntactic sugar). You don't need to use these features to code in C#, though, so you can start with OOP and then learn about them. See More
byme
Elias Haileselassie
Top Pro
•••

High Performance and great concurrency support

TPL library and ability to do zero allocation asynchronous programing via ValueTask. Great profiling tools inside Visual Studio and JetBrains Rider. See More
Ray
Top Pro
•••

Can mix high and low level programming

You can code at the high level without worrying about pointers and memory management, but if you so choose you can switch to lower level programming with direct memory management and pointer manipulation (though you need to compile to specifically allow this). See More
Ray
Top Pro
•••

Best language for Windows programs

C# is clearly the best choice for Windows programs. The .NET framework contains everything you need to build great-looking apps, without having to learn the confusing Win32 API or download a ton of external libraries. C# can also be used to build Windows 8's "modern" apps. See More
VigilantAhauChamahez
Top Pro
•••

Very high demand in the industry.

C#'s been around for just the right amount of time, is regularly updated with useful additions, is versatile, easy to write & read, & has excellent tooling support. This means it is a top choice for many organisations & will remain so for the foreseeable future. See More
Ray
Top Pro
•••

Great language for Unity game engine

Unity provides a selection of programming languages depending on preference or knowledge - C#, JS, Boo and UnityScript. C# is arguably the most powerful with better syntax and stronger language structure. It allows using script files without attaching them to any game object (classes, methods inside unattached scripts that can be used at any time). There are more tutorials and information for C# than UnityScript and Visual Studio can be used to code for unity in C#. Additionally, learning C# allows using it outside of Unity as well unlike UnityScript. See More
Monika
UpbeatVorsa
Top Pro
•••

.NET truly universal

With .NET core it is a truly universal programming language which supports desktop apps (Windows), mobile apps (Xamarin), web apps (ASP.Core MVC). Also is perfectly fit to serverless programming for micro services. Soon it will also support WebAssembly (Blazor). See More
Monika
UpbeatVorsa
Top Pro
•••

Awesome IDE for cross-platform development

Visual studio has embraced cross-platform development over the past 3 years. With Visual Studio Code, you now have a light, and quick IDE variant available for free as well. See More
HideSee All
--

Haskell

My Recommendation for Haskell

My Recommendation for Haskell

Add Video or Image
All
31
Experiences
2
Pros
18
Cons
10
Specs
Dmitry Belyaev
Top Con
•••

Package manager is unstable & lacking features

Cabal (There are other choices but this is the most popular) can not uninstall a package. Also working at a few locations it is difficult to have the same environment for each one be the same. See More
Ole Kristian Sandum
Top Pro
•••

Safe

The strong type system makes Haskell a safe language to use See More
HarmoniousPonos
HarmoniousPonos's Experience
Haskell server frameworks are expressive and the APIs reduce the contact surface. Low boilerplate, high level, and as much a joy to use as the language. See More
Specs
Site:https://www.haskell.org/
Paradigm:functional
Type System:static
Dmitry Belyaev
Top Con
•••

Symbols everywhere 

Haskell allows users to define their own infix operators, even with their own precedence. The result is that some code is filled with foreign looking operators that are assumed to be special-case syntax. Even for programmers who know they're just functions, operators that change infix precedence can potentially break expectations of how an expression is evaluated, if not used with care. See More
Ole Kristian Sandum
Top Pro
•••

High level

Haskell is a very high level language, having tons of abstractions out of the box, making it perfect for backend development. See More
monk
monk's Experience
Yes, the learning curve is steep but the learning material is of high(er) quality (compared to more popular languages where you have to filter out more rubbish). See More
Dmitry Belyaev
Top Con
•••

Language Extensions lead to unfamiliar code 

Haskell's language extensions, while making the language incredibly flexible for experienced users, makes a lot of code incredibly unfamiliar for beginners. Some pragmas, like NoMonomorphismRestriction, have effects that seem completely transparent in code, leading beginners to wonder why it's there. Others, like ViewPatterns, and particularly TemplateHaskell, create completely new syntax rules that render code incomprehensible to beginners expecting vanilla function application. See More
Ole Kristian Sandum
Top Pro
•••

Purely functional

Being purely functional, there are no side effects in Haskell. As such it is easier to reason about an application written in Haskell. See More
Ole Kristian Sandum
Top Con
•••

Requires a shift in thinking

If you are coming from an imperative background with little to no experience with functional programming, using Haskell may require some effort in shifting the way you think and reason about software. See More
Endi Sukaj
Mark Polyakov
Top Pro
•••

Very fast

Most web frameworks and servers for Haskell are way faster than even the fastest interpreted languages, such as Node.js. See More
TallFurrina
Top Con
•••

Curried type signatures obfuscate what were the in and out types originally

See More
Enis BAYRAMOĞLU
Top Pro
•••

Functions curry automatically

Every function that expects more than one arguments is basically a function that returns a partially applied function. This is well-suited to function composition, elegance, and concision. See More
TallFurrina
Top Con
•••

You need some time to start seeing results

Haskell's static typing, while helpful when building a project, can be positively frustrating for beginners. Quick feedback for errors means delaying the dopamine hit of code actually running. While in some languages, a beginner's first experience may be their code printing "Hello World" and then crashing, in Haskell, similar code would more likely be met with an incomprehensible type error. See More
Enis BAYRAMOĞLU
Top Pro
•••

Highly transferable concepts

Haskell's referential transparency, consistency, mathematics-oriented culture, and heavy amount of abstraction encourage problem solving at a very high level. The fact that this is all built upon little other than function application means that not only is the thought process, but even concrete solutions are very transferable to any other language. In fact, in Haskell, it's quite common for a solution to simply be written as an interpreter that can then generate code in some other language. Many other languages employ language-specific features, or work around a lack of features with heavy-handed design patterns that discourage abstraction, meaning that a lot of what is learned, and a lot of code that is needed to solve a particular problem just isn't very applicable to any other language's ecosystem. See More
TallFurrina
Top Con
•••

Too academic, hard to find "real world" code examples

See More
Dmitry Belyaev
Top Pro
•••

Referentially transparent

Haskell's Purely Functional approach means that code is referentially transparent. This means that to read a function, one only needs to know its arguments. Code works the same way that expressions work in Algebra class. There's no need to read the whole source code to determine if there's some subtle reference to some mutable state, and no worries about someone writing a "getter" that also mutates the object it's called on. Functions are all directly testable in the REPL, and there's no need to remember to call methods in a certain order to properly initialize an object. No breakage of encapsulation, and no leaky abstractions. See More
TallFurrina
Top Con
•••

You have to learn more than just FP

Haskell is not only a functional language but also a lazy, and statically typed one. Not only that but it's almost necessary to learn about monads before you can do anything useful. See More
Enis BAYRAMOĞLU
Top Pro
•••

Hand-writeable concise syntax

Conciseness of Haskell lets us to write the expression on the whiteboard or paper and discuss with others easily. This is a strong benefit to learn FP over other languages. See More
TallFurrina
Top Con
•••

Difficult 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 a vocabularly that requires a lot of backround in abstract mathematics to understand. Even a concept as simple as "combine A and B" is often, both in code and in tutorials, described in terms of confusing and discouraging terms like "monad", "magma", "monoid", "groupoid", and "ring". This also occasionally bears its ugly head in the form of complicated error messages from type inference. See More
Dmitry Belyaev
Top Pro
•••

Powerful Categorical Abstractions

Makes categorical higher order abstractions easy to use and natural to the language See More
Kristaps
HelpfulAstghik
Top Con
•••

Performance

See More
monk
Top Pro
•••

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 when and where mistakes are made. See More
monk
Top Pro
•••

Popular in teaching

Haskell is really popular in universities and academia as a tool to teach programming. A lot of books for people who don't know programming are written around Haskell. This means that there are a lot of resources for beginners in programming with which to learn Haskell and functional programming concepts. See More
Enis BAYRAMOĞLU
Top Pro
•••

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 conforms to very high-level abstractions. You can expect code from vastly different libraries to follow the same rules, and to be incredibly self-consistent. It's not uncommon to find that a parser library works the same way as a string library, which works the same way as a window manager library. This often means that getting familiar and productive with new libraries is often much easier than in other languages. See More
HarmoniousPonos
Top Pro
•••

Powerful categorical abstractions

Makes categorical higher order abstractions easy to use and natural to the language. See More
HarmoniousPonos
Top Pro
•••

Easy syntax for people with a STEM degree

Since the basic syntax is very similar to mathematics, Haskell syntax should be easy for people who have taken higher math courses since they would be used to the symbols used in maths. See More
HarmoniousPonos
Top Pro
•••

Open source

All Haskell implementations are completely free and open source. See More
Dmitry Belyaev
Top Pro
•••

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 application, you know most of the language. See More
Dmitry Belyaev
Top Pro
•••

Forces you to learn pure functional programming

It is pure and does not mix other programming paradigms into the language. This forces you to learn functional programming in its most pure form. You avoid falling back on old habits and learn an entirely new way to program. See More
Enis BAYRAMOĞLU
Top Pro
•••

Easy to read

Haskell is a very terse language, particularly due to its type inference. This means there's nothing to distract from the intent of the code, making it very readable. This is in sharp contrast to languages like Java, where skimming code requires learning which details can be ignored. Haskell's terseness also lends itself to very clear inline examples in textbooks, and makes it a pleasure to read through code even on a cellphone screen. See More
HideSee All
57

JavaScript

My Recommendation for JavaScript

My Recommendation for JavaScript

Add Video or Image
All
51
Pros
26
Cons
24
Specs
Cosmo Myzrail Gorynych
Top Pro
•••

Rich module ecosystem

The npm client is bundled with node.js. It allows developers to quickly install ready-made modules, which vary from utility functions to complete blogging platforms. See More
Cosmo Myzrail Gorynych
Top Con
•••

Not suitable for complex computations

Heavy calculations and big data processing kills JavaSript's speed and server availability. It is perfect for building real-time apps with high number of connections, though, as well as for regular apps which don't require complex data processing. See More
Specs
Engine:V8/ChakraCore
Author:Ryan Dahl/Joyent
Version(LTS):8.x
ECMAScript Modules:Available (as a flag) (only on Node 8.x-10.x)
See All Specs
deepak kumar
Top Pro
•••

Large community base

Even though server side JS has not been around for long, it has a very large group of users using it and thus you will be able to get help easily. See More
Reviews
Top Con
•••

The scripting language that is ugly for a web browser shouldn't be the language of the backend too.

See More
Kovah
Top Pro
•••

A very popular newcomer

With Node.js becoming a popular used runtime environment for developing a diverse variety of server tools and applications JavaScript as it's underlying language becomes more popular too. See More
Hasnat Babur Raju
Top Con
•••

Very confusing to read

See More
ProudIlabrat
Top Pro
•••

Great tools for development

Flow, JSHint/ESLint, Babel, npm, etc. See More
HumbleCelaeno
Top Con
•••

Difficult to find the real cause of an error

See More
ProudIlabrat
Top Pro
•••

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 programming in JavaScript you can reapply that education later in building web applications. See More
timlyo
Top Con
•••

Churning ecosystem

New JavaScript packages are common, and the most popular setp can change very quickly. What a beginner learns now is likely to be out of date very quickly. See More
ProfessionalBalayang
Top Pro
•••

First-class functions with lexical closures

While certainly not the only language with these features, this pro alone is so powerful that it compensates for most of JavaScript's problems. You'll learn to use closures and higher-order functions well in JavaScript, because you have to. And then you can generalize this knowledge to any other language that has these, and the good ones do. See More
ProfessionalBalayang
Top Con
•••

Counter-intuitive type conversion

JavaScript is rather inconsistent when dealing with different types. For example, when working with the + operator and two numbers, they will be added, two strings will be concatenated: 3+5; // 8; "Hello "+"world"; // "Hello world" When using + with a string and a non-string operand, the non-string operand is converted to a string and the result is concatenated: "the answer is "+42; // "the answer is 42" "this is "+true; // "this is true" In any other case (except for Date) the operands are converted to numbers and the results are added: 1+true; // = 1+1 = 2; null+false; // = 0+0 = 0; See More
Cosmo Myzrail Gorynych
Endi Sukaj
Alex Daubricourt
Top Pro
•••

Beautiful syntax

JS itself is a multi-paradigm language that gives you an ability to use functional, object-oriented programming, etc. The syntax isn't strict with punctuation; it may look like a C language or python-ish. Latest versions of language are filled with syntax sugar, borrowed from best programming practices from different languages. See More
Hasnat Babur Raju
Top Con
•••

Easy to fall into bad manners and bad mind structure

It wouldn't consolidate a good mind structure for moving to other languages. Too open. See More
ProudIlabrat
Top Pro
•••

C-like syntax

After learning Javascript, you will feel at home in other languages as C-like syntax is very common. See More
Hasnat Babur Raju
Top Con
•••

Array-like objects

Many cases when you should get an Array, you just get an Array-like object instead and none of the Array methods work on it. See More
ProudIlabrat
Top Pro
•••

JSON is native to JS

JSON is arguably a "must-learn". With JS, that's one less additional syntax to learn. See More
Robert McAlery
Top Con
•••

Lack of static type safety

JavaScript simply lacks the static type checking that is necessary to build reliable and high performance systems. Problems that could have been easily detected at compile time show up a run-time, which is terrible for back-end development. See More
ProfessionalBalayang
Top Pro
•••

Runs on both the browser and the server

With Node.js, it is now possible to run JavaScript as a web server. This would allow you to be able to create server based applications sooner than would if you had to learn a separate programming language as well for server side code. As JavaScript is the only language supported by web browsers it puts it in the unique situation of being the only programming language that's available on both the client side and server side. See More
ProfessionalBalayang
Top Con
•••

The "this" keyword doesn't mean what you think it means

this is bound to whatever object called the function. Unless you invoke it as a method. Unless you invoke it as a constructor. Unless it's an arrow function. See More
ProfessionalBalayang
Top Pro
•••

Massive ecosystem

JavaScript has one of the largest programming ecosystems, as shown by the being the most popular language for projects on GitHub. As there are so many projects written in JavaScript there are lots of libraries available to build off of and many of them are written to be easy to use and integrate into other projects. There are also lots of resources available for learning JavaScript. Other than traditional tutorials, language learning sites such as Codecademy have JavaScript courses. The Mozilla Developer Database also serves as a great resource for learning about the standard libraries built into JavaScript. See More
Hasnat Babur Raju
Top Con
•••

Does not teach you about data types

Since JavaScript is a weakly typed language, you don't have to learn about data types if you start using JavaScript as your first language. Data types being one of the most important concepts in programming. This will also cause trouble in the long run when you will have to (inevitably) learn and work with a strongly or statically typed language because you will be forced to learn the type system from scratch. See More
ProfessionalBalayang
Top Pro
•••

Modern ESNext is far better than the JS of days past

Modern JS has made great strides, and can be targerted to older (or non-standard) browsers using Babel. There are new language constructs that can make programming in JS comfortable.; e.g.: async / await ( <3 ). See More
Hasnat Babur Raju
Top Con
•••

Numbers that begin with 0 are assumed octal

This is very surprising for beginners. Especially since 00 through 07 seem to work just fine. And this isn't just for hardcoded numbers. The parseInt() function has the same problem, but only on some systems. See More
ProfessionalBalayang
Top Pro
•••

Extremely popular

JavaScript usually tops the lists for most popular languages in use today and rightly so. It's used almost everywhere and it's in high demand, making it very easy to find a job for anyone who knows JavaScript. This helps make it desirable for a first language, as it will often be used in the future. See More
TrustingRudraige
Hasnat Babur Raju
Top Con
•••

Each browser has its own quirks when executing the same code in some cases, requiring to use "babel" to make the code compatible.

Beginner programmers often make the mistake of coding something, seeing it works in the browser they tested it in, and then scratching their heads when it doesn't work in another browser. Ideally you'd want a language that works consistently across all platforms in order to be able to focus more on the programming and less on the underlying environment. It just takes time away from learning and forces you to spend time figuring out why this worked in browser X but not browser Y unless you transcompile your code using "babel" to target all the platforms you want to be compatible with. See More
ReceptiveLeibOlmai
Top Pro
•••

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 programming consoles built into them. Aside from the browser console, you can also use online Javascript playgrounds such as JS Bin and JS Fiddle. Even from a tablet. See More
Hasnat Babur Raju
Top Con
•••

Limited standard library

Much often needed functionality is not in the standard library. (Contrast with Python.) However, there are well established libraries such as Lodash, to fill the gap (however, due to the diverse/fractured ecosystem it may not be clear what library to use). See More
ProfessionalBalayang
Top Pro
•••

Complete dev stack can be run online

With codepen.io and other prototyping tools, you can learn Javascript from a mobile device. You don't even need a computer. It can be learned from an internet cafe or public library. See More
Hasnat Babur Raju
Top Con
•••

Many tutorials, code, and resources, are structured for older ES5 code

See More
Monika
TrustingRudraige
Top Pro
•••

Very good debugger

Has a built-in debugger with break points, watches that work on local values, and a console that you can use to edit anything at any time. Both in the browser (eg: Chrome), and server (eg: Nodejs). See More
Hasnat Babur Raju
Top Con
•••

The constant churn of tooling and language

Trying to keep up=javascript fatigue. You won't have time to learn anything else if this is your first language, and you will probably think all programmers are crazy. Plus web assembly may open the door for better alternatives. See More
Monika
TrustingRudraige
Top Pro
•••

Easy to build an application

By using the UI capabilities in HTML and CSS you can develop substantial applications with graphical interfaces more quickly and with less effort than in other languages which would require you to learn a windowing library. Building a useful application is one of the best ways to learn a new language and because of the low learning curve for creating applications you can create more substantial programs and learn more practical programming principles faster. See More
Hasnat Babur Raju
Top Con
•••

Good tools are pretty much a MUST for new programmers

You really want to be using a good editor (light IDE) and a linter, type checker (e.g.:Flow), etc. until you grok the language. And choosing / setting-up that development environment is it's own learning curve. If taught in a classroom, using a subset of JS with solid tools, there is an argument that JS could be an ideal first language... however, that is a lot of ceremony to protect the new programmer from JS gotchas. But without the tools, JS can be a very painful painful first language (trying to figure out why your code isn't doing what you intended). See More
TrustingRudraige
Top Pro
•••

Prototype based Object Oriented System

Being object oriented, it supports the predominate and powerful programming approach. Being prototype based, it provides an intuitive approach to OOP. Whereas other popular languages use classes, which focus on thinking in the abstract, Javascript's prototypes allow you to focus on thinking in the concrete. For example, in a prototypical language, you think of a rectangle, and define it. You now have a rectangle. Let's say you want a red rectangle, you copy the rectangle and give it the property red. Want a blue one? Copy rectangle again give it a blue. Big blue rectangle? Copy blue rectangle and make it big. In a class-based language, first you describe a rectangle, describe a red rectangle as a type of rectangle, describe blue and big blue rectangles, and now that you have described them, you must create instances of them, and only then do you have the rectangles. Essentially: Classes are factories for objects, prototypes are objects themselves, and the latter method was created to be more intuitive, which is particularly advantageous to beginners. See More
Hasnat Babur Raju
Top Con
•••

The `null` and `undefined` objects aren't really objects

Therefore, attempts to call methods on them will fail. This is especially frustrating since these are often returned instead of throwing exceptions. So a failure may appear far away from the actual cause, which makes bugs very hard to find. See More
Monika
TrustingRudraige
Top Pro
•••

Several platforms to use the web stack and JS to create multi-platform apps

Opens the door to native application development as well as just websites. Use with React Native, Weex or Quasar (Vue), PhoneGap or Cordova, NativeScript... (etc) to build native apps. Use mostly the same code base for multi-platform and web. See More
Hasnat Babur Raju
Top Con
•••

Fast moving

The language and the web platform move fast these days. this makes it difficult for students as there is a lot of fragmentation and outdated information. See More
TrustingRudraige
Top Pro
•••

Speed (most implementations)

JS/ES is in the running for the fastest interpreted language given the optimizations and JIT integration of popular implementations. On the other hand, it fails utterly when compared with compiled (to native or VM code) languages. See More
Hasnat Babur Raju
Top Con
•••

Asynchronous coding is not easy for beginners

JavaScript can work synchronously but its current use is mainly around asynchronous instructions, and it's surely not a good way to start learning programming. See More
prohyon
Top Pro
•••

Atwood's Law "Any application that can be written in JavaScript, will eventually be written in JavaScript."

May also be a con. See More
Hasnat Babur Raju
Top Con
•••

Complex

JavaScript has a long litany of warts and gotchas. JavaScript will bite you if you're just a wee bit careless. You have to exercise a great deal of caution and awareness. You either have to know the entire 545-page ES6 spec to avoid them all, or use a linter to help restrict you from using the bad parts (and you still have to be familiar with the language), but beginners don't know these things. (Linters are also prone to time-wasting false positives.) This is a significant cognitive burden on even the experienced programmer (as if coding wasn’t hard enough already), but try learning to program in the first place on top of all of this and you'll understand that JavaScript is a terrible choice for the beginner. See More
prohyon
Top Pro
•••

Can be very simple (teachable)

By setting a few ground-rules (effectively coding in a subset of JS), JS is one of the simplest languages to learn (requiring very few must-learn prerequisite concepts). See More
Hasnat Babur Raju
Top Con
•••

Weird type coercions

'5' - 1 == 4, but '5' + 1 == 51. There are other examples that make even less sense. See More
prohyon
Top Pro
•••

High demand for JavaScript developers

If you're looking for a career as a developer, JavaScript is the place to focus your attention. There is a huge demand for good developers especially in frameworks such as React and Angular. See More
Hasnat Babur Raju
Top Con
•••

Easy to accidentally use globals

If you forget a var or new, you can clobber the global scope. For tiny scripts (JavaScript's original use case) globals are great, but for larger applications globals are generally regarded as a Bad Thing. This is because changes to one small part of a program can randomly break things anywhere else. These kinds of bugs are notoriously hard to find. See More
prohyon
Top Pro
•••

Integrates very well with UE4

Coding an immersive 3D game can retain the attention of new programmers. ncsoft/Unreal.js. See More
Hasnat Babur Raju
Top Con
•••

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 have call a function with too many arguments, the extra arguments are simply discarded. See More
prohyon
Top Pro
•••

Instant gratification

While it's easy to argue that Python will give you instant gratification, JavaScript is far better in this regard. Make a small change to a page and it's immediately visible in the browser. You can throw in a JavaScript library like jQuery with minimal fuss. See More
Mark Polyakov
Top Pro
•••

Concise

JS code is usually quite small compared to other languages, especially with ES6 syntax. See More
HideSee All