Slant logo
0
Log in • Sign up

What is the best alternative to Java?

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

Python

All
38
Experiences
Pros
22
Cons
15
Specs
thermoplastics
Andris Pelcbergs
Kyle Ridolfo
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
Endi Sukaj
Carson Wood
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
Andris Pelcbergs
Paddy3118
Tom Raleigh
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
VigorousTiberinus
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
Sunil Arora
Andris Pelcbergs
Stuart Kearney
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
Nobuyuki
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
Ray
Alan
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
CAB
Endi Sukaj
Top Con

Hard to debug other people's code

As the structure of Python code is based on conventions many developers are not following them and so it is difficult to follow/extract the design of not trivial application from the code. See More
Laura Kyle
Andris Pelcbergs
Tom Raleigh
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
Endi Sukaj
Marc Telesha
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
Andris Pelcbergs
Stuart Kearney
Tom Raleigh
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
Tyler
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
Ray
Monika
Amir Zamani
Top Pro

Cross-platform

Installs and works on every major operating systems if not already installed by default (Linux, macOS). See More
Monika
Peter Carter
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
JM80
gilch
Ray
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
VigorousTiberinus
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
Ray
Zhenyu Yu
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
Endi Sukaj
DecentWerethekau
Top Con

Might not be very future-proof

Lots of features that will probably be crucial as time goes (good support for parallelism for example) are missing or are not that well-supported in Python. See More
Ray
Paddy3118
Stuart Kearney
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
Izem Lavrenti
apokryfos
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
Paddy3118
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
Heliophanus
Top Con

Unflexible userbase

You will be expected to rigidly stick to the coding practices and to do everything by-the-numbers. See More
Endi Sukaj
Massimiliano Lambertini
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
Laura Kyle
Martin Hradil
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
Deuxis
Andris Pelcbergs
Stuart Kearney
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
SensibleHermodr
Top Con

Version Confusion with V2.x and V3.x

See More
Laura Kyle
Andris Pelcbergs
Stuart Kearney
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
Alex
HelpfulAstghik
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
Laura Kyle
Andris Pelcbergs
Stuart Kearney
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
Alexey Cherkaev
Top Con

Assignment

Heavily relies on assignment, with no distinction between defining the variable and assigning the value. This makes it necessary to introduce rather complex environmental model of computation. See More
Monika
Ünal Berke TOPÇU
Top Pro

It's really simple

It's very simple for understanding how programming works. See More
Monika
Ken Colton
Top Pro

Import Turtle

Do something visually interesting in minutes by using the turtle standard library package. https://docs.python.org/3.6/library/turtle.html 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
Ray
Chloe Montanez
Michael white
Top Pro

Has features of both high and low level language

It is somewhere between C and Java. See More
François Delpierre
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
gilch
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
Andris Pelcbergs
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
Jason
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
Specs
Platforms:Windows, Linux, macOS, AIX, IBM i, iOS, z/OS, Solaris, VMS
Current stable version:3.7.2 and 2.7.15
GZipped size:22.5MB
Language type:Interpreted
HideSee All Experiences
868 221

Kotlin

All
11
Experiences
Pros
8
Cons
2
Specs
Endi Sukaj
Top Pro

Great tooling support

Since Kotlin is made by Jetbrains (the developers of IntelliJ IDEA) so it stands to reason that the IntelliJ support for Kotlin is also great. Besides that, Kotlin also works well with existing Java tools such as Eclipse, Maven, Gradle, Android Studio, etc... See More
Endi Sukaj
Top Con

May be hard for programmers already used to imperative style to learn functional programming from Kotlin

Since Kotlin does not enforce any particular paradigms and is not purely functional, it can be pretty easy to fall back to imperative programming habits if a programmer comes from an imperative background. See More
Endi Sukaj
Top Pro

Easy adoption for existing Java programmers

Kotlin runs on the JVM and Java interoperability has been one of the main objectives since the language was born. It runs everywhere Java does; web servers, mobile devices (Android), and desktop applications. It also works with all the major tools in the Java ecosystem like Eclipse, IntelliJ, Maven, Ant, Gradle, Spring Boot, etc. All of this makes adoption extremely easy even for existing Java projects. On top of this there's also ensured Type safety and less boilerplate code needed. See More
Endi Sukaj
Top Con

The need for Java interoperability has forced some limitations

The need to make Kotlin interoperable with Java has caused some unintuitive limitations to the language design. See More
Endi Sukaj
Top Pro

Easy to learn if you have prior programming experience

Kotlin's syntax is extremely easy to understand. The language can be picked up in a few hours just by reading the language reference. See More
Endi Sukaj
Top Pro

No runtime overhead

The standard library is relatively small and tight. It mostly consists of focused extensions of the Java standard library and as such adds no additional runtime overhead to existing Java projects. See More
Endi Sukaj
Top Pro

Officially supported for Android development

Starting with version 3.0 of Android Studio, Kotlin support will be built-in. This means that it's now easier than ever to use Kotlin for existing Android projects or even start writing Android apps only with Kotlin from scratch. This also means that Kotlin and Kotlin plugins for Android Studio will be fully supported in the future and their likelihood of being abandoned is quite small since Google is fully embracing the language for their Android ecosystem (alongside Java and C++). See More
Endi Sukaj
Top Pro

Low-risk adoption for existing Java codebases

Since it has such a good interoperability with Java, Java libraries, and Java tools. It can be adopted for an existing Java codebase at little to no cost. The codebase can be converted from Java to Kotlin little by little without ever disrupting the functionality of the application itself. See More
Endi Sukaj
Top Pro

Does not impose a particular philosophy of programming

It's not overly OOP like Java and it does not enforce strict functional paradigms either. See More
Endi Sukaj
Top Pro

Is built to solve industrial problems

Kotlin has been designed and built by developers who have an industrial background and not an academic one. As such, it tries to solve issues mostly found in industrial settings. For example, the Kotlin type system helps developers avoid null pointer exceptions. Reasearch languages usually do not have null at all, but APIs and large codebases usually need null. See More
Specs
Price:Free, Open Source
Site:http://kotlinlang.org
Current stable version:1.3
HideSee All Experiences
190 61

Haskell

All
24
Experiences
Pros
13
Cons
10
Specs
gilch
David
Endi Sukaj
Top Pro

Forces you to learn pure functional programming

It is pure and does not mix other programming paradigms into the language. This forces you to learn functional programming in its most pure form. You avoid falling back on old habits and learn an entirely new way to program. See More
gilch
Endi Sukaj
Andris Pelcbergs
Top Con

Difficult learning curve

Haskell lends itself well to powerful abstractions - the result is that even basic, commonly used libraries, while easy to use, are implemened using a vocabularly that requires a lot of backround in abstract mathematics to understand. Even a concept as simple as "combine A and B" is often, both in code and in tutorials, described in terms of confusing and discouraging terms like "monad", "magma", "monoid", "groupoid", and "ring". This also occasionally bears its ugly head in the form of complicated error messages from type inference. See More
Endi Sukaj
Peter Zeller
Top Pro

Open source

All Haskell implementations are completely free and open source. See More
Endi Sukaj
Steven Sagaert
Marc Telesha
Top Con

Package manager is unstable & lacking features

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

Mathematical consistency 

As Haskell lends itself exceedingly well to abstraction, and borrows heavily from the culture of pure mathematics, it means that a lot more code conforms to very high-level abstractions. You can expect code from vastly different libraries to follow the same rules, and to be incredibly self-consistent. It's not uncommon to find that a parser library works the same way as a string library, which works the same way as a window manager library. This often means that getting familiar and productive with new libraries is often much easier than in other languages. See More
Endi Sukaj
Andris Pelcbergs
Top Con

You need some time to start seeing results

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

Highly transferable concepts

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

You have to learn more than just FP

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

Referentially transparent

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

Language Extensions lead to unfamiliar code 

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

Very few language constructs 

The base language relies primarily on function application, with a very small amount of special-case syntax. Once you know the rules for function application, you know most of the language. See More
Endi Sukaj
Andris Pelcbergs
Top Con

Symbols everywhere 

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

Hand-writeable concise syntax

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

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

See More
Endi Sukaj
Mario T. Lanza
Top Pro

Functions curry automatically

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

Lazily Evaluated 

Haskell's lazy evaluation implies a level of indirection - you're not passing a value, you're passing a thunk. This is often difficult to grasp not just for beginners, but for experienced programmers coming from strictly evaluated languages. This also means that, since for many, strict evaluation is their first instinct, initial expectations of a function's performance and complexity are often broken. See More
Endi Sukaj
Stuart Kearney
Peter Zeller
Top Pro

Easy syntax for people with a STEM degree

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

Documentation for most packages is short and lacking

A few Haskell packages are well documented but this is the exception, not the rule. Most of the time a list of function signatures is what passes for documentation. See More
Endi Sukaj
Andris Pelcbergs
Top Pro

Easy to read

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

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

See More
Andris Pelcbergs
Top Pro

Quick feedback 

It's often said that, in Haskell, if it compiles, it works. This short feedback loop can speed up learning process, by making it clear exactly when and where mistakes are made. See More
Endi Sukaj
Peter Zeller
Top Pro

Popular in teaching

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

Powerful Categorical Abstractions

Makes categorical higher order abstractions easy to use and natural to the language See More
Specs
Site:https://www.haskell.org/
Paradigm:functional
Type System:static
HideSee All Experiences
219 89

Scala

All
11
Experiences
Pros
7
Cons
3
Specs
Mayank Mandava
Top Con

Can be intimidating for beginners

Scala is an industrial language. It brings functional programming to the JVM, but not with a "start small and grow the language" perspective, but rather a very powerful language for professional programmers. See More
Hector Malpica (Miuler)
Top Pro

Immutable values

The immutable values make it perfect for working with concurrency See More
gilch
Top Con

Static type system inherits cruft from Java

The type system is too complicated yet still less powerful than Haskell's. See More
Laura Kyle
Tom Raleigh
Top Pro

Multiparadigm

Scala supports both Functional and Object Oriented styles of programming. Beginners can learn both paradigms without having to learn a new language, and experts can switch between the two according to what best suits their needs at the time. See More
Ryan
Steven Sagaert
Top Con

Way too complex for beginners

Even for seasoned programmers it's a difficult language. See More
Laura Kyle
Andris Pelcbergs
Tom Raleigh
Top Pro

Type inference

Scala offers type inference, which, while giving the same safety as Java's type system, allows programmers to focus on the code itself, rather than on updating type annotations. See More
Andris Pelcbergs
Tom Raleigh
Top Pro

Compiles to JVM bytecode

Aside from Java itself, Scala is by far the most popular of the many JVM languages. If you're developing for Android, or a similar JVM-only platform, or otherwise need out-of-the-box cross-platform compatibility, but the performance of a compiled language, Scala is the way to go. See More
Piotr Kosecki
Top Pro

Very good online courses

On coursera you can find great introduction to Scala by Martin Odersky. See More
ElectronWill
Top Pro

Type inference leads to a simpler syntax

See More
TactfulTuireann
Top Pro

Expressive functional programming abstraction for reusable and safe code

See More
Specs
Price:Open Source (Free)
Site:scala-lang.org
Current stable version:2.12.6
HideSee All Experiences
208 109

Clojure

All
16
Experiences
Pros
12
Cons
3
Specs
Endi Sukaj
Mario T. Lanza
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
Endi Sukaj
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
Mario T. Lanza
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
rystrm
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
Endi Sukaj
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
G. P. II
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
Endi Sukaj
Top Pro

Good for writing concurrent programs

Since Clojure is designed for concurrency, it offers things like Software Transaction Memory, functional programming without side-effects and immutable data structures right out of the box. This means that the development team can focus their energies on developing features instead of concurrency details. See More
Endi Sukaj
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
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
OrganizedRundas
Top Pro

Dynamic language

A superb data processing language. While rich type and specification systems are available they are optional. See More
Gage Peterson
Top Pro

Rich Hickey

The creator is so awesome, he's a feature. Just look up his talks and see why. See More
Laura Kyle
OrganizedRundas
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
Endi Sukaj
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
Endi Sukaj
Gage Peterson
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
Chloe Montanez
TallTumatauenga
Top Pro

No C/Java syntax

Refreshing, BTW! See More
Specs
Platforms:Windows, Linux, Mac
Price:Free, Open Source
Site:www.clojure.org
Current stable version:1.9
See All Specs
HideSee All Experiences
253 83

C#

All
18
Experiences
Pros
12
Cons
5
Specs
Laura Kyle
Aethec
Top Pro

.NET is a great toolbox

C# runs on top of the .NET framework, which provides many libraries containing classes used for common tasks such as connecting to the Internet, displaying a window or editing files. Unlike many other languages, you don't have to pick between a handful of libraries for every small task you want to do. See More
Endi Sukaj
michael.switzer
Top Con

Dependecy on IDE

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

Awesome IDE for Windows

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

Too easy to write multithreading apps that are buggy

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

Incredibly Well-Engineered Language

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

Often-used products in most C# development environments get expensive

The majority of the C# development community uses Microsoft products which are not all free and open-source. As you get into the enterprise level of some of these products and subscriptions, the expense is multiple factors of 10 greater. While you can use a fully open-source and free C# environment, the community around that is much smaller. While this can be said for other languages as well, the majority of C# falls into the for-pay Microsoft realm. See More
Theodore Lief Gannon
Aethec
Top Pro

Supports some functional features

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

Complex syntax

Too many syntactic constructs to learn before it becomes usable. See More
Laura Kyle
Andris Pelcbergs
Aethec
Top Pro

Great introduction to object-oriented programming

Object-oriented programming is the most widely-used paradigm. C# offers support for common OOP features such as classes, methods and fields, plus some features not found in competing languages like properties, events and static classes. C# code is much more readable thanks to the syntactic sugar it offers. You can truly concentrate on your code, not on the way it's implemented. See More
Theodore Lief Gannon
Eonil
Top Con

Lacks standard-library support for immutable data structures

See More
Aethec
Top Pro

Best language for Windows programs

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

Supported on many platforms

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

Can mix high and low level programming

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

Very high demand in the industry.

See More
thermoplastics
Craig
Top Pro

With ASP CORE a good language to learn

With CORE you are no longer just limited to Windows, so a language worth learning. See More
JM80
Jiří Sýkora
Top Pro

.NET truly universal

With .NET core it is a truly universal programming language which support desktop apps (Windows), Mobile apps (Xamarin), Web Apps (ASP.Core MVC). Also is perfectly fit to serverless programming for micro services. Soon it will be also support Web assembly (Blazor). See More
Laura Kyle
Andris Pelcbergs
nDman
Top Pro

Great language for Unity game engine

Unity provides a selection of programming languages depending on preference or knowledge - C#, JS, Boo and UnityScript. C# is arguably the most powerful with better syntax and stronger language structure. It allows using script files without attaching them to any game object (classes, methods inside unattached scripts that can be used at any time). There are more tutorials and information for C# than UnityScript and Visual Studio can be used to code for unity in C#. Additionally, learning C# allows using it outside of Unity as well unlike UnityScript. See More
Specs
Platforms:Windows, Linux, Mac
Current stable version:7
HideSee All Experiences
235 121

C++

All
27
Experiences
Pros
9
Cons
17
Specs
Laura Kyle
Endi Sukaj
cdt5050
Top Pro

Huge language supports most everything

C++ is a large language with an even larger community and following. It has libraries for every kind of task that is possible to do with C++ See More
Endi Sukaj
Izem Lavrenti
Andris Pelcbergs
Top Con

Module system is not great

C++ uses the #include mechanism provided by C. Which unfortunately is a poor way of accessing the API of a library. Some of the reasons why the module system is weak are: Compile time scalability: The compiler must preprocess every header included in a file, and every header included in those headers. This process must be repeated for every translation unit in the program. As can be imagined, this doesn't scale very well. For each header added you are increasing the compilation time exponentially. Fragile: modules included are treated as textual imports by the compiler. This causes all sorts of problems since they are subject to any macro definitions in the time of the inclusion. If any of these macro definitions collide with a name in the library it can break the library API . See More
Andris Pelcbergs
TheFuture
Top Pro

Powerful memory management

Allows puting large arrays on the "heap" to avoid "stack overflow". See More
gilch
Top Con

Undefined behavior

Subtle errors can render the entire program "undefined" by the complicated C++ standard. The standard imposes no requirements in such cases. Thus C++ compiler writers are free to ignore the existence of such cases and Bad Things are prone to happen instead. Even experts can't reliably avoid undefined cases in C++, so how can beginners be expected to do so? See More
Andris Pelcbergs
Muhammad Annaqeeb
Top Pro

Teaches problem solving

The great STL is the most powerful Data Structure and Algorithms Library. It would benefit you very much in problem solving, your main main way to love programming. The code is much compact compared to Java and C#. No unnecessary classes are in your way; yet when you need classes they are available unlike C. The code runs very fast. See More
gilch
cdt5050
Top Con

Huge language gets in the way of learning

C++ is such an atrociously over-complicated language that its learning curve may get in the way of learning fundamentals. Learning C++ well is a ten-year project, and even experts are frequently surprised by the language. See More
Tyler
Laura Kyle
Daniel Kelly
Top Pro

Teaches fundamental OOP

Teaches you to leverage object oriented programming. See More
gilch
Michael Murphy
Top Con

No two programmers can agree on which 10% subset of C++ to use

C++ is such a huge and complicated language, that programmers have to learn a disciplined subset of it to reliably get anything done. The problem is, no-one can agree on which subset to use and they can't understand each other. See More
Yoshiyuki
Tyler
Ricardo Rodrigues
Top Pro

C code can be used in C++ code

Most C code will work as C++. See More
Mario Ray Mahardhika
Top Con

Retains nearly all bad habits of C

See More
Boris Lazarov
thermoplastics
Top Pro

Excellent compiler optimization

Both open source compilers (such as Clang and GCC), and proprietary ones (like Intel's and Microsoft's) are very good at analyzing program flow and program optimization. This is mostly due to the widespread usage of C/C++ applications running everything from mobile/desktop/server Operating Systems, to search engines and webserver software, and the demand for performance. See More
Heliophanus
Top Con

Tough to learn as the first language

Many of the concepts are hard to grasp if you have no prior programming experience. See More
Yoshiyuki
Deuxis
Top Pro

Teaches low-level programming, but doesn't have as many pitfalls as C

Teaches data types, low-level program flow and the so common C-style syntax while not being as much of a pain as C itself. See More
gilch
Top Con

Bugs easily corrupt the memory you need to find them

You can usually get a core dump, but often the call stack gets completely overwritten. Compilers are not even consistent in how they map the binary objects to code. See More
Ricardo Rodrigues
Top Pro

STD is often updated

The functionalities keep growing throughout the years. C++11 gave us a soft type of garbage collecting with the smart pointers. See More
Jonathan
gilch
Top Con

Painfully slow compilation

Beginners need fast feedback See More
Izem Lavrenti
Elderov Ali
Top Pro

Best way to understand algorithms

See More
gilch
Top Con

No reflection

C++ objects are frustratingly opaque. This makes debugging especially difficult, something beginners have to do a lot. See More
gilch
Top Con

No way to locate definitions

No modules, just files, and no way to tell where anything came from. See More
Jonathan
gilch
Top Con

Complicated types

See More
John Parsons
Top Con

Undefined behaviors and weak limited type safety

Undefined behavior in a program can cause unexpected results, making it hard to debug. With UB, program behavior may vary wildly depending on optimization settings. There are many cases that invoke UB, such as signed overflow, invalid dereferences, large integer shifts, uninitialized variables, etc. C++ allows for non-type safe operations such as logic errors, wild pointers, buffer overflow, etc. UB and type safety issues create a large number of bugs and security vulnerabilities. See More
gilch
Top Con

Standard library missing important features

See More
Jonathan
gilch
Top Con

Arcane binding rules

See More
Jonathan
gilch
Top Con

Incomprehensible operator overloading resoution

See More
Jonathan
gilch
Top Con

Exceptions incompatible with C++ manual memory management

See More
Jonathan
gilch
Top Con

Duplicates C features in incompatible ways

Arrays, strings, pointers, etc. have both C and C++ versions. Sometimes the C++ versions are worse. This is more useless trivia beginners have to sort through. See More
Specs
Price:Depends on Implementation
Engine:UE4 , Cocos-2d-x
Standard: ISO/IEC 14882 or C++17
HideSee All Experiences
145 92

Elixir

All
11
Experiences
Pros
8
Cons
2
Specs
Endi Sukaj
Gage Peterson
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
Hilko
Top Con

Deployment is still not as easy as it should be

See More
Joe Seeley
Top Pro

Great for concurrency

Leverages the existing Erlang BEAM VM See More
Endi Sukaj
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
Endi Sukaj
Gage Peterson
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
Paolo
Endi Sukaj
Gage Peterson
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
Matthias Schuster
HumbleCelaeno
Top Pro

Powerful metaprogramming

Write code that writes code with Elixir macros. Macros make metaprogramming possible and define the language itself. See More
Matthias Schuster
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
Svjatoslavs Krasnikovs
BraveMagec
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
Gage Peterson
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
Specs
Price:Open source (Free)
Site:https://elixir-lang.org
Current stable version:1.8.1
GZipped size:3.61 MB (without required Erlang VM)
HideSee All Experiences
273 80

Elm

All
19
Experiences
Pros
14
Cons
4
Specs
Rehno Lindeque
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
PerfectJulunggul
Top Con

Lack of typeclasses

Elm doesn't have typeclasses which means some code needs to be duplicated. A fix in a function that needs typeclasses means all of the duplicates need to be fixed too. See More
Gage Peterson
Top Pro

Inferred static typing

ML static typing is great because it's always there, you just choose how explicit you want to be and how much you want the compiler to do. See More
ComposedThoas
Top Con

Poor Windows support

Few if any of Elm's core contributors are Windows users and breaking bugs are sometimes left for weeks or months. See More
Andris Pelcbergs
Top Pro

Designed around high-level front-end development 

As Elm was designed as a front-end langauge, it has out of the box support for things like DOM-element creation, letting programmers focus on their application logic, rather than implementation details specific to the web. See More
Taylor Coogan
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
Andris Pelcbergs
Top Pro

Great and simple way to learn Purely Functional Programming 

You can try to apply some functional programming ideas in other languages that have an imperative basis, but you haven't seen the real power unless you tried it in the environment of purely functional programming. Elm is a simple language with great learning resources and easy graphical output, which makes it easy to explore the power of functional programming. Plus programming in Elm is very readable. See More
Alex
AmiableMut
Top Con

Not database-friendly

It is lots of work to make a server or database your "one source of truth", as Elm makes you write endless JSON parse boilerplate to talk to the server. See More
Andris Pelcbergs
Top Pro

Good documentation 

Elm is gaining popularity, somewhat faster than many of the other solutions here. This translates to more code examples, more documentation, and more libraries. See More
Monika
Andris Pelcbergs
Top Pro

Growing community

See More
Laura Kyle
Lourens Rolograaf
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
Aubrey
ntesla
Tom Raleigh
Top Pro

High-level Functional-Reactive Code

Build animations, games, and interactions with an incredibly small amount of terse, readable code. See More
Luke Westby
Ryan Plant
Andris Pelcbergs
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
Endi Sukaj
Aubrey
ntesla
Top Pro

Interactive Programming and Hot Swapping

Support for hot swapping and interactive programming is included. See More
Lourens Rolograaf
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
Laura Kyle
Lourens Rolograaf
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
Monika
RealisticMacha
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
Lourens Rolograaf
Top Pro

Not quite Haskell semantics

Luckily you do not have to learn Haskell to be able to do any Elm. It is meant to be a language that compiles to Javascript, so for Javascript programmers (Front end) not for CS students who want to learn as many different algorithms as possible. See More
Specs
Platforms:Windows Linux Mac Web
Price:Open Source
Site:http://elm-lang.org/
Current stable version:0.19
See All Specs
HideSee All Experiences
288 90

Ceylon

All
13
Experiences
Pros
10
Cons
2
Specs
PhiLho
Top Pro

Strong static typing, null safe and flexible, almost dynamic type system

The compiler prevents you from using a potentially null variable, unless you check it is not null. Ie. it forces you to check a potentially null value before using it. The type system is strict, but flexible, allowing union and intersection of types, covariant and contravariant types, reified types, etc. Type inference and union types allows a dynamic programming style, close of JS spirit. See More
thermoplastics
Laura Kyle
anonymous anonymous
Top Con

Lack of physical or electronic books

We should hope Red Hat or anyone interested would take the time and write one. That would strengthen the maturity of the language, but Ceylon is rapidly developing which can make the author's efforts futile because his or hers work will become obsolete soon. The second hindrance is, of course, popularity of the language which can't give much to the pockets of the author (however, Dart's unpopularity at start didn't prevent it to have a lot of printed material, but that's Google's child, we know). See More
PhiLho
Top Pro

Designed from the start to generate JavaScript

It brings type safety to JS, allowing to define interfaces to existing JS APIs, yet using the dynamic keyword for flexible calls in the JS ecosystem. See More
PhiLho
Top Con

Currently has large runtime

Ceylon 1.2 needs a language runtime of 1.55 MiB, and the Collection library adds another 370 KiB. That's a lot for the Web... Now, this has to be put in perspective: if you use Ceylon to make a web application, these files will be loaded once, then cached by the browser (that's not casual browsing). Moreover, most servers compress such resource, and the numbers become respectively 234 KiB and 54 KiB, which is more reasonable... See More
PhiLho
Top Pro

Excellent IDE support

Ceylon has reified generics, so it doesn't loose the type of collections at runtime. This makes autocompletion, debugging, etc. first-class. The Eclipse plugin makes it a full-fledged Ceylon IDE, and an IntelliJ IDEA plugin is in the works. See More
PhiLho
Top Pro

Great tutorial

Gavin King, main author of the language, has a great, clear technical writing style, making understandable difficult concepts like variance or sound type system. See More
PhiLho
Top Pro

Try it out in the browser

It has a Web IDE: http://try.ceylon-lang.org/ with impressive demos: http://try.ceylon-lang.org/?gist=bd41b47f325b6d32514a so you can try it without installing anything, and see the JS generation / interop in action. See More
Enrique Zamudio
Top Pro

Excellent documentation

The language specification is very complete and up to date; also, the language module is very well documented. See More
Endi Sukaj
Gavin King
Top Pro

Javascript interoperability

Ceylon has special language-level support for interoperation with dynamically typed languages like JavaScript, and its module system even interoperates with npm. See More
Laura Kyle
anonymous anonymous
Top Pro

Easy to learn even if you don't have prior programming experience

Ceylon is indeed fairly easy and readable. Of course those ones who know OOP and a bit of functional programming concepts will feel almost at home right from the start. See More
Lau Hilary
Top Pro

Generate HTML

HTML generation is supported right in the SDK. See More
xkr47
Top Pro

Same code in backend and frontend

If you don't use platform-specific features, you can reuse the same code in your backend server (be it in Java or JavaScript) and in your client-side browser code, for example for storing data, validating input etc. See More
Specs
Price:Free, Open Source
Site:http://ceylon-lang.org
Current stable version:1.3.2
HideSee All Experiences
44 20

F#

All
10
Experiences
Pros
8
Cons
1
Specs
Endi Sukaj
Tony
Top Pro

Concise syntax

F#'s syntax tends to be terse while remaining very readable and easy to understand without being a chore to write. See More
Laura Kyle
rystrm
Top Con

Has no ad-hoc polymorphism (á la Type Classes)

You have generics, you have interfaces, you have inheritance, you have a lot of things at your disposal but you don't have Type Clases. They can be emulated using some clever constructs but there's nothing like having the real thing. See More
Endi Sukaj
Andris Pelcbergs
Tony
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
Tony
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
rystrm
Top Pro

Multiplatform, it runs on .Net Core

Forget Xamarin and Mono. F# now runs on the multiplatform .Net Core! See More
Andris Pelcbergs
Kribbel
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 an other features. See More
WhiteLilac
Mangel Maxime
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
Matthew Chudleigh
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
thermoplastics
Tom7
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
Specs
License:Apache 2.0
Site:http://www.fsharp.org
Current stable version:4.1
IDE Support:Visual Studio, Code, Rider
HideSee All Experiences
105 44

TypeScript

All
28
Experiences
Pros
16
Cons
11
Specs
Yoshiyuki
kaguru
Laura Kyle
Top Pro

Optional static typing

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

No support for dead code elimination

Typescript compiler does not remove dead code from generated file(s), you have to use external tools to remove unused code after compilation. This is harder to achieve, because Typescript compiler eliminated all type information. See More
Laura Kyle
Tim Etler
Aubrey
Top Pro

Strict superset of Javascript

Every existing Javascript program is already a valid TypeScript program giving it the best support for existing libraries, which is particularly useful if you need to integrate with an existing Javascript code base. See More
Endi Sukaj
Laura Kyle
Tim Etler
Top Con

Too similar to Javascript

Presents some advantages compared to Javascript, but because it is designed to be a superset of Javascript, it means all the bad parts of Javascript are still present. See More
thermoplastics
Balázs Zubák
Top Pro

Strong typed language

Lot of benefits of it, you can read this. See More
PleasantWurugag
Top Con

No support for conditional compilation

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

Polyfill for ES6 fat-arrow syntax

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

Type checking not enforced by default

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

Clear roadmap

TypeScript has a clear and defined roadmap with rapid and constant releases. See More
Endi Sukaj
Big Dubb
Laura Kyle
Top Con

Type inference coverage is incomplete

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

First party Visual Studio support

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

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

Just compare https://pub.dartlang.org/packages and http://definitelytyped.org/tsd/ Typescript => 930 Dart => 2060 See More
Dmitry Gurovich (yrtimiD)
Top Pro

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

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

Requires "this" for field access

Even in cases were there is no ambiguity, you still have to use "this.fieldName" instead of just "fieldName". See More
Mike Bridge
Laura Kyle
Abraão Alves
Top Pro

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

See More
Ray
Johnny Cage
Top Con

Benefits don't exceed costs

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

Adds support for object-oriented programming

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

Syntax is too verbose

See More
thermoplastics
Endi Sukaj
Laura Kyle
Top Pro

Built and supported by Microsoft

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

No Java-like package structure

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

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

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

Small community

See More
Daniel Earwicker
Top Pro

Great support for React, integrated typed JSX parsing

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

Works well with Angular 2

Angular 2 is built using TypeScript and applications built using it can make use of that (or not). See More
webwake
Top Pro

Works well with existing Javascript code

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

Compiles to very native looking code

Compiles to simple looking Javascript making it easy to understand what is happening and learn the language (if you already know Javascript). See More
CourageousAriadne
Top Pro

Ability to do functional programming

See More
Specs
Price:Free, Open source
Site:http://www.typescriptlang.org/
Current stable version:3.2
IDE Support:Very good
HideSee All Experiences
248 101

Ruby

All
19
Experiences
Pros
8
Cons
10
Specs
gilch
Andris Pelcbergs
Tom Raleigh
Top Pro

Clean syntax

Ruby has a very clean syntax that makes code easier to both read and write than more traditional Object Oriented languages, such as Java. For beginning programmers, this means the focus is on the meaning of the program, where it should be, rather than trying to figure out the meaning of obscure characters. presidents = ["Ford", "Carter", "Reagan", "Bush1", "Clinton", "Bush2"] for ss in 0...presidents.length print ss, ": ", presidents[presidents.length - ss - 1], "\n"; end See More
Christopher Patti
Top Con

Its ecosystem is limited outside of web development

If you're looking to host, generate, manipulate or secure a website, Ruby is your language. There's also some great support here for infrastructure as code work via Chef. However, it just doesn't have the depth and breadth that Python does. Things like native UI development, high performance math, and embedded / small footprint environments are barely supported at all in Ruby-space. See More
Alex
Matthew O'N.S Jordan
Top Pro

A large ecosystem of tools & libraries

Ruby has a large ecosystem of tools and libraries for just about every use. Such as ORMs (Active Record, DatabMapper), Web Application Frameworks(Rails, Sinatra, Volt), Virtualization Orchestration(docker-api, drelict), CLI tools(Thor, Commando), GUI Frameworks(Shoes, FXRuby) and the list goes on. If you can think of it, there is probably a gem for that ( and if not you can create your own and share with the community). See More
Endi Sukaj
Andris Pelcbergs
Eldric Liew
Top Con

Meta-programming causes confusion for new developers

The ability for libraries to open classes and augment them leads to confusion for new developers since it is not clear who injected the functionality into some standard class. In other words, if two modules decide to modify the same function on the same class can introduce a number of issues. Mainly, the order in which the modules are included matters. Since you more or less can't tell what kind of "helper" functions a module might write into any class, or for that matter, where the helper function was included from, you may sometimes wonder why class X can do Y sometimes but not at other times. See More
Andris Pelcbergs
Tom Raleigh
Top Pro

Widely used

Ruby is one of the most popular languages for developing web sites. As a result, there's an abundant amount of documentation, sample code, and libraries available for learning the language and getting your project up and running. The most popular features are just 'gem install' away. Additionally, it is easier to find Ruby jobs because of this. See More
gilch
Endi Sukaj
Top Con

Arcane grammar based on Perl

Ruby is too complicated for beginners: arcane Perlisms; semi-significant whitespace; parentheses are not necessary around method arguments, except for sometimes they are; control constructs could be elegantly implemented with block like Smalltalk (Instead they're baked into the grammar.); verbose block syntax, unless it happens to be the last argument. (proc lambda). There are too many exceptional cases and arcane precedence rules. See More
Nathan James Monte
Top Pro

Ruby on Rails

Lays out an easy to follow and opinionated MVC pattern that teaches best practices through necessity. See More
gilch
Top Con

More than one way to do it

A problem inspired by Perl. The core API interfaces are bloated. There's at least four different ways to define methods. More is not always better. Sometimes it's just more. See More
Heliophanus
Top Pro

Newbie-friendly community

See More
gilch
Top Con

Monkeypatching

Requiring a library can change the rules of the language. This is very confusing for beginners. See More
Endi Sukaj
Nathan James Monte
Top Pro

Hugely object oriented

Object oriented programming is one of the most important concepts in programming. See More
Heliophanus
Top Con

Viewed as a web development language

Despite its flexibility and performance, Ruby is often seen as being unsuitable for other tasks by those who are not familiar with it. As such, a lot of discussion about it centers around Rails, which is not at all relevant if you're using Ruby for something else, such as game development. See More
Alex
Eric Wanchic
Top Pro

Test Driven Development, #1

It's the fore-runner and trend setter for TDD. See More
gilch
Top Con

No docstrings

It's hard to access Ruby's documentation from the REPL (irb), unlike Python, Lisp, and Smalltalk which let you ask functions how to use them, which is a great benefit to the beginner, and which also encourages you to document your program as you code it. See More
gilch
Top Pro

Pry

See More
Laura Kyle
Nikita Volkov
Top Con

Dynamic type system

Majority of bugs could be resolved with types. See More
Izem Lavrenti
Top Con

Does not teach you about data types

Since Ruby is a dynamically typed language, you don't have to learn about data types if you start using Ruby 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
Alex
thermoplastics
TheDude
Top Con

Focus on Object-Oriented Programming (OOP)

Focussing on OOP in a beginner stage is an easy and popular plan, but not the best one. See More
Specs
Price:Open Source (Free)
Site:https://www.ruby-lang.org
Current stable version:2.6.0
GZipped size:15.9 MB
HideSee All Experiences
203 104

JavaScript

All
44
Experiences
Pros
22
Cons
21
Specs
Chloe Montanez
Andris Pelcbergs
Stuart Kearney
Top Pro

Required for web development

If you are looking to create web projects, you will have to learn Javascript in order to develop the client side code. If you learn the foundations of programming in JavaScript you can reapply that education later in building web applications. See More
Laura Kyle
Andris Pelcbergs
Alan
Top Con

Many errors pass silently

JavaScript looks for every possible way to treat the code you write as runnable and is very reluctant to point out likely errors. For example, you have call a function with too many arguments, the extra arguments are simply discarded. See More
Chloe Montanez
Andris Pelcbergs
Myrne Stol
Top Pro

No installation required

If you run a web browser you already have JavaScript installed and can get started right away. Modern browsers such as Chrome also have very powerful programming consoles built into them. Aside from the browser console, you can also use online Javascript playgrounds such as JS Bin and JS Fiddle. Even from a tablet. See More
gilch
Top Con

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

this is bound to whatever object called the function. Unless you invoke it as a method. Unless you invoke it as a constructor. Unless it's an arrow function. See More
Chloe Montanez
Andris Pelcbergs
Tim Etler
Top Pro

Runs on both the browser and the server

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

Does not teach you about data types

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

First-class functions with lexical closures

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

Weird type coercions

'5' - 1 == 4, but '5' + 1 == 51. There are other examples that make even less sense. See More
Chloe Montanez
Stuart Kearney
JWolfe
Top Pro

Instant gratification

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

Easy to accidentally use globals

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

Easy to build an application

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

Asynchronous coding is not easy for beginners

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

Massive ecosystem

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

Complex

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

C-like syntax

After learning Javascript, you will feel at home in other languages as C-like syntax is very common. See More
DevDad
Andris Pelcbergs
Alan
Top Con

Limited standard library

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

Very good debugger

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

Each browser has its own quirks when executing the same code in some cases

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

JSON is native to JS

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

Fast moving

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

High demand for JavaScript developers

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

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

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

Great tools for development

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

Array-like objects

Many cases when you should get an Array, you just get an Array-like object instead and none of the Array methods work on it. See More
DevDad
Endi Sukaj
Andrew Wooldridge
Top Pro

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

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

Numbers that begin with 0 are assumed octal

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

Complete dev stack can be run online

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

The constant churn of tooling and language

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

Can be very simple (teachable)

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

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

See More
Chloe Montanez
Shane Knysh
Top Pro

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

May also be a con. See More
Monika
Guiomar Tuñón Hita
Top Con

Easy to fall into bad manners and bad mind structure

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

Modern ESNext is far better than the JS of days past

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

Good tools are pretty much a MUST for new programmers

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

Integrates very well with UE4

Coding an immersive 3D game can retain the attention of new programmers. ncsoft/Unreal.js. See More
Hesham ELMAHDY
Top Con

Very confusing to read

See More
cdt5050
Top Pro

Prototype based Object Oriented System

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

Has really bad parts you're better off avoiding altogether

But beginners won't know better. And even after you learn, you might have to deal with others' code that uses the bad stuff. JavaScript was originally developed in 10 days. It just wasn't designed that carefully. See More
Deuxis
DevDad
Top Pro

Speed (most implementations)

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

Counter-intuitive type conversion

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

Extremely popular

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

Fractured ecosystem

Angular, React, Ember, Meteor, Backbone, Knockout, Express, Mithril, Aurelia. The web frameworks pass in and out of fashion too quickly to keep up with. The endless civil wars are becoming tiresome. See More
Chloe Montanez
Laura Kyle
Daniel Santana
Top Pro

The most used language in the whole Solar System in amount of scripts/applications

Because it runs in many different environments, it is the most used language in the world. See More
Specs
Engine:V8/ChakraCore
Author:Ryan Dahl/Joyent
ECMAScript Modules:Available (as a flag) (only on Node 8.x-10.x)
Version(Latest):10.x
See All Specs
HideSee All Experiences
419 212

Haxe

All
31
Experiences
Pros
25
Cons
5
Specs
Laura Kyle
Adi
Tim Etler
Top Pro

Compiles to multiple platforms and languages

Haxe allows you to develop for Web, iOS, Android, Blackberry, Windows, OSX, Linux and others, all at once, without the need to switch languages and maintain separate code bases. This is possible because Haxe can compile to JavaScript, ActionScript, Flash AVM bytecode, C++, Neko, PHP, C# (.NET) and Java. Support for even more platforms and languages is under development. See More
Endi Sukaj
SociableSengann
Top Con

Bad support in some popular IDEs

While it has great support in Visual Studio Code and Vim for example, it still lacks support in some IDEs such as IntelliJ. See More
Tim Etler
Aubrey
ntesla
Top Pro

Powerfully expressive but easy to learn

The language was designed to be very expressive with the smallest possible amount of syntactic sugar. There are actually fewer keywords than other languages with similar power. See More
LuckyHermodr
Top Con

You need to code interfaces to work with existing JavaScript code

Some popular libs like JQuery have maintained externs, for any specific code or lib already in JS you have to write the externs to use it in your haxe application. See More
Tim Etler
Aubrey
ntesla
Top Pro

Pick up errors at compile time

One big advantage over pure javascript, (or some other languages listed here) is that Haxe will pick up a whole range of errors when you compile, saving you the pain of having to try and debug them later. This includes everything from syntax errors ("Unexpected ;") to type errors ("Class user has no field username. Suggestion: username"). See More
WhiteLilac
Matthias Schuster
Top Con

No Qt support

There is currently no support for Qt. See More
Tim Etler
Aubrey
ntesla
Top Pro

First class code completion

Code completion is built into the compiler and available to the IDE allowing for much smarter code completion that can actually parse and understand the syntax tree. See More
Tarwin Stroh-Spijer
Top Con

Full programs only

You can create small utility functions with Haxe, but generally it is a lot more work than with other JS compilers. Haxe is best used when you have a larger project. See More
Tim Etler
Jean-michel Delettre
back2dos
Top Pro

Syntactic macros

Syntactic macros allow you to extend compiler features at the syntax tree step. Macros come into play after code is parsed into the abstract syntax tree, and macros allow you to transform it before the rest of the compilation completes. This provides for immense power, while at the same time scoping the extensibility at a level that is powerful, but well constrained. See More
Monika
PrincipledTaranis
Top Con

It's not easy to convince people it's as good as it really is unless you can get them to really try it

See More
Laura Kyle
Tom Rhodes
Top Pro

Code reuse server side and client side

You can use the same classes on the server as you do on the client where applicable. This saves a lot of time. See More
Paolo
Laura Kyle
Tim Etler
Top Pro

Extremely fast compilation

Haxe can easily compile over 100,000 lines of code to JS in seconds on a mid-spec computer. See More
Adi
Aubrey
ntesla
Top Pro

Ability to use existing JS libraries

Haxe has the ability to use "externs". These are haxe files which describe the usage of existing JS libraries. Get code completion and compile-time-checking for everything from jQuery to Node.js. Even without externs, native JS code can still be used through untyped code. See More
Laura Kyle
Aubrey
ntesla
Top Pro

Similar to JavaScript and ActionScript 3

The language is very easy to learn for those with background in JavaScript or ActionScript 3. See More
Laura Kyle
Tim Etler
Tarwin Stroh-Spijer
Top Pro

Small, readable output

The output that is generated can be trimmed using "dead code elimination" to only include those functions and libraries that are strictly necessary. All code is very readable with only minimal extras for specific functionality. Small output is good for frontend development as file size is a major concern. See More
Adi
Aubrey
ntesla
Top Pro

Large library support. From servers to games.

Haxelib (common library repo) and other sources contain large codebases for anything from cryptography to communications. A lot of these are fully cross platform and work with the JavaScript target. The JavaScript target can be used for everything from node.js server applications (with code completion) to games using either the Flash-like OpenFL library or direct canvas or WebGL programming. See More
Paolo
Andy Li
Luca Deltodesco
Top Pro

Established project

Haxe has been around for more than 10 years (since 2005) and whilst not the most popular project, has had continuous growth. Highly unlikely to disappear or for support to stop. See More
Tim Etler
Shalmu Yakubov
Top Pro

Powerful type inference with strong typing

After a type is inferred from its context, it cannot be changed to a new type, and type safety is done at compile time so it stays safe without the extra maintenance required for static typing. See More
Luca Deltodesco
Top Pro

Algebraic data types and pattern matching.

See More
Justin fron
Top Pro

Friendly community

Friendly community See More
Tim Etler
Tom Rhodes
Top Pro

Offload execution to the server with remoting

Using a remoting proxy you can get type safe server to client communications, allowing for remote method execution on the server as if they were part of the client side code. See More
Liwei
Top Pro

Package management like Java

Package tree is just directory tree, it's wonderful! See More
PleasantWurugag
Top Pro

Builtin conditional compilation support

Haxe supports conditional compilation, so depending on compiler flags Haxe will include or exlcude sections of your code. Making it easy to have debug and release builds. See More
Laura Kyle
PrincipledTaranis
Top Pro

Create without needing to be limited to a language, target, or commercial ecosystem

See More
David Mouton
Top Pro

Available in NPM

See More
PleasantWurugag
Top Pro

Type safety for exísting JS libraries

Haxe compiler will check types when using externs for existing libraries. See More
Paolo
PrincipledTaranis
Top Pro

Can create complex applications without needing webpack, npm or other crutches

Haxe has the power and expression to not need the npm dependancy hell that is common in js and typescript, bit it's still simple. See More
PleasantWurugag
Top Pro

Abstract enums allow constants with exhaustiveness check

You can define constants in an abstract enum and when used in a switch/case statement Haxe checks for exhaustiveness, making sure every constant is covered - with no runtime implication. See More
PrincipledTaranis
Top Pro

Abstracts allows me to create more intative api's without runtime overhead

See More
PleasantWurugag
Top Pro

Ability to skip type checking when calling non Haxe code

You should use externs when calling non Haxe code, but if you just need to call one or two external JS functions, you can skip type checking by calling untyped code. See More
Specs
Price:Free, Open Source
Site:https://haxe.org/
Current stable version:3.4.4
HideSee All Experiences
195 52

Pharo

All
17
Experiences
Pros
14
Cons
2
Specs
thermoplastics
Laura Kyle
Yuriy Tymchuk
Top Pro

Object-Oriented

In Pharo everything is an object. Compiler - object, network - object, method - also an object. And objects communicate with messages. No operators, no control-flow statements. Just objects and messages. Few things to learn, but you can learn OOP well. See More
John Pfersich
Michael Davies
Top Con

Small community

But they are very friendly and supportive. Best help comes through the mailing lists so not always easily googlable. There is also a Slack community where help is nearly instantaneous. See More
thermoplastics
Esteban A. Maringolo
Top Pro

Live updates

The nature of Pharo being a "live" environment allows you to perform live updates to your system without requiring to restart it. You can upgrade/modify classes while serving requests at the same time. See More
PeterPetr
Laura Kyle
Dave Mason
Top Con

No stable 64 bit VM on Windows yet (work-in-progress)

64 bit support is on its way for Windows (experimental). Pharo 7 has 64 bit support for Mac and Linux as of Pharo 7. See More
Laura Kyle
Graham McLeod
Top Pro

Easily learnt

There is good, free documentation including several books written by experts with extensive examples. There is an online MOOC. There are many tutorial videos. Supportive conferences and community. Even a professional support option if desired. See More
thermoplastics
Laura Kyle
Graham McLeod
Top Pro

Highly productive

See More
Alejandro Infante Rica
Top Pro

Remote debugging

See More
Laura Kyle
365nice
Top Pro

Beautiful coding patterns in your IDE

No need to search google for compact beautiful examples of how to do things, your live environment source is available and you can easily live search, see how it works and copy how the masters would do it (examples most languages still copy too). See More
thermoplastics
Graham McLeod
Top Pro

Advanced code analysis tools

MOOSE environment provides extensive, easily leveraged and class leading tools for code analysis and improvement. See More
PeterPetr
Top Pro

64 bit support as of Pharo 7

Use 32 bit or 64 bit versions of Pharo on Windows, Mac & Linux See More
Johan Brichau
gilch
Top Pro

Seaside

The framework for developing sophisticated web applications in Smalltalk is developed in Pharo. Seaside lets you build highly interactive web applications quickly, reusably and maintainably. See More
Dave Mason
Top Pro

Can run headless for production

See More
Graham McLeod
Top Pro

Really simple networking and REST with Zinc

See More
Graham McLeod
Top Pro

Graphics, graphing and visualisation framework - Roassal

Roassal and Mondrian provide fantastic and easily used frameworks for graphics, graphing and advanced visualisations (comparable to D3.js) but with much less code. Visualisations can be rendered into web friendly graphics (SVG, .png etc.) without additional work. See More
Laura Kyle
365nice
Top Pro

Glamorous toolkit & GTInspector

Most languages are still copying the Smalltalk tools of yesterday - GTInspector (written in Glamorous) takes live exploration of code/running objects to a new level. It's really slick, and better yet, you can easily write your own inspectors in 10 lines of code. See More
Andreas Brodbeck
Top Pro

Code can be run on rock solid GemStone environment

See More
Specs
Platforms:MacOSX; Linux; Windows
License:MIT
Price:Free / Open Source
Auto Complete:Y
See All Specs
HideSee All Experiences
49 17

Go

All
29
Experiences
Pros
18
Cons
10
Specs
Ray
Michael Murphy
Top Pro

Exceptionally simple and scalable multithreaded and concurrent programming

Goroutines are "lightweight threads" that runs on OS threads. They provide a simple way for concurrent operations — prepending a function with go will execute it concurrently. It utilizes channels for communication between goroutines which aids to prevent races and makes synchronizing execution effortless across goroutines. The maximum number of OS threads goroutines can run on may be defined at compile time with the GOMAXPROCS variable. See More
Endi Sukaj
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
Andris Pelcbergs
Michael Murphy
Top Pro

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

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

Designed to make the programmer expendable

Go was designed for large team projects where many contributors may be incompetent. That Go can still get things done under these conditions is a testament to its utility in this niche. Go's infamously weak abstraction power is thus a feature, not a bug, meant to prevent your teammates from doing too much damage. This also means any team member can be easily replaced by another code monkey at minimum cost. Good for the company, bad for you. The more talented programmers, on the other hand, will be very frustrated by having one hand tied behind their back. See More
Endi Sukaj
Top Pro

Great team working behind it

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

Expects prior familiarity with tooling, "advanced" OS use

A standard step of even installing Go is modifying your path -- a person who's encountering their first language might not even understand. It's hard to escape using Go without familiarity with using build tools, managing and organizing project directories, etc. It's not as simple as Python's "just run the .py file with the interpreter." See More
Andris Pelcbergs
Michael Murphy
Top Pro

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

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

Requires specific directory structure and environment variable settings

Too much knowledge required for a first programming language. See More
Ray
Laura Kyle
Michael Murphy
Top Pro

Built-in unit testing

The idiomatic approach to writing a Go software project is to perform test-driven development with unit testing. Every source code file should have an associated *_test.go file which tests functions in the code. See More
Endi Sukaj
Top Con

Performance slowdown because of indirect calls and garbage collection

Practically no meaningful Go application can be written without indirect function calls and garbage collection, these are central to Go's core infrastructure. But these are major impediments to achieving good performance. See More
Ray
Michael Murphy
Top Pro

Easy to install and configure; simple to compile software

Go software can be immediately installed, regardless of your operating system, package manager, or processor architecture with the go get command. Software is compiled statically by default so there is no need to worry about software dependencies on the client system. Makefiles and headers are no longer necessary, as the package system automatically resolves dependencies, downloads source code and compiles via a single command: go build. See More
RickZeeland
Top Con

No forms designer

I'm probably an old fart, but being a long time Visual Studio developer, I'm used to the luxury of having a forms designer for rapid development. See More
Ray
Michael Murphy
Top Pro

API documentation is rich in content; easy to memorize

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

Easy to shadow variable

Due to single character only difference, declare and assign statement can easily shadow variable from outer scope unconsciously. Example: err := nil if xxx { err := somefunctionthatreturnsanerr } return err // always return nil See More
Ray
Michael Murphy
Top Pro

Provides tools for automatically formatting code for your entire software project

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

Implementation of interfaces are difficult to figure out

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

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

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

Does not support circular dependencies

See More
Monika
Michael Murphy
Top Pro

Supports 'modules' in the form of packages

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

Weak type system

See More
Endi Sukaj
Top Pro

Great language for building networking services

Go was started as a systems language but now it has fully committed in the niche of networking services. This has been a brilliant move by Go because it allows them to capitalize on the immense talent of the Go engineering team (who are in the most part network engineers). In a world dominated by Java EE and slow scripting language, Go was a breath of fresh air and it continues to be one of the most powerful languages if you want to build networking services. See More
Ray
Michael Murphy
Top Pro

Automatically generates API documentation for installed packages

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

Demonstrates a unique, simple concept to object-oriented programming

All types are essentially objects, be they type aliases or structs. The compiler automatically associates types to their methods at compile time. Those methods are automatically associated to all interfaces that match. This allows you to gain the benefits of multiple inheritance without glue code. As a result of the design, classes are rendered obsolete and the resulting style is easy to comprehend. See More
Laura Kyle
Michael Murphy
Top Pro

Supports splitting source code into multiple files

As long as every source code file in a directory has the same package name, the compiler will automatically concatenate all of the files together during the compilation process. See More
Paolo
Endi Sukaj
Michael Murphy
Top Pro

Multiple variables may be assigned on a single line

This conveniently eliminates the need to create temporary variables. Fibonacci example: x, y = y, x+y See More
Ray
Michael Murphy
Top Pro

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

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

Performance is on the order of C and Java

Go is blazing fast, but easier to write than Python, JS, Ruby, or many other dynamic languages. See More
Paolo
Ray
Michael Murphy
Top Pro

Supports functional programming techniques such as function literals

This naturally also supports first class and high order functions, so you may pass functions as variables to other functions. See More
Specs
Platforms:Windows, Linux, Mac etc.
Current stable version:1.11.1 / October 1, 2018
Developer:Google with Ken Thompson, Robert Griesemer, Rob Pike
GZipped size:21,1 MB
See All Specs
HideSee All Experiences
295 110

Lua

All
12
Experiences
Pros
8
Cons
3
Specs
Stuart Kearney
Top Pro

Very easy to integrate with C and C++

One of the best features of Lua is its very well designed C API. This is very useful if you have an existing C library you need to integrate with Lua or quickly get a Lua script running on the C side of the game. Finally Lua plays so nice with C that if you need to optimise for speed you can re-write it in C a lot easier than other languages. See More
Endi Sukaj
Andris Pelcbergs
Top Con

Some concepts may not be applied to other "mainstream" programming languages

Lua features a prototye-based inheritance model. While this is also used by Javascript, it's not used by many other mainstream languages, and so some of the concepts learned while learning Lua won't be very applicable to other languages. Another thing that makes Lua different from other programming languages, is the fact that Arrays start at 1 instead of 0. While helpful for beginners, it can complicate logic and make it very confusing when switching languages. See More
Endi Sukaj
T-R
Stuart Kearney
Top Pro

Great documentation

The official Lua documentation is very helpful and thorough. There are also a large number of online resources or books with lots of helpful information for beginners and advanced users alike. See More
Endi Sukaj
Andris Pelcbergs
Top Con

Easy to make mistakes when declaring variables

When writing a function, if a programmer forgets to declare a variable, that variable will be declared at global scope. The code will seem to run fine at first, but if another function uses a variable with the same name, but fails to declare it, it will create subtle, incredibly difficult to find bugs. See More
Endi Sukaj
Stuart Kearney
Top Pro

Portable

Lua can be built on any platform with a ANSI C compiler. Other than that, Lua is extremely small. For example, the tarball for Lua 5.2.1 is only 245K compressed and 960K uncompressed (including documentation). When built on Linux, the Lua interpreter built with the standard libraries takes 182K and the Lua library takes 243K. The small size and the ability to build with a C compiler make Lua an extremely portable language that can run on a lot of different systems and computers. See More
Andris Pelcbergs
Stuart Kearney
Top Con

Batteries not included

Lua is so small mainly due to many of the components not being included in the core package. A lot of people need the functionality provided by the Lua module management system LuaRocks and libraries such as Penlight. See More
Endi Sukaj
Stuart Kearney
Stuart
Top Pro

Fast

Lua's performance compares very well to other languages, If performance needs to be further improved you can: Implement critical parts in C Use the LuaJIT compiler. The LuaJIT compiler is a drop in replacement for the stock compiler and provides significant performance improvements. From the overview page: LuaJIT speeds can rival code written in C. See More
Laura Kyle
Siddy Doku
Top Pro

Simple

Easy to learn. See More
Andris Pelcbergs
Top Pro

Embeddable 

Many different game engines (e.g. Elder Scrolls series, ToME) use Lua for scripting, and it's runtime is designed for embedded use. See More
Endi Sukaj
Stuart Kearney
T-R
Top Pro

Clean and simple syntax suitable for beginners

The Lua syntax is modeled from Modula, a language known for being a fantastic introduction to programming. The Lua syntax also has the following key characteristics: Semicolon as a statement separator is optional (mostly used to resolve ambiguous cases as in a = f; (g).x(a)). Syntactic sugar for function calls (f'string', f"string", f[[string]], and f{table}) and method calls (obj:m()). See More
Endi Sukaj
Laura Kyle
T-R
Top Pro

Helpful community

Due to the growing popularity, Lua has a rather large and helpful community surrounding it. See More
Specs
Platforms:Windows, Mac, Android
HideSee All Experiences
126 53

Rust

All
14
Experiences
Pros
10
Cons
3
Specs
Endi Sukaj
Andris Pelcbergs
Eonil
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
Endi Sukaj
Andris Pelcbergs
Eonil
Top Con

Hard to find learning resources or libraries

Because it's still a relatively new language, Rust does not enjoy a following as large as other languages/environments. Rust development has also been rather volatile for a long time during the beginning of the development of the language adding to this issue. Because of the small community, it's harder to find useful libraries for projects or any other kind of resource. See More
Eonil
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
Laura Kyle
Chris Lasher
Top Con

Asynchronous I/O is not (yet) a part of the core language

The issue of asynchronous I/O is still being discussed as a language feature, and not yet in the implementation phase. See the RFC on GitHub here. See More
Endi Sukaj
Andris Pelcbergs
Eonil
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
Jake Gage
Top Con

Very new and untested

See More
Endi Sukaj
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
Endi Sukaj
Andris Pelcbergs
Eonil
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
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

Rust has built-in support for concurrency. 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
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
Akash Sharma
Top Pro

Zero-cost futures or Async IO

See More
Specs
License:MIT/Apache
Price:free
Site:rust-lang.org
Current stable version:1.32.0
HideSee All Experiences
241 114

C

All
32
Experiences
Pros
14
Cons
17
Specs
Jonathan
Andris Pelcbergs
Stuart Kearney
Top Pro

Understanding of computers

Learning C forces you to grapple with the low-level workings of your computer (memory management, pointers, etc.) in ways that the other languages abstract away. Without an understanding of these low-level aspects of computer programming you will be limited if you try to develop an application that needs to run in a memory or performance constrained environment. Other languages like Python can obscure a lot of details, so your foundation may be weaker. See More
depp
Top Con

Languages is full of corner cases and undefined behaviors

Undefined behavior in a program can cause unexpected results, making it hard to debug. With UB, program behavior may vary wildly depending on optimization settings. There are many cases that invoke UB, such as signed overflow, invalid dereferences, large integer shifts, uninitialized variables, etc. These serve to frustrate novice programmers when they could be learning other concepts. See More
Andris Pelcbergs
Michael Kehoe
Top Pro

Industry standard

C is the industry standard programming language, moreover, it is the most popular programming language to use. C is the language used for most Windows, UNIX and Mac operating systems. See More
Endi Sukaj
Laura Kyle
Inside System
Top Con

C will require you to learn concepts too advanced for most beginners

While other programmers will learn algorithms and structures and will do magic tricks and awesome applications, you will learn trash info that you should know maybe after 5-7 years experience in software development, not earlier. It's like going the first time as a seven year old kid to first school class, and your teacher tells you to learn you about Discrete Math, without basic math and how to do 2x2. If you wish to be a really good programmer, C for sure will be in your portfolio, but not as a first language, and this programming language is used only for very hard and very limited tools which require a lot of professional skills from the programmer. See More
Endi Sukaj
Top Pro

Helps with learning other languages later

A lot of languages used in the industry have a C-like syntax (C++, Java, Javascript, C#, PHP) and starting with C will help new developers to be familiar with it's syntax and by extensions with the syntax of many popular languages. See More
Deb
Top Con

Requires memory management

Learning programming is already hard enough when you don't have to worry about memory leaks. See More
Paolo
Andris Pelcbergs
cdt5050
Top Pro

Must-have

Capability to program in C is greatly appreciated in developers, creates an image of competency, and many programmers will learn it at some point in their careers. See More
Laura Kyle
Michael Murphy
Top Con

Does not support modules; header file annoyances

Header files are a poor man's implementation of modules. Modern programming languages make use of modules which eliminate the need for C includes and header files and the many issues caused by them, such as the complete lack of dependency checking. Header files often contain even more include statements that point to other header files which also point to even more which drastically increases compile time. Modules only have to be compiled once, and when importing those modules into your software project, you only have to pull in the module that you are using, which is often times already precompiled. This way, the compiler knows exactly what it needs before beginning to compile your project and can automatically compile the few dependencies it needs in advance rather than recursively compiling every header file it runs across as in C. See More
John Parsons
Endi Sukaj
Petrus Laredes
Top Pro

Portable

C is portable between most hardware. Generally a C compiler is made for any new architecture, and already exists for existing architectures. C is portable between all operating systems (Windows, UNIX, Mac, etc.) and only needs a program to be recompiled to work. This allows anyone on any operating system to learn about the language and not be held back by intricacies of their operating system. With this said, C's portability these days is not quite what it used to be. Much of said portability relies on the POSIX standard in particular, and as time passes, the compliance of a given system with that standard is becoming less certain; especially in the case of Linux. Most things will still be portable (or at least emulatable) between Windows, Linux, and FreeBSD for example; but you will at times need to make use of platform-specific support libraries and APIs as well. See More
Endi Sukaj
Laura Kyle
Michael Murphy
Top Con

Completely lacks type safety

The C standard library is not type safe, and the language itself does not promote type safety built into the language, which leads to error-proneness of the language. If anything, it would be recommended that those interested in C to instead put their time in D, which actually includes a complete copy of the C standard library rewritten to be fully type safe. See More
thermoplastics
Svjatoslavs Krasnikovs
Top Pro

Low level of abstraction