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
Development

What are the best (productivity-enhancing, well-designed, and concise, rather than just popular or time-tested) programming languages?

93
Options 
Considered
3.2K
User 
Recs.
Sep 27, 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

83 Options Considered

Best (productivity-enhancing, well-designed, and concise, rather than just popular or time-tested) programming languagesPriceCurrent stable versionPlatforms
88
Nim
-1.6.12Windows, MacOS/iOS, Linux /Android/Termux, *BSD, Solaris/SmartOS, HaikuOS, lots of others
80
Smalltalk
-6.1-
78
Python
-3.9.1Windows, Linux, macOS, AIX, IBM i, iOS, z/OS, Solaris, VMS
78
Elixir
-1.11.2-
76
Rust
-1.71.1Linux, MacOS X, Windows, BSD
See Full List
88

Nim

My Recommendation for Nim

My Recommendation for Nim

Add Video or Image
All
52
Experiences
9
Pros
27
Cons
15
Specs
WhiteLilac
Mikhail
Top Pro
•••

Easy to read

Nim has a lot of common with Python in terms of syntax. Indentation-based syntax, for/while loops. See More
Dym Sohin
Top Con
•••

Community is too small

Too small of a community to keep up with development of similar concurrent projects, like Haxe or Kotlin. See More
AwesomestLeto
AwesomestLeto's Experience
Nim is a pretender, Mojo is the true contender. Mojo is a superset of Python, so can really transfer one's code over. With Mojo, no longer need C/C++, and defintely don't need preteners like Nim. Mojo developers work with and help the Python community, where Nim is just leeching off the name and popularity. It should have copied and leeched off Free/Object Pascal more, from which it actually came from. See More
Specs
Current stable version:1.6.12
Platforms:Windows, MacOS/iOS, Linux /Android/Termux, *BSD, Solaris/SmartOS, HaikuOS, lots of others
License:MIT
GZipped size:13 MB
See All Specs
Solon
Glerin
thermoplastics
Top Pro
•••

Powerful metaprogramming

You can use templates to remove boilerplate and macros to create your own DSLs. For an example click here. See More
PerceptiveOlodumare
Top Con
•••

You won't get a job programming Nim

It's not a mainstream language. See More
MemorableJumis
MemorableJumis's Experience
Con artists pushing this false hype language on tricked Python addicts and on here. Nobody know this language, not even on TIOBE index. You not getting a job with this. Nobody need this language, not even for hobby, as others much better. See More
Monika
Glerin
thermoplastics
Top Pro
•••

Runtime speed

Nim can compile to C or C++, which means it can execute almost as fast as C (in some cases it has the same performance as C). See More
pizzamonkey
Top Con
•••

Lack of cohesion, poor readability

Enabling users to write code however they want has the downside of making it possible to make a large codebase contributed to by multiple programmers extremely inconsistent. There's nothing to distinguish a macro from a function, or a method from a variable read. It adds to the cognitive strain of reading code significantly. See More
PatientSraosha
PatientSraosha's Experience
Nim is shit language with artificial support on here. No way this shit language is number 1 in anything. Do not use this shit, unless crazy or wasting time. See More
Simona
Glerin
Alex Libman
Top Pro
•••

Compiles to C or JavaScript

Also compiles to C++, Objective C. See More
pizzamonkey
Top Con
•••

Extremely opaque control flow, makes debugging a nightmare

It takes all the problems with debugging C++ and turns them up to 11. Nearly anything could modify the control flow and end up throwing an error. This becomes extremely annoying when working with libraries that may use different conventions to yours. See More
PrivateAhMuzenCab
PrivateAhMuzenCab's Experience
Fast development, Fast execution, Easy to learn See More
Mikhail
Top Pro
•••

Strict typing

Checks your code at compile time. See More
teadan
Mogomotsi Donald Ralokwae
Top Con
•••

Learning resources for beginners are scarse

See More
Mogomotsi Donald Ralokwae
Mogomotsi Donald Ralokwae's Experience
I have been using it since 2018, and it is one of the best and most innovative programming language I have ever used. It's syntax is similar to that of Python, it's low-level features are the same as that of C/C++ and a very powerful macro system found in Lisp programming language... Nim is simply the best. See More
Glerin
Dominik Picheta
Top Pro
•••

Async/await features

Brilliant C#-inspired async/await implemented via macros. See More
CheerfulMacCecht
Top Con
•••

Not true alternative to Python users, where using the Codon is.

Codon for a more Python-ish experience. Compiles real Python code to native code. Nim is not needed. See More
KindUaIldak
KindUaIldak's Experience
It has a clear, python-like syntax without the usual python clutter, and it is a compiled language at the same time. It has powerful metaprogramming using macros. Can be easily compiled to C, C++, Objective C and even JavaScript. Great for all types of applications, from the low, bare metal touching level up to web servers and even games. See More
Glerin
thermoplastics
Alex Libman
Top Pro
•••

Awesome syntax

Pascal and Python inspired syntax can make code much more readable. See More
PerceptiveOlodumare
Top Con
•••

Atrocious error messages

Unhelpful to users, wasting hours deciphering and extremely annoying. See More
DreamerAglaophonos
DreamerAglaophonos's Experience
I have been programming for several years and have played with quite a diverse set of languages, none have come close to the joy I have writing Nim. It makes sense and is joyous to write in. See More
Mikhail
Top Pro
•••

Multi paradigm

Imperative, OOP, functional programming in one language. See More
Simona
OpinionatedFortuna
Top Con
•••

Whitespace sensitive syntax

Causes eye pain and is ugly. See More
HonestAlastor
HonestAlastor's Experience
Very nice language to learn and use. Runtime performance on par with C/C++, powerful metaprogramming (macros, templates). Surprisingly easy to learn despite these advanced concepts. See More
Mikhail
Top Pro
•••

Really crossplatform

The same code can be used for web, server, desktop and mobile. See More
Simona
OpinionatedFortuna
Top Con
•••

Tries to claim more than what it really is

Advertises like it's the ultimate language, but is just a slight upgrade for those stuck on Python. See More
Bob San
Bob San's Experience
Compiling to C/C++, lightweight runtime, tiny, fast executables and ability to use safe, automatic, GC-free memory management makes Nim the best language for embedded. See More
Monika
Federico C
Glerin
Top Pro
•••

Open source

Compiler and all core language tools are open source. See More
PerceptiveOlodumare
Top Con
•••

Community harsh if criticized

If one dares to start a discussion about a feature on discord, subreddit or github then one will be aggressively shut down. See More
Monika
Federico C
Mikhail
Top Pro
•••

Type inferencing

You only need to specify types in your procedures and objects - you don't need to specify type when you're creating a new variable (unless you're creating it without initialization). See More
PerceptiveOlodumare
Top Con
•••

Lacks void / null safety

Easy to get involved in safety issues. See More
Monika
Mikhail
Top Pro
•••

Garbage-collected

You don't need to deal with all those manual memory allocations, Nim can take care of it! But also you can use another GC, or tweak it for your real-time application or a game. See More
Monika
BrilliantThoon
FlexibleApollo
Top Con
•••

Unstable ecosystem

The ecosystem in not stable yet. See More
Mikhail
Top Pro
•••

Supports UFCS (Unified Function Call Syntax)

writeLine(stdout, "hello") can be written as stdout.writeLine("hello") proc add(a: int): int = a + 5 can be used like 6.add.echo or 6.add().echo() See More
PerceptiveOlodumare
Top Con
•••

Inconsistent name formatting

Headache creation with snake_case, pascalCase, and being case-insensitive too. See More
Monika
Mikhail
Top Pro
•••

Compile-time execution

Nim has built-in VM, which executes macros and some other code at compile time. For example, you can check if you're on Windows, and Nim will generate code only for it. See More
Simona
CuriousOpochtli
PerceptiveOlodumare
Top Con
•••

Con artist pushed useless language

False hype Python-like language used to generate cash by tricking Python users. Nobody need this language, not even on TIOBE index, but it came out 2008. Bad for even hobby, others much easier to learn and use. See More
Monika
Mikhail
Top Pro
•••

Easy to integrate with another languages

You can use Nim with any language that can be interfaced with C. There's a tool which helps you to create new C and C++ bindings for Nim - c2nim. Also you can use Nim with Objective C or even JavaScript (if you're compiling for these backends). See More
PerceptiveOlodumare
Top Con
•••

Memory management disasters

Will be stuck with bad performance while choosing from all kinds of memory management options that aren't good. See More
Monika
Mikhail
Top Pro
•••

Built-in Unicode support

You can use Unicode names for variables, there is "Unicode" module for operations with Unicode. See More
Mikhail
Top Pro
•••

Great metaprogramming features

There are generics, templates, macros in Nim. They can allow you to write new DSL for your application, or avoid all boilerplate stuff. See More
Mikhail
Top Pro
•••

Has built-in async support

Nim has "asyncdispatch" module, which allows you to write async applications. See More
Monika
Mikhail
Top Pro
•••

Has built-in unittest module

With built-in "unittest" module you can create test with a very readable code. See More
BrilliantThoon
Top Pro
•••

Optional and pluggable GC

GC is not forced on users. The new ARC/ORC are very lightweight. See More
LuckyPhthonus
Top Pro
•••

Flexible memory management

Nim offers a variety of garbage collector options. If necessary, you can even turn the GC off and manage memory manually. This means developers are free to configure the memory management model to fit their specific use-case. See More
Monika
Federico C
Top Pro
•••

More productive than Go, Rust and Python

The combination of Python-like syntax, static typing and type inferencing makes Nim more productive and readable than many other languages. See More
MagicalParthenos
Top Pro
•••

Active development

New great features and changes are in active development. See More
HonestAlastor
Top Pro
•••

Type interferencing

You only need to specify types in your procedures and objects - you don't need to specify type when you're creating a new variable (unless you're creating it without initialization). See More
pizzamonkey
teadan
Mogomotsi Donald Ralokwae
Top Pro
•••

It produces executible files which are not large

Compared to Go, Rust, Swift (all with default compiler/linker settings). See More
PerseveringZislbog
Top Pro
•••

Community driven

Controlled by a community rather than a corporation See More
Monika
Glerin
thermoplastics
Top Pro
•••

Statically typed

Has a static type system with great type inference and safety. See More
HideSee All
80

Smalltalk

My Recommendation for Smalltalk

My Recommendation for Smalltalk

Add Video or Image
All
52
Experiences
5
Pros
36
Cons
10
Specs
Richard Eng
Juan Vuletich
thermoplastics
Top Pro
•••

Live programming environments available

VisualWorks, Pharo, Squeak, Dolphin, Cuis See More
Endi Sukaj
Steven Sagaert
Top Con
•••

Not used as much anymore

See More
Arie van Wingerden
Arie van Wingerden's Experience
Done a lot of programming in S/370 Assembler, Rexx, Basic, Go, Rust, Rebol, Erlang, Lisp and Scheme variants. What burdens me is that every single project you must start from almost nothing. Reusability of code is often not possible. In Smalltalk that is totally different. Code reuse is the standard. See More
Specs
Current stable version:6.1
GZipped size:38MB
IDE Support:Self-Hosted
OS:Windows, macOS, Linux
thermoplastics
Endi Sukaj
gilch
Top Pro
•••

Simple syntax

The syntax famously fits on a postcard. Programmers are free to worry about the problem at hand instead of the language itself. Not C or Java like syntax. Avoid bracket soup with keywords that make it clear what is expected / passed into methods. See More
thermoplastics
Fabián Heredia Montiel
Top Con
•••

Isolation

Smalltalk has its own world inside the image. You cannot use your current text editor with it. At least not in a straight forward way. See More
ThoughtfulArohirohi
ThoughtfulArohirohi's Experience
Using Smalltalk since the early 90's. Used many 3GL and 4GL app building environments. Always use Smalltalk as my first choice as competitive advantage. See More
thermoplastics
gilch
Dave Mason
Top Pro
•••

Smalltalk amenable to creating domain-specific languages

If written well, Smalltalk almost reads like English. See More
DashingXbalanque
Top Con
•••

Not common

Smalltalk missed an opportunity to become mainstream when its implementations cost $5000 per seat versus $0 open source. New open source implementations (Pharo, Squeak) have minor corporate backers but not yet an IT behemoth. Direct jobs are scarce (but indirectly Smalltalk experience is very well regarded). Online communities are relatively small. See More
ReverentHesperus
ReverentHesperus's Experience
Developing large scale commercial projects using Smalltalk. Projects include electronic medical records (eMRs), eCommerce, sales order entry, TicketMaster style event registration for reserved and festival seating... See More
Juan Vuletich
Robert Pergl
Top Pro
•••

Very nice and active community around Pharo, Squeak and Cuis

See More
EagerPyvsyansa
Top Con
•••

Only one paradigm allowed

Smalltalk is a purely object-oriented language, which means that other paradigms can't be used, like functional programming. Although Smalltalk allows easy creation of closures, functional programming can't be fully exploited, because methods are always handcuffed to objects, also, there's no proper tail-call optimization, so either Smalltalk systems allow for unlimited recursion at the expense of speed or memory, or they implement stack frames and thus work fast at the expense of recursion. See More
PeterPetr
PeterPetr's Experience
Using Smalltalk, when every possible, since 1990 for commercial projects, ecommerce, electronic medical records and more. It's my secret competitive advantage. See More
thermoplastics
Inter
Top Pro
•••

Object Oriented

How it was meant to be. See More
Monika
MotivatedFaunus
Top Con
•••

Language design and implementation makes it difficult to utilize multi-core systems

See More
EnchantingZaqar
EnchantingZaqar's Experience
Excellent developing tools, like debugger and inspector. Far better than most languages. See More
Laura Kyle
Chad Perrin
Top Pro
•••

Provides powerful metaprogramming facilities

See More
CheerfulFionnuala
Top Con
•••

Limited libraries to connect with external services

Although it has libraries to connect with major services (eg. databases like PostgreSQL, MongoDB, Riak, etc.), it takes some time for those libraries to be available. It's not cutting edge like node.js or Python where libraries are usually written first there and then ported to other languages. See More
Philippe Back
Top Pro
•••

Fun to use

See More
Endi Sukaj
EagerPyvsyansa
Top Con
•••

Limited object system

The object system, which by the way is the essence of Smalltalk (Smalltalk is purely object oriented), is very limited, conforming to the old and weak paradigm of tying methods to classes. Modern OOP systems such as the ones provided by Julia and Common Lisp, separate methods from objects allowing for multiple-dispatch and powerful "method combinations", which together greatly enhance the possibilities of OOP and allow for easy translation of your problem domain to actual code. For example, in those two languages the "Circle-Ellipse problem" is easily solved in a few lines and without any hack (such as changing the hierarchy at runtime.) See More
ReverentHesperus
Top Pro
•••

Superb Integrated Development Environment (IDE)

All tools (Inspector, Browser, Debugger etc.) are written in Smalltalk and are live objects in the environment. All sources are present, so that the tools can easily be studied, changed and experimented with. The same goes for the other components like the compiler, OS-Integration etc. See More
DashingXbalanque
Top Con
•••

Virtual machine in its own isolated world

Smalltalk wants to be the whole OS. While this has tremendous advantages internally, interacting with the world outside the VM is not as easy as pure Smalltalk and must be done via a Foreign Function Interface. See More
SmartAntaeus
Top Pro
•••

Environment of live objects

You can modify the system as it's running. You're "swimming with the fish", instead of probing a black box by remote control. See More
Izem Lavrenti
IntuitiveCheonjiwang
Top Con
•••

A little slow

Smalltalk's VM and lack of attention makes it slower than other languages although most of the time this is unnoticeable. See More
SmartAntaeus
Top Pro
•••

First-class functions with lexical closures

See More
Monika
Fábio Pisaruk
Robert Pergl
Top Con
•••

Simple, but not C-like syntax

See More
SmartAntaeus
Top Pro
•••

Elegant syntax fits on a postcard

The syntax was designed to be easy enough for children to learn. Beginners can learn the language rules very quickly and then focus on programming without fighting the syntax at the same time. Things that have to be baked into the grammar in other languages are simple message sends with block arguments in Smalltalk. Expressions have only three precedence levels to worry about. See More
SmartAntaeus
Top Pro
•••

Inspector makes objects transparent

Programmers must make detailed mental models of the system they are developing. Bugs usually happen when the mental model does not match the actual system. This is one of the greatest difficulties beginners have because most systems are so opaque. It takes a lot of effort to see what's really going on. But in Smalltalk this is much easier, thanks to the powerful tools included in the environment, like the object inspector. See More
SmartAntaeus
Top Pro
•••

Agile "interactive" test-driven development

Smalltalk had the original (and still the best) unit test system that inspired it in many other languages (like Java's JUnit). Working with interactive live objects in Smalltalk style TDD makes it easy to teach and learn TDD. See More
ReverentHesperus
Top Pro
•••

Easy to learn and experiment

See More
Dave Mason
Top Pro
•••

With PharoJS, easy to generate code for the web

See More
SmartAntaeus
Top Pro
•••

Pure and easy object orientation

Smalltalk is one of few languages that are purely object oriented. This provides a solid and easy to understand base on which to learn object oriented programming, the most popular approach to programming. See More
SmartAntaeus
Top Pro
•••

Language uniformity

This leads to a very simple programming model (pure OO) that is still very powerful. A lot of stuff that is hard to implement in other languages is easier in Smalltalk. See More
SmartAntaeus
Top Pro
•••

As a first language, almost forces you to learn OO design.

Hybrid languages (e.g., Java, C#, C++) make it easy to slip into procedural thinking. Smalltalk's pure OO approach makes it hard not to think in object-oriented terms. In addition, since the entire IDE and runtime components are there in the image for you to browse, you have plenty of examples of good OO design to learn from. See More
Stephan Eggermont
Top Pro
•••

With SqueakJS, run in the browser

See More
SmartAntaeus
Top Pro
•••

Internal source code and documentation

You can explore how everything works easily. See More
Richard Eng
Top Pro
•••

With Amber, easy to generate code to run in the web browser

See More
SmartAntaeus
Top Pro
•••

Provides a functional way to interact with objects

Many languages today use object orientation, while the most of them stock on the half way in that perspective. Smalltalk sees literally everything as an object and this includes things like the classes and primitive data types. There is are zero control structures such as selection and iteration, since all is done by sending messages to objects. It use a lot of concepts from Lisp in order to provide a nice experience for this pure kind of object orientation. It provides immutable data structures, closures, anonymous functions and higher order functions, while all those functions are objects. This is what makes Smalltalk so simple, elegant, and easy. All this counts for Pharo, while other implementations as Amber are probably feature complete to it. See More
SmartAntaeus
Top Pro
•••

It invented a lot of stuff

Smalltalk is the inventor of Just-in-Time compilation and the MVC concept, refactoring through their so-called refactoring browser and it was also one of the first adopters of a language virtual machine, closures, live programming, test driven development, an IDE and the development of GUI`s. See More
IngeniousPandia
Top Pro
•••

Graphical user interface

Beginners are usually stuck making command-line applications in other languages, because GUIs are too hard. Smalltalk GUIs are easy enough to start with. See More
IngeniousPandia
Top Pro
•••

Save and restore virtual machine image

A Smalltalk environment can save the state of a running program and later restore and resume execution. This includes the internal state of live objects, multiple thread stacks, and debugging sessions, making it easier for beginners to take the exact problem to an expert for assistance. See More
SmartAntaeus
Top Pro
•••

Inspired many other languages' object systems

See More
Endi Sukaj
Top Pro
•••

Rich libraries including many powerful data types, collections, frameworks, development tools etc.

See More
Endi Sukaj
Top Pro
•••

Allows programming at various levels of abstraction, including with pure domain concepts

See More
ReverentHesperus
Top Pro
•••

Powerful integrated debugger

You can edit code and swap it in while the your program is still running after an exception has already been signaled, or restart from anywhere in the call stack. You can inspect and modify the state of any object. Some Smalltalkers write unit tests and then program exclusively in the debugger. See More
Juan Vuletich
Top Pro
•••

The true Smalltalk- 80 Dynabook experience on Cuis.

Cuis Smalltalk shares and follows the original values of Smalltalk-80. Especially on the value of being able to study, understand and modify any part of the system, and see immediate results. See https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev See More
ChattyPramzimas
Top Pro
•••

As a first language, almost forces you to learn OO design

Hybrid languages (e.g., Java, C#, C++) make it easy to slip into procedural thinking. Smalltalk's pure OO approach makes it hard not to think in object-oriented terms. In addition, since the entire IDE and runtime components are there in the image for you to browse, you have plenty of examples of good OO design to learn from. See More
DashingXbalanque
Top Pro
•••

Open source

MIT licensed implementations Pharo, Squeak, Cuis & Dolphin and GPL licensed GnuSmalltalk. See More
SmartAntaeus
Top Pro
•••

Incremental compilation

Provides an extremely fast code-compile-run-debug cycle. This is great for beginners to experiment and prototype ideas. See More
Arie van Wingerden
Top Pro
•••

The summum environment for code reuse!

See More
Laura Kyle
michaeljforster
Top Pro
•••

Tooling emerges, cheaply, as a consequence of its design rather than being bolted on

See More
Stephan Eggermont
Top Pro
•••

Code rewriting to program yourself out of a corner again

See More
HideSee All
78

Python

My Recommendation for Python

My Recommendation for Python

Add Video or Image
All
76
Experiences
3
Pros
39
Cons
33
Specs
Endi Sukaj
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
gilch
Laura Kyle
Chad Perrin
Top Con
•••

Arbitrary semantic quirks

The language suffers from issues with non-systematic language semantics, such as differentiation between functions and methods; operators and functions; inconsistencies in default scope behavior (conflation of variable assignment and declaration--global vs nonlocal, and class declarations don't quite have lexical scope.); a mixture of statements and expressions with unclear standards for what kinds of operations get to be an expression and which are only statements, and weird issues like no statements in lambdas. See More
Romuald Texier-Marcadé
Romuald Texier-Marcadé's Experience
Great language and ecosystem for scientic computing, machine learning and data science. 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
Endi Sukaj
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
Laura Kyle
Inter
Alex Jarkey
Top Con
•••

Bad parallelism

GIL See More
PatientSraosha
PatientSraosha's Experience
Python is stinking pile of shit language that is used by those that don't know better, not actual programmers, or not experienced. Do yourself favor and go learn real language, not waste your time. Slant recommendations is also unbelievable crap too. See More
Sunil Arora
Top Pro
•••

Multipurpose

Python is heavily used in education sector, web and internet development, scientific and numeric computing as well as in big data and machine learning algorithms development. The depth and breadth of Python makes it the language of choice in education and research sector and students across the globe use Python for learning programming and building research projects. See More
Simona
Hasnat Babur Raju
Top Con
•••

Slow to run

Check for example the first result from Google. See More
Madsen Altamirano
Madsen Altamirano's Experience
It is good for simple scripts and whatnot — not very good at all for large, important projects. However, if I need a serious scripting langauge, SHell is the only sane option (or BASH). Since I'm not running around trying to write scripts for everything, Python does not offer much use for me. Please do not implement your web browser or terminal emulator in Python. And please don't ask me to port our whole project codebase to Python! However, it is a very good language to begin learning to program. The simplicity of the syntax and the excellent documentation are worthy of praise that other languages do not get. As others have said, it's almost like Pseudocode — meaning the user can focus on the logic behind their program. In this regards, I might use Python to learn a new concept. For an example, I could learn how to send things over TCP using Python, since it focuses on the logic. This is why Python is great for beginner programmers — and it's readily available, even on their Android phone with PyDroid and QPython — both great mobile IDEs for Python. Yes, there are "science" and "numeric" uses in Python. But overall, it isn't the experienced programmer's first-pick programming language. It is geared more towards the beginner, miscellaneous scripting, and logic-focused design. Combined with these reasons and its ranking as one of the slowest languages ever created, I believe Python should be avoided for serious programming. See More
HonestDamu
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
Laura Kyle
Endi Sukaj
Angela Jarkey
Top Con
•••

Bad performance

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 on average. See More
Simona
SpiritedVedenemo
brady barten
Top Pro
•••

Emphasis on readability

Easy to read even for people who don’t know the language. See More
Endi Sukaj
Inter
Alex Jarkey
Top Con
•••

Harder to catch bugs because of its dynamic type system

See More
gilch
Inter
Top Pro
•••

C Interop

CFFI is the bee's knees. But there are other options too. See More
Endi Sukaj
Inter
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
JD Fagan
Top Pro
•••

All objects including functions are first-class objects

Functions have attributes and can be referenced and assigned to variables. As Guido points out in his blog, "One of my goals for Python was to make it so that all objects were 'first class.' By this, I meant that I wanted all objects that could be named in the language (e.g., integers, strings, functions, classes, modules, methods, etc.) to have equal status. That is, they can be assigned to variables, placed in lists, stored in dictionaries, passed as arguments, and so forth." See More
LivelyTaranis
Top Con
•••

Version Confusion with V2.x and V3.x

See More
CuriousHorus
Top Pro
•••

Cross-platform

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

Improper closures

Lambdas are limited to single-expression statements, and functions that close over local variables easily invalidate references, limiting their capability for maintaining state. Other functional languages that implement closures do not have any of these limitations (or they are comparatively so substantially relaxed as to not make a difference.) See More
Inter
Top Pro
•••

Sequences

See More
jacob prosser
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
CuriousHorus
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
jacob prosser
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 slowed than Java. See More
CuriousHorus
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
CompetentMyesyats
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
CuriousHorus
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
Ved
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
CuriousHorus
Top Pro
•••

It's really simple

It's very simple for understanding how programming works. See More
Justus Sagemüller
Top Con
•••

Sacrifices principles for beginner-friendliness

Python tries hard to look like imperative pseudocode. This is great for simple scripts, but for more advanced applications one would often wish for a bit more depth-oriented design with enforcement of standards. Python tends to be procedural at the small scale, OO at the large scale and occasionally functional when it's deemed elegant, but this doesn't always latch together very well. The “English-like” syntax often make it difficult to understand how something works precisely. See More
Laura Kyle
greyfade
Inter
Top Pro
•••

Default parameter values

Though, this feature is hardly unique to Python. See More
Ved
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
Laura Kyle
Dan Stormont
Top Pro
•••

Good language for beginners

Simple syntax and the ability to execute code using the interpreter make it easier for beginners to learn and experiment, but it also means that experienced programmers can be more productive with Python, as well. See More
LivelyTaranis
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
CuriousHorus
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
LivelyTaranis
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. Since 2.x and 3.x still exist, be prepared to switch if something makes 3.x take off in the future. See More
CuriousHorus
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
CuriousHorus
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
CuriousHorus
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
LivelyTaranis
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. While this is a con, I see it in other languages as well. It seems to depend on the programmer. Most people don't learn conventions first, they just start programming. Unless you work for someone who insists you follow the conventions, you will probably go with what you like. You might never look at the conventions. See More
CuriousHorus
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
Monika
Laura Kyle
Inter
Top Con
•••

No access modifiers

Underscores don't change anything. See More
Endolith
Top Pro
•••

Docstrings

Code is self-documenting. Functions tell you what their parameters are for and how to use them. You can even include TeX math and it is displayed in tools like Spyder. See More
pizzamonkey
Justus Sagemüller
Top Con
•••

The elegant design is not translated to numerical applications

Python is popular for data science, but there it's not really used as Python but just as a user interface for NumPy, which is basically Matlab-in-a-library. Python numerical code thus features much of the same bad design as Matlab scripts: inscrutable everything-is-an-array signatures, confusion about row vectors vs. column vectors etc.. If all you want is a free and open source version of Matlab, check out Octave, which has nearly 1:1 compatibility with Matlab. See More
Stefan Papp
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
LunarCoffee
Top Con
•••

Slower language updates

Compared to languages maintained by larger entities, such as C# and Kotlin, Python is quite slow in adding new features. See More
GloriousTamKung
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
LivelyTaranis
Top Con
•••

Too opinionated for a general-purpose programming language

While it's a good language to learn and use after you have mastered a couple of other less rigid programming languages, it's definitely not good for first-time learners. Both the language itself and its community have made it quite clear that you should do everything the "Pythonic way" to get the best results, that it feels more like an opinionated framework instead of a general-purpose programming language, which means if you are a first-time learner and getting too "tuned" to the "Pythonic way" it will be much harder for you to learn other less-opinionated languages compared to the other way around. Like any programming languages and/or frameworks, I'd recommend first-time learners to learn less opinionated ones first to open up your mind, then learn some of the more opinionated ones to increase productivity for specific fields of works. After all, programming languages are just some utilities for the human mind to interface with the computers, and there are more suitable tools for different tasks, and you should master the "Pythonic way" (after you already have adequate experience in computer programming) instead of locking your mind too close to the "Pythonic way" as a first-time learner. See More
Lubo
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
LivelyTaranis
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
GloriousTamKung
Top Pro
•••

Has features of both high and low level language

It is somewhere between C and Java. See More
Laura Kyle
Chad Perrin
Endi Sukaj
Top Con
•••

Mandatory indentation

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. More importantly, the semantic significance of leading whitespace and newlines forces a line-oriented syntax on a language that also requires more verbosity than strictly necessary, without some of the syntactic sugar convenience of languages like Ruby that can help keep line length down. As a result, it can get difficult at times to maximize readability of conceptually complex operations by breaking up those operations in relatively digestible chunks. See More
CuriousHorus
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
Monika
PreciseDaichinTengri
Top Con
•••

Very slow

Up to 256 times slower than C. See More
Inter
Top Pro
•••

Generators

See More
CuriousHorus
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
FunnyIcovellauna
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
SpontaneousSnotra
Top Con
•••

Indentation-based syntax can be unclear

Python's syntax is based off of indentation rather than parentheses or curly braces. See More
Inter
Top Pro
•••

Decorators

See More
pizzamonkey
Top Con
•••

Moving large blocks of code in whitespace sensitive languages is scary

Quoting inventor of the V language: "V's syntax is cleaner with fewer rules. Lack of significant whitespace improves readability and maintainability of large code bases and makes generating code much easier. From my experience of working with a huge Python code base, moving large blocks of code in whitespace sensitive languages is scary." See More
prohyon
Top Pro
•••

Easy for new users and experienced programmers

(If you can get over whitespace formatting) See More
pizzamonkey
Top Con
•••

Hard to debug

This to me is the number one fatal flaw any language can have. See More
DecisiveErecura
Top Pro
•••

Integrated as scripting langauge in a lot of Softwares

Python is the scripting language of great software like Blender 3D See More
SpiritedVedenemo
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
ReverentAkurra
Top Pro
•••

Great REPL

Python's read eval print loop is amazingly useful for being able to test new libraries and unfamiliar idioms without having to organize source files in the file system. See More
PoisedFortuna
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 next best thing after 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
Stefan Papp
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
LivelyTaranis
Top Con
•••

It is best suited for scripting, but so are many other languages.

i.e. running js as a script in a node is trivial. Even languages that were not meant to run as a script are easy to use as a scripting language with just a .sh file. See More
Stefan Papp
Top Pro
•••

Supports various programming paradigms

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
LunarCoffee
Top Con
•••

Unflexible userbase

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

Mandatory indentation

No holy wars about which indentation style is best. No wasted time managing brackets, semicolons, or other redundant garbage. See More
Madsen Altamirano
Top Pro
•••

Mobile versions

Mobile IDEs for Pythpn are available and they work great! PyDroid and QPython are great apps that turn your Android phone into a portable Python 2/3 shell and interpreter. See More
Simona
Hasnat Babur Raju
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
gilch
Laura Kyle
Inter
Top Pro
•••

Type hinting

The current version of Python has built-in syntax for both function and variable annotations--for optional static (compile-time) typing via third-party tools like mypy and PyCharm IDE. See More
Hasnat Babur Raju
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
Simona
Inter
Top Pro
•••

Zen of Python

See here. See More
HideSee All
78

Elixir

My Recommendation for Elixir

My Recommendation for Elixir

Add Video or Image
All
22
Pros
15
Cons
6
Specs
Dave Mason
Top Pro
•••

Very friendly functional language

See More
Joao Pedro Evangelista
NonchalantAm-heh
Top Con
•••

Deployment is still not as easy as it should be

Since Elixir 1.9.0 releases are built into Mix (The language's build tool) providing easy assembly for deployment See More
Specs
Current stable version:1.11.2
Site:https://elixir-lang.org
GZipped size:3.61 MB (without required Erlang VM)
Endi Sukaj
UnderstandingNunbarsegunu
Top Pro
•••

Great for concurrency

Leverages the existing Erlang Beam VM which is amazing for concurrency. See More
FerventCoyolxauhqui
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
Dave Mason
Top Pro
•••

Amazingly robust and fluid multi-processing

See More
AmiableAmeNoUzume
Top Con
•••

Slow

Single core perfomance is significantly slower than most other languages. See More
UnbiasedNanaya
Top Pro
•••

Compiler errors usually explain why that's an error

Compiler errors and warnings tend to be accompanied with explanations of why the error/warning happened, and even with hints on how to solve them. See More
Inter
Top Con
•••

Dynamically typed

See More
Peter Carter
Top Pro
•••

Part of the best web full-stack framework currently available

Phoenix Framework is coded in Elixir and is very stable and performant as compared to the competition. See More
PerseveringZislbog
Top Con
•••

Single paradigm

Can only be used as a functional language See More
CalmWuriupranili
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
WhiteLilac
CompetentMyesyats
Top Con
•••

Single threaded

A lot of problems arise from async code. See More
AmiableAmeNoUzume
Top Pro
•••

BEAM VM and OTP library

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

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
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
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
NonchalantAm-heh
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
NonchalantAm-heh
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
NonchalantAm-heh
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
Dave Mason
Top Pro
•••

Dynamically typed

See More
HideSee All
76

Rust

My Recommendation for Rust

My Recommendation for Rust

Add Video or Image
All
42
Experiences
5
Pros
23
Cons
13
Specs
Endi Sukaj
Inter
PhiLho
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
gilch
Laura Kyle
SlantZorro
Top Con
•••

Difficult learning curve

Learning curve of the fairly complex rules for Ownership, References and Borrowing, and Lifetimes required. Their use must be internalized in order to become reasonably fluent in Rust. See More
pizzamonkey
pizzamonkey's Experience
It makes it easy to write efficient, safe code. It's extremely ergonomic for such a low-level language and I don't think the learning curve is any worse than other languages. People expect it to be like C since it's syntax is close to C, but coming from C to Rust is more like coming from C to Haskell, it takes some time because it's a fundamentally different way of thinking about programming. See More
Specs
Current stable version:1.71.1
Platforms:Linux, MacOS X, Windows, BSD
License:MIT/Apache
Alex
Thomas Doylend
Joel
Top Pro
•••

Memory safety

Rust is designed to prevent null pointers and segfaults. See More
Bob San
Top Con
•••

Significant time required to understand the language fully

There's the infamous borrow checker for example. See More
ResourcefulShala
ResourcefulShala's Experience
Most people do not need Rust. It will cause them too much wasted time in frustration, slow compiles, or outright confusion. Other memory safe(r) languages like Go, D, V, etc... are outright easier to use and as or almost as fast for tasks required. See More
Endi Sukaj
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
PatientSraosha
Top Con
•••

Low readability

Harder to read and understand language. See More
Rempas
Rempas's Experience
The compile times, ugly syntax and VERY steep learning curve are the reasons no-one should use this language. I don't care how popular a language is or how many features it has. If it takes 2 years to compile a "hello world" program and if I need 5 years to be able to be productive and read some source code online, the language is a huge NO from me! See More
Endi Sukaj
Joel
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
ResourcefulShala
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
PatientSraosha
PatientSraosha's Experience
Playing with Rust will give your free headaches and ulcers. See More
Alex
cdt5050
Top Pro
•••

Emphasis on zero-cost abstractions

Programming is all about abstractions. The more powerful abstractions you can use, the more efficiently you can program. Rust, bucking the trend from most languages in its niche, has aspired to take a hint from functional languages, moving away from low-level thinking, and included powerful abstractions for getting work done. To make things better, these abstractions come with no overhead. See More
Rempas
Top Con
•••

Long compile times

Way longer to compile than other languages. See More
MemorableTitias
MemorableTitias's Experience
Great alternative to C++, just needs more libraries, which I'm sure are soon to come, with Mozilla working on it! See More
Endi Sukaj
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
Zyansheep
ConfidentMaahes
Top Con
•••

Low-level programming language

The Rust compiler forces the programmer to understand how memory works, this may be hard to work around at first. Most applications can run without exceeding the capacity of the server, even with an inefficient dynamic scripting language. See More
Endi Sukaj
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
ThriftyMercury
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
Simona
Zyansheep
Chad Sharp
Top Pro
•••

Expressive error handling, no having to catch exceptions

Errors are propagated through functions in the program and can be handled at any level. See More
CheerfulMacCecht
Top Con
•••

Low productivity

The compiler is strict, such as ownership and borrowing checkers. See More
Endi Sukaj
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
Alex
Moyamo de Hacker
Top Con
•••

No higher kinded types

See More
Chad Sharp
Top Pro
•••

First-class sum types

Sum types (i.e., tagged unions) are a very expressive way of representing state. The simplest example of this is Rust's Option<T> type which has two variants Some(T) and None. One can use an Option to represent a computation that may or may not have a meaningful result (e.g., retrieving a value from a hash table, the element is there, Some(element), or it isn't, None). Rust allows the programmer to pattern match (destructure) these sum types in a very ergonomic way. See More
Monika
Zyansheep
LivelyTaranis
Top Con
•••

Only 10 years old

Some libraries that other languages have may not exist yet in Rust. See More
MemorableTitias
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
Ba Leafar
thermoplastics
Yang Fan
Top Con
•••

Error handling

Rust uses algebraic data types(Option, Result) instead of exception. See More
Simona
Ba Leafar
Top Pro
•••

Error handling

Rust forces the programmer to handle errors, but provides zero cost abstractions and syntactical niceties for this purpose. Error handling is fast, concise, and safe. See More
Monika
Zyansheep
WhiteLilac
Top Con
•••

Certain syntax may be confusing for new programmers

Rust's lifetime notation and application can be difficult to understand. Rust's trait system may be intuitive at first for programmers who use object oriented languages. The macro system syntax is entirely different from the rest of the language and there are many different types. E.g. derive and tag macros use #[] syntax while function macros have a ! after the name. See More
Ba Leafar
Top Pro
•••

Package manager (cargo) is extremely useful, builds are reproducible

Cargo can be used to manage libraries/library revisions, building rust code, building and linking C code, tool installation, text and benchmark execution... See More
ResourcefulShala
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
Caleb Budde
Top Pro
•••

Big community

The biggest community contributing to language. See More
Endi Sukaj
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
Alex
Hasnat Babur Raju
Top Pro
•••

Functional programming

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

Ownership and borrowing

Rust uses a system of ownership and borrowing for memory management, decreasing compile times, while also being less error-prone, See More
pizzamonkey
Top Pro
•••

Safe and efficient

With zero-cost abstractions and a very strict borrow-checker, it makes writing safe and efficient code a breeze, while disallowing any unsafe code (outside designated "unsafe" blocks). See More
pizzamonkey
Top Pro
•••

Macros are easily identified

Unlike C's syntax which draws no distinction between macros and function calls, Rust makes it explicit what is a macro and what isn't. The macro system is extremely powerful, but you won't use one accidentally. See More
pizzamonkey
Top Pro
•••

Object-Oriented alternatives

Many people complain about object oriented programming, and Rust manages to have most of the usability benefits of OOP without having to tie yourself in knots. There's no inheritance, but enums and traits can fill most of that functionality with added transparency. See More
pizzamonkey
Top Pro
•••

Excellent learning resources and documentation

With the Rust Cookbook, Rust by example, Rustlings, and "The Book", there are many comprehensive tutorials to get started and understand each piece of the language one at a time. Once you do understand the language, the documentation present on doc.rust-lang.org is very helpful. See More
Endi Sukaj
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
Endi Sukaj
Top Pro
•••

Built-in concurrency in the standard library

Rust has built-in support for concurrency in the standard library. See More
HideSee All
72

F#

My Recommendation for F#

My Recommendation for F#

Add Video or Image
All
16
Experiences
1
Pros
14
Specs
JM80
Laura Kyle
Steven Sagaert
Top Pro
•••

Clean succinct syntax

F#'s syntax tends to be terse while remaining very readable and easy to understand without being a chore to write. See More
EfficientLyssa
EfficientLyssa's Experience
can write Unity Functionnaly See More
Specs
Current stable version:6.0
License:Apache 2.0
IDE Support:Visual Studio, Code, Rider
Laura Kyle
Steven Sagaert
Top Pro
•••

Many advanced (functional) features

See More
Yevgeny Shirin
Top Pro
•••

.NET Interoperability

Since F# runs on the Common Language Runtime or CLR, it has access to the entire .NET Framework, as well as libraries written in other .NET languages such as C#, VB.NET, and C++/CLI. See More
CredibleHoragalles
Top Pro
•••

Fall into the pit of success

F# directs you into a workflow where the right way is the path of least resistance. Coming from a C# background, its restrictions might feel arbitrary at first (e.g., what do you mean my code has to be in dependency order!? Arbitrary alphabetical or bust!), but you'll soon realize that your code is cohesive, concise and consistent in a way that it never was before - and you can compile and run with confidence! See More
Laura Kyle
Steven Sagaert
Top Pro
•••

Good concurrency libraries

See More
Steven Sagaert
Top Pro
•••

Type providers for statically type checked data access

See More
Yevgeny Shirin
Top Pro
•••

Easier transition from other paradigms

Since F# is not a purely functional language, it lends itself to being more easily picked up by programmers that have experience with other paradigms. See More
Yevgeny Shirin
Top Pro
•••

Multiplatform, it runs on .Net Core

Forget Xamarin and Mono. F# now runs on the multiplatform .Net Core! See More
PerfectTantalus
Top Pro
•••

Allows writing predictable code

Like many other functional languages, F# takes a stance of immutability for most of its constructs (state, values etc...). There are several reasons why having immutable values is good. One of those is that the code you are writing becomes much more predictable and you don't have to worry about any side effects. See More
Yevgeny Shirin
Top Pro
•••

F# is supported by Xamarin

Thanks to Xamarin, F# is a functional language that you can use to build for iOS, Android and Windows. See More
Yevgeny Shirin
Top Pro
•••

You can run F# in the browser

Thanks to a project like Fable, you can write and run your client app in F# and run it over JavaScript. It allows you to share code between your server and client. See More
JM80
CredibleHoragalles
Top Pro
•••

Natively supported by Visual Studio

This is a .Net language natively supported by Visual Studio. Though it is not as tooled up as C# the support is still substantial. In particular, C# deployment scenarios can be enabled for it with small C# wrapper projects. Integration with Visual Studio provides: IntelliSense, debugging, projects and other features. See More
PerfectTantalus
Top Pro
•••

Type Providers

See More
Paolo
Steven Sagaert
Top Pro
•••

Probably the best real world functional programming language

See More
HideSee All
71

Common Lisp

My Recommendation for Common Lisp

My Recommendation for Common Lisp

Add Video or Image
All
19
Pros
14
Cons
5
thermoplastics
jay malby
Chad Perrin
Top Pro
•••

Powerful macro system

Allows directly abstracting common code patterns to a degree almost impossible in non-lisp languages, which greatly improves readability and reduces code duplication with almost no runtime overhead. See More
jay malby
Top Con
•••

Different from other languages

Common Lisp (and lisp languages in general, but especially Common Lisp) is very different from other mainstream languages in ways that are difficult to adjust to, leading to a higher learning curve when transitioning from a C or Algol based language. See More
jay malby
Top Pro
•••

Fast

Most Lisp implementations today are native-code compiled, and the compiler supports an advanced declaration syntax to allow you to pass it optimization hints. This allows fine tuning of small segments of code for high speed, while leaving the rest of the code base untouched. See More
Justus Sagemüller
Top Con
•••

Very impure

Although the Lisp family is often described as functional languages, they do in practice rely a lot on mutation and side-effects/ Common Lisp in particular does not even try very much to stick to the functional paradigm, or any other ideal. Instead, it has a philosophy of allowing whatever approach seems most convenient, and encourages users to tack whatever is needed onto the language with macros. Combined with the lack of static types, this can lead to problems with interoperability and makes it hard to understand code you have not written yourself. See More
Марк Сафронов
Chad Perrin
Top Pro
•••

Concise

You can reduce your program to any DSL you need, leaving on high level only that text which is relevant to your problem, and nothing else. See More
Марк Сафронов
Top Con
•••

Current state-of-the-art dependency manager install dependencies system-wide

It's not obvious to get 3rd party dependencies in the same folder as your application, like almost every other language infrastructure is able to do. See More
thermoplastics
jay malby
Top Pro
•••

Interactive programming

On top of the REPL, a command line style interface to the language which lets you interactively call into any aspect of your program, Common Lisp is built from the ground up to support redefining any aspect of your program at runtime. This greatly reduces development time, as modifications to individual functions and classes can be loaded in while the program is running to test their effects. See More
Марк Сафронов
Top Con
•••

No obvious way to distribute software

ECL compile Common Lisp code to native binaries but it's just one implementation from others, and if your code includes implementation-specific pieces like SBCL's sb- packages, you can't use ECL to compile it. SBCL itself can "dump executable", which will give you an executable several megabytes in size irrelevant of your own application size. And if your application relies on external asset files like images, icons, sounds, texts and so on, you're really screwed. See More
Марк Сафронов
Chad Perrin
Top Pro
•••

Elegant

No other language allows you to hack itself in such extreme way the Lisp does. See More
Марк Сафронов
Top Con
•••

Infrastructure inferior to mainstream languages

Build tools, static code analysis, automated tests, code navigation and code completion in IDEs, IDEs overall - are all seriously lacking in robustness and features compared to mainstream languages infrastructure. See More
ClassyAnteroVipunen
Top Pro
•••

Very Powerful REPL with SLIME

SLIME (Superior Lisp Interaction Mode for Emacs). See More
LivelyTaranis
Top Pro
•••

Almost as fast as, or faster than, C

Some compilers such as SBCL can be faster than C or other low-level languages, and most compilers can generate fast native code. See More
SpontaneousSnotra
Top Pro
•••

Many choices for implementations

SBCL, ABCL, Clisp are the most popular See More
gilch
thermoplastics
Chad Perrin
Top Pro
•••

Homoiconic syntax

The code itself is a data structure in the language. It's lists of lists. Some more recent languages have syntax macros like Lisp, but you have to program them in an abstract syntax tree (AST) metalanguage. Lisp is practically its own AST, which makes it easy to manipulate Lisp code objects in Lisp--metaprogramming. See More
Марк Сафронов
thermoplastics
jay malby
Top Pro
•••

Powerful object system

The Common Lisp Object System supports full multiple inheritance and global multiple-dispatch functions, exposing powerful extensibility from the ground up. Also, hot reloading of classes and let's not forget about introspection, too. See More
thermoplastics
jay malby
Top Pro
•••

Powerful debugging capabilities

Common Lisp has a large selection of interactive debugging tools built into the language, including a GCC style debugger which activates on any otherwise uncaught errors, the ability to trace all calls and return values of any given function, and an inspection system which can give detailed reports about any object in the runtime. See More
ExceptionalKusarikku
Top Pro
•••

Condition/restart system

It is easy to recover from errors. Error resolution can be determined by the user at the REPL. See More
LivelyTaranis
Top Pro
•••

Image based runtime

The state of the program may be saved and reloaded as an image, supporting safer modification of the running program. New code may be compiled into the image as the program runs, while late binding ensures that symbol redefinitions take effect throughout the program. See More
EagerPyvsyansa
Top Pro
•••

Powerful type system and data type support

Common Lisp is strongly typed; implementations like SBCL allow for (optional) static typing, and the type system is powerful, allowing for complex type definitions, as well as a good struct system and a superb class system (CLOS). Additionally, the support for various data types is exemplary -- allowing for rational numbers, arbitrary-length integers, arbitrary-length floats, complex numbers, bitwise manipulation, etc. See More
HideSee All
70

Clojure

My Recommendation for Clojure

My Recommendation for Clojure

Add Video or Image
All
26
Experiences
3
Pros
15
Cons
7
Specs
Endi Sukaj
Top Pro
•••

Designed for concurrency

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
Izem Lavrenti
SupportiveNodens
Top Con
•••

Slow repl startup time

See More
VersatileBeliMawr
VersatileBeliMawr's Experience
Wonderful sintax and productivity See More
Specs
Current stable version:1.10.1
Platforms:Windows, Linux, Mac
Site:www.clojure.org
Price:Free, Open Source
See All Specs
Endi Sukaj
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
Endi Sukaj
Laura Kyle
Inter
Top Con
•••

May be hard to catch some bugs because of its dynamic type system

See More
ImaginativeVucubCaquix
ImaginativeVucubCaquix's Experience
Awesome See More
ImaginativeNabia
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
Hasnat Babur Raju
Top Con
•••

Tied to the JVM and it's limitations.

Some language constructs were obviously created as workarounds for JVM limitations. This makes the language much less elegant than it could have been. Also, the JVM has a very cumbersome FFI. See More
Amiran Chyb
Amiran Chyb's Experience
Homoiconic See More
Endi Sukaj
Inter
Top Pro
•••

Java interop

Since Clojure runs on the JVM it can make use of the Java standard library and other Java libraries or frameworks. See More
Hasnat Babur Raju
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
jay malby
Top Pro
•••

Interactive development

Although interop/the JVM limits this to a degree (compared to other lisps), clojure is still quite capable/effective at interactive and exploratory programming. See More
Chad Perrin
Top Con
•••

Restrictive License

The Eclipse Public License is a fairly restrictive, complicated license with a lot of license compatibility issues. See More
Endi Sukaj
Travis Rigg
Top Pro
•••

Terse syntax

Clojure is a Lisp and as such is has the distinct syntax of Lisp dialects which is extremely terse and easy to read for the trained eye. See More
Endi Sukaj
Joel
Inter
Top Con
•••

Syntax may seem confusing to programmers not used to Lisp

Lisp syntax may seem confusing to anyone not used to Lisp because of its over-reliance on parentheses. See More
Maris Orbidans
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
Hasnat Babur Raju
Top Con
•••

Syntax can be alien / jarring for those used to other Lisps

Perhaps some may consider this attribute an advantage, but I do not. Clojure does not attempt to maintain significant compatibility with other Lisps. So, if you already know a Lisp or are used to the way Lisp works in general, you'll probably be confused if you take a look at Clojure. See these resources for more details on this subject: https://clojure.org/reference/lisps http://stackoverflow.com/q/6008313/2636454 http://gilesbowkett.blogspot.com/2015/01/one-major-difference-between-clojure.html http://softwareengineering.stackexchange.com/q/153128/166211 See More
ImaginativeNabia
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
Joseph Guhlin
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
prohyon
Top Pro
•••

Dynamic language

A superb data processing language. While rich type and specification systems are available they are optional. See More
prohyon
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
prohyon
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
ImaginativeVucubCaquix
Top Pro
•••

Rich Hickey

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

No C/Java syntax

Refreshing, BTW! See More
prohyon
Top Pro
•••

Game is available with which you can learn Clojure

Nightmod is a tool used to make "live-moddable" games. It displays the game's code while you are playing and allows you to inject new code using Clojure. This can be a fun and useful experience for people trying to learn Clojure. See More
HideSee All
69

Scheme

My Recommendation for Scheme

My Recommendation for Scheme

Add Video or Image
All
23
Pros
15
Cons
8
Laura Kyle
Chad Perrin
Top Pro
•••

Homoiconic syntax

See More
Monika
NiceHunChowen
Top Con
•••

Small job market

There are little to none jobs searching for a Scheme programmer. The ones that exist are more related to Research in Maths or Artificial Intelligence. See More
Chad Perrin
Top Pro
•••

Elegant

See More
Paolo
Arne Babenhauserheide
Top Con
•••

Few libraries

Compared to languages like Java, Javascript and Python, Scheme has few libraries to provide directly re-usable features. See More
Chad Perrin
Top Pro
•••

Easy To Learn

See More
Jon Plotner
Top Con
•••

Fragmented ecosystem

Scheme is an IEEE standard, not an implementation. Unfortunately, the standard is too minimal and practical implementations have diverged--they had to expand on the standard to get anything done, but did so in incompatible ways. The later de facto standard R6RS tried to correct this, but lost Scheme's minimalist elegance in the process. The newer R7RS standard takes the best of both worlds with an elegant minimalist core and a practical standard library. See More
Chloe Montanez
Arne Babenhauserheide
Top Pro
•••

Standardized

With the RnRS reports Scheme has a stable base which is implemented and specialized in many implementations for different domains. Reports — benchmark of many different implementations which support the most recent standards. See More
Paolo
Jon Plotner
Top Con
•••

Small job market

There are little to none jobs searching for a Scheme programmer. The ones that exist are more related to Research in Maths or Artificial Intelligence. See More
LivelyTaranis
Top Pro
•••

Simple syntax

Scheme syntax is extremely regular and easy to pick up. A formal specification of the syntax fits onto just a few pages; it can be introduced informally in a paragraph or two. Students are not distracted by remembering how to write if statements or loops or even operator precedence because every syntactic follows the same pattern. Ultimately, everything looks something like this: (func a b c) This includes not only user-defined functions but even control flow: (if cond then-clause else-clause) or even primitive operations like define and set: (define foo 10) (set! foo 11) This means that nothing really has special syntactic treatment in the language. There are essentially no weird edge-cases to memorize, and different concepts are given a more equal weight in the language. (Unlike Algol-like languages which tend to given undue weight to loops and assignment statements, for example.) See More
SpontaneousSnotra
Endi Sukaj
Dym Sohin
Top Con
•••

Too many parentheses (Opinion)

Uses too many parentheses () which makes it hard to read. See More
Mariano Alvarez
Top Pro
•••

No Magic - it's clear how everything works

Scheme has far less built into the language itself, helping students see that things like OOP are not magical: they are just patterns for organizing code. Everything in Scheme is built up from a very small set of primitives which compose in a natural and intuitive fashion. Having a language that does not accord many things special status helps keep students open minded. This will help students later go between different languages and paradigms from procedural to object-oriented to functional. See More
Federico C
Top Con
•••

A language that is purely academic

If someone said "I am starting a project in Scheme" then they are either talking about their homework or they are starting a joke. See More
Mariano Alvarez
Top Pro
•••

Great at teaching fundamental programming ideas

Scheme teaches the important, fundamental ideas immediately without the distraction of unnecessary syntax or language features. See More
NiceHunChowen
Top Con
•••

Very different semantics from mainstream programming languages

LISP-like languages are very different from mainstream languages (such as C/C++/Java/JavaScript/Python/you-name-it) - both in semantics and syntax. This, in turn, severely limits uses of whatever-learned-with-Scheme, for real-world use. See More
LivelyTaranis
Top Pro
•••

Great, well known textbooks

There is a set of very strong textbooks introducing CS and programming using Scheme. These books are available for free online. The most famous example--and one of the most famous CS books full stop--is Structure and Interpretation of Computer Programs usually known as SICP. This book introduces fundamental ideas in computer science and covers an incredible amount of material quickly and clearly without requiring any prior knowledge. However, some people find SICP a bit challenging as a first text. Happily, there are other more introductory texts as well. Simply Scheme is a book designed to be read before SICP, easing beginners into the language as well as CS and programming in general. How to Design Programs is another text used in introductory college courses. See More
gilch
Top Con
•••

Evaluation order is unspecified in calls

And almost everything is a call. The compiler is free to re-order the evaluation of arguments, like C does. You can force a particular order with let or let* (like using locals in C), but this is an extra cognitive burden for the programmer in an otherwise simple language. Bugs caused by this are very hard to find, because sometimes it works, and sometimes it doesn't. See More
LivelyTaranis
Top Pro
•••

Multi platform

GNU/Linux, OS X, and Windows versions available. See More
Chad Perrin
Top Pro
•••

Powerful Hygienic Macro System

See More
Chad Perrin
Top Pro
•••

Simple

See More
Mariano Alvarez
Top Pro
•••

Robust metaprogramming

The quotation functionality of Lisp allow for extremely powerful, yet syntactically straightforward metaprogramming via macros. This is more powerful than the C preprocessor while being less involved than something like Template Haskell or F# quotations. Using macros to properly decompose a problem domain teaches new developers good habits, improving composibility and reliability when tackling large programs. Scheme metaprogramming also serves as a gentle introduction to domain specific languages. See More
Chad Perrin
Top Pro
•••

Concise

See More
Chloe Montanez
Arne Babenhauserheide
Top Pro
•••

Extendable

Scheme even has extensions to reduce the number of parentheses while keeping the full expressiveness of the language (SRFI-49, SRFI-110 and SRFI-119). For many other extensions, see the SRFIs. See More
LivelyTaranis
Top Pro
•••

Multiparadigm

Unlike most languages, Scheme actually accords both functional programming and imperative programming roughly equal status. Many other languages like Python and Java are staunchly imperative while SML and Haskell are primarily functional; Scheme is a nice middle ground. Additionally, since Scheme syntax is extremely flexible, it can easily be re-purposed for teaching non-deterministic and logic programming. There is no need to learn a new language like Prolog when the same ideas can easily be expressed with Scheme syntax. This gives students a good perspective on different ways to think about and organize programs, which makes it much easier to move forward to other languages and technologies. See More
HideSee All
67

OCaml

My Recommendation for OCaml

My Recommendation for OCaml

Add Video or Image
All
12
Experiences
1
Pros
9
Cons
1
Specs
schlaumeier
Top Pro
•••

Encourages functional style

It steers you towards a functional style, but doesn't bother you with purity and "monads everywhere" like other languages, such as Haskell. See More
HappyAngraMainyu
Top Con
•••

Strong focus on *nix systems, lacking native support for MS Windows

Lacks native support for Windows systems. See More
TrustworthyBritomartis
TrustworthyBritomartis's Experience
OCaml combines what is arguably the safest type system out there with a no-nonsense compiler that makes performance easy to reason about and optimize. It combines the best of functional, imperative, and OO features into a language that is safe, simple, fast language. See More
Specs
Current stable version:4.0.7
Site:http://ocaml.org
License:LGPL version 2.1
Price:Open source (Free)
See All Specs
Chloe Montanez
Oleg Tsyba
Top Pro
•••

Great compile time, run time and performance time

See More
Oleg Tsyba
Top Pro
•••

Type-safe but still concise and expressive

See More
VivaciousEshu
Top Pro
•••

Sophisticated and easy-to-use package manager

OPAM is a package manager for OCaml, which is really easy to use, just like npm. It creates a .opam folder in home directory. The documentation is great as well, and you can switch between multiple versions of OCaml for each project. You can also package your project and publish it on OPAM repositories, even if the dependencies do not exists on OPAM. See More
VivaciousEshu
Top Pro
•••

Few bugs

Because of type system, if it compiles, it's almost bug-free. Otherwise, the compiler descriptively informs on errors. See More
schlaumeier
Top Pro
•••

Stable syntax

The syntax is consistent, some syntaxic sugar but at a reasonable level, so reading code of others isn't too much confusing. See More
schlaumeier
Top Pro
•••

One of the best for writing compilers

OCaml is compiled to native binary, so it's amazingly fast. Being a member of ML-family languages, it has expressive syntax for trees, and has great LLVM support. See More
LivelyTaranis
Top Pro
•••

Actively-developed functional programming language at the forefront of research

Functional programming is based on the lambda calculus. OCaml is in its functional parts almost pure lambda calculus, in a very practical manner: useful for many daily programming tasks. The acitve development makes improvements to the type system like generalized algebraic data types (GADT) or polymorphic variants, so when learning this language you get at once a down to earth usable compiler and advanced abstraction features. See More
schlaumeier
Top Pro
•••

Strong editor integration

The merlin editor tool provides all you need to develop OCaml in your favourite editor. See More
HideSee All
66

Elm

My Recommendation for Elm

My Recommendation for Elm

Add Video or Image
All
17
Experiences
1
Pros
12
Cons
3
Specs
HardwareHero
Top Pro
•••

Immutable values

The values in Elm are immutable - that is once assigned they cannot be changed. This makes it easier (especially for beginners) as values aren't constantly changing. See More
HappyAngraMainyu
Top Con
•••

Adds an additional layer of abstraction

Some users claim that Elm adds an additional layer of abstraction, meaning that it is one more hurdle between the brain and the product. See More
VigorousEnlil
VigorousEnlil's Experience
I now use elm exclusively for all frontend development projects, large and small, and am not looking back. With immutability, static typing, a refreshingly simple syntax, and great compiler messages, programming in elm is pure joy. See More
Specs
Current stable version:0.19.1
Platforms:Windows Linux Mac Web
GZipped size:23.2 kB
Marica Odagaki (ento)
Top Pro
•••

Meaningful, easy to understand error messages

See More
HardwareHero
Top Con
•••

Higher-kinded types are unsupported

Some generic operations such as fold, filter, apply and map are unsupported. See More
leviabris
Top Pro
•••

Performant

See More
leviabris
Top Con
•••

Poor backend capability

See More
zinggi57
Top Pro
•••

Super easy refactoring with very helpful compiler errors

In no other language you can refactor so easy without any worries, since the compiler will guide you through. It is like TDD but than compiler-error driven. See More
VigorousEnlil
Top Pro
•••

Higher confidence in code correctness and quality

Pure functions, immutable data structures, amazing compiler, clean and homologous syntax used for HTML, logic, and optionally to replace CSS, elimination of entire classes of bugs so you don't even need most unit tests. These factors lead to better code, better programs, higher confidence, and ultimately, more satisfaction. See More
zinggi57
Top Pro
•••

No run-time exceptions

Lack of run-time exceptions makes it easy to produce large swathes of reliable front-end code without drowning in tests. See More
Jared M. Smith
Top Pro
•••

Batteries included

The Elm Architecture means you don't need to spend valuable time and effort choosing the right frameworks, state management libraries, or build tooling. It's all built in. See More
Jared M. Smith
Top Pro
•••

Quick product validation using Lamdera on the backend

Using Lamdera (https://lamdera.com/) with Elm, it's easy to write a real-time web-based app without writing "glue code" to communicate between the client and server nor between the server and DB. See More
Jared M. Smith
Top Pro
•••

Easy to code review

The lack of side-effects and simple, consistent language semantics make it easy to quickly review incoming changes. See More
GraciousQuetzalcoatl
Top Pro
•••

Static module system

Elm uses easy to use modules. Use: import List import List as L import List exposing (..) import List exposing ( map, foldl ) import Maybe exposing ( Maybe ) import Maybe exposing ( Maybe(..) ) import Maybe exposing ( Maybe(Just) ) Creation: module MyModule exposing (foo, bar) See More
GraciousQuetzalcoatl
Top Pro
•••

Good tooling

All major editors have great support. With Atom for example, Elm plugins are available for linting, formatting, make/compiler support and Elmjutsu will simply overflow you with super useful functions, like navigate to referenced definition and show expression type. See More
Jared M. Smith
Top Pro
•••

Missing syntactic sugar

Easy to learn, most functions have only one way, not 5 alternatives where you must study where to best use what. See More
HideSee All
66

Go

My Recommendation for Go

My Recommendation for Go

Add Video or Image
All
59
Experiences
4
Pros
34
Cons
20
Specs
thermoplastics
Joel
Top Pro
•••

Compile speed

See More
Ved
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
pizzamonkey
pizzamonkey's Experience
Has a lot of small complaints and gripes, but overall a very good language. Probably the easiest language to get started with parallel programming. See More
Specs
Current stable version:1.21.0
Platforms:Windows, Linux, Mac etc.
Developer:Google with Ken Thompson, Robert Griesemer, Rob Pike
Endi Sukaj
thermoplastics
michael.switzer
Top Pro
•••

Easy to learn

While some of the more complex aspects of Go take a bit to pick up, it is very easy to get a junior programmer with zero knowledge of Go to building impactful applications in very short time. See More
AuthenticTempestas
Top Con
•••

Build system forces to put sourcecode in one folder

Currently the build system forces you to put your sourcecode in one folder called the "GOPATH". This cannot be changed in any way. See More
Elias Van Ootegem
Elias Van Ootegem's Experience
Even though the question tries to define "best programming language" in a particular way, these questions will always suffer from fanboy-ism. This recommendation isn't too different. Productivity-enhancing: Golang compiles to native, as one of its core design criteria was to build a language that would spit out fast binaries. This usually means dealing with a lot of lower-level nitty-gritty stuff. To get around this, the language has an impressive array of standard packages that allow you to do basic things (like reading/writing files) in a couple of lines, all the way through to writing an HTTP/RPC server that handles some requests, and unit test it. Being able to do this within the standard ecosystem of the language, with a simple toolchain is, by any means, productivity enhancing. Another thing that is productivity enhancing is: there's no runtime to set up (no JVM, no nginx, no interpreter stealing CPU cycles), the compiler is fast, and you either run the binaries locally, or just spin up a container. Either way, docker doesn't really slow you down much (top-tip: use scratch containers). The development cycle (write, test, build, debug) is short and sweet, allowing you to get on with things. Well-designed: The design follows the KISS principle. Some things take time getting used to: curly brackets are not optional, there is no ternary operator, and the most hotly contested language feature: no exceptions. The core design team followed the rule that no feature would make it in to the language unless they all agreed it was needed. Result: classes aren't there (but composition through embedding is a big plus), and ducktype interfacing is all the rage. There are no generics, but interfaces + type assertions/type switches can be used most of the time instead. Overall, the grammar is simple, the number of keywords very limited, but the language does not feel restrictive. Powerful, yet simple, that looks like the hallmark of good design to me. Of course, part of the design is the optimised runtime (GC, routines, channels), which get even better with each new release of the language. Something that isn't listed as a key feature that I really like is how some packages contain functions that you shouldn't use. I know, it sounds weird, but stay with me: The language designers understand the importance of predictable, and symmetrical API's. That's why the strings and buffers packages will have the same functions within them (for consistency). It shows someone thought about usability, and it genuinely feels like a nice touch Concise: Like most modern languages, go is concise. Not as concise as some, but one could argue there's a line between concise, terse, and plain silly. Golang walks that line carefully. Some people may complain that the error handling is a bit verbose, and yes, it adds 34 lines each time, where a language with exceptions would add, erm... 34 lines, too (try, catch, handle). Either way, if you can write a service providing a basic RESTful API in ~50 lines, whilst still being readable and maintainable, then I'd consider that language to be well designed and concise. See More
thermoplastics
Joel
Top Pro
•••

Go routines

See More