Introducing Vetted.ai Logo
Vetted.ai Logo

The Slant team built an AI & it’s awesome

Find the best product instantly

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

What is the best alternative to Assembly?

Ad
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

Pascal / Object Pascal

All
30
Experiences
Pros
24
Cons
5
Specs
Mr Bee
actionless
Top Pro

Understanding of basics

Because of the verbosity and easy syntax, Pascal language is relatively easier to be learned and understood, even for someone who has no programming knowledge. It's said that Pascal code —if written well— is like reading pseudo code. See More
cdt5050
dbohdan
actionless
Top Con

Niche language

Most use of this language will be found in jobs supporting legacy code. It will be hard to find things to do with this language outside of that niche. See More
Ray
John Parsons
Jesper Dam
Top Pro

Clear syntax

Pascal's syntax is clear and concise, for example: procedure test(); begin DoSomething(); end; See More
John Parsons
Ray
Mr Bee
Top Con

No up-to-date version of language standards

In 1983, and update in 1990, the language was standardized with two standards: ISO/IEC 7185:1990 Pascal and ISO/IEC 10206:1990 Extended Pascal. However, Object Pascal extensions to the language have no official standards but in 1993, a draft proposal for object oriented Pascal standard was re; for review purposes only. There are no standards for modern features and enhancements, thus various Pascal dialects like Delphi or HP Pascal has their own enhancements and features. See More
Thomas
actionless
Top Pro

Easy

Pascal / Object pascal was used in schools during the 2000's to teach kids the basics of object oriented programming. See More
Simona
NonchalantDercetius
Top Con

Effectively obsolete

While this may have been an ok choice 25 years ago, it no longer is. Consider Python, Go or Clojure. See More
Bert Visscher
Andrea Terenziani
Top Pro

Flexible

Using the Free Pascal Compiler (the main Pascal distribution) you can code in a language that can be procedural and imperative now, but it can became object-oriented simply adding a directive at the start of the source See More
ExcitedThoon
Top Con

Unnecessary heavy syntax

Begin.. end. Pascal would have been great with curly braces.. but then again, that's what C is for. It's an academic language which was used in the past, but not much anymore today. See More
Aubrey
Mr Bee
Top Pro

Cross platform

Pascal development tools are available almost on every available platform, especially using Free Pascal. Pascal language is available on desktop like Mac, BSD, Linux, Windows, Solaris, etc.; on mobile like iOS, Android, etc.; also on managed environments like Java Virtual Machine (JVM) and .Net/Mono framework . There are even some Pascal to JavaScript transpilers such as Smart Pascal, so you can write client side web app using Pascal as well, if you really want to. See More
Simona
LivelyLiTieguai
Belle
Top Con

All variables, types, constants and functions must be declared at the beginning of the code

See More
Mr Bee
Bryan
actionless
Top Pro

Tons of academic reading

Being known as the programming language for education, especially in the 90's, there many academic reading and tutorials available on the internet. See More
CaringChemosh
Thomas
Top Pro

Fast compilation

The compiler is fast, really fast. Compared to C/C++, the delphi compiler is designed to compile a decent sized desktop application in seconds rather than minutes. See More
Mario Ray Mahardhika
Top Pro

Rich existing libraries

Both shipped with implementations and spread all over the web. Both natively written or bindings to libraries written in other languages. Typically to build non-trivial applications there's no need to surf the web as many things are implemented already. Streaming, output templating, socket & networking, web, database, image manipulation, high performance graphics, (de)compression, (de|en)cryption, regex, unit testing, json manipulation, google API, indexing, multithreading, external process management, the list just goes on and on! See More
Mario Ray Mahardhika
Top Pro

Enforces good programming practice

Numerous strong compile time checks with optional runtime checks ensure one doesn't do stupid things and even when one does (because the compiler can't prove it at compile time), the binary will check and report it at runtime. Correct modular programming implementation with proper namespacing, no file inclusion hack. See More
Ray
Peter Dunne
IntuitivePatollo
Top Pro

Easy GUI creation

Visual Basic may have predated Delphi but Delphi was the ground breaking visual designer which set the standards expected today by most GUI developers. Its rich component set was well designed, structured and extensible, it even has the ability to display live data from the attached database in its data controls. See More
Thomas
Top Pro

Still active

From the early roots of Pascal, Delphi has been developed and is still actively supported. It is used in many desktop applications today, and even supports multi platform coding. See More
ResoluteKullervo
AmbitiousHonos
Top Pro

Reliable language and code base

Most code from the Turbo Pascal days in the 80s still compiles, yet the language has since been adapted and extended with modern concepts, introducing OOP and interfaces, exception handling, native Unicode support, anonymous methods, generics, ARC and more. See More
Jon Aasenden
Top Pro

Language depth

Object Pascal is being used to write custom kernels (Ultibo) and operating-systems for various ARM boards. So the way you work with the code scales from low-level to pure OOP high-level. Object Pascal has the same level of depth that you find in C/C++ but with added productivity. See More
Marcus Fernström
Top Pro

Incredible GUI design tools

Lazarus and Delphi are both incredible GUI design tools, making rapid development a reality. Making changes to a GUI doesn't mean switching tools or waiting for things to load, it's right there as part of your core tools. See More
Simona
CromulentFides
Gerhard Eichhorn
Top Pro

Dynamic evolution of language

Object Pascal language still evolving and being updated by Delphi (Embarcadero) and Free Pascal team (Lazarus). See More
Paolo
Edgar Fernando Rodriguez Pacheco
Top Pro

Assembler Code and DLL/SO creation

You can put Assembler code in Intel or AT&T formats, to achieve great results of speed and accuracy. It is possible to create Dynamic Link Libraries or their equivalent in Unix-like systems so it's relatively easy to use and powerful. See More
Paolo
BraveElegua
Top Pro

Well balanced for desktop development

For desktop development, Delphi is productive, the code is easy to understand, compilation speed is blazing, and it produces well performing applications that are easy to deploy. The perfect balance between C# and C++. See More
Peter Dunne
Top Pro

Extensive third party libraries

There are large collections of third party components, many free which enable developers to add wide ranging and complex functionality to their code with ease See More
CaringChemosh
Top Pro

Fast execution

The compiler generates fast and optimized code. No stop-the-universe garbage collection. See More
Simona
ConsiderateShaushka
Top Pro

Automatic memory management

The new Delphi compilers are powered by Automatic Reference Counting to ease development. See More
Simona
Gerhard Eichhorn
Top Pro

Excellent database development

See More
Marcus Fernström
Top Pro

Available on a ridiculous number of platforms

FreePascal is available on/for Intel x86 (including 8086), AMD64/x86-64, PowerPC, PowerPC64, SPARC, ARM, AArch64, MIPS and the JVM. Supported operating systems include Linux, FreeBSD, Haiku, Mac OS X/iOS/iPhoneSimulator/Darwin, DOS (16 and 32 bit), Win32, Win64, WinCE, OS/2, MorphOS, Nintendo GBA, Nintendo DS, Nintendo Wii, Android, AIX and AROS. See More
Gerhard Eichhorn
Top Pro

Component based (reusability, decoupled, rich design architecture)

See More
Endi Sukaj
Semantyx
Top Pro

Suitably close to modern languages, without the pitfalls

It was developed as a teaching language and it shows. No syntax pitfalls and gently encourages good style. See More
Specs
Price:Free (FreePascal, GNU Pascal), varying price (Delphi)
Standard:ISO/IEC 7185:1990 Pascal and ISO/IEC 10206:1990 Extended Pascal
HideSee All Experiences
205 57

Python

All
46
Experiences
Pros
25
Cons
20
Specs
thermoplastics
Slimothy
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
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
ModestCaerus
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
Slimothy
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
Simona
NonchalantDercetius
ExcitedThoon
Top Con

Worst language design ever

Instead of sticking to a certain paradigm, the original writer of the language couldn't make up his mind, and took something from everywhere, but messing it up as he went by. This is possibly one of the worst balanced languages ever. People who pollute their mind with Python and think it's the next best thing after sliced bread, will have to un-learn a lot of garbage 'pythonesque' habits to actually learn how to program. It's not because the academic world uses it a lot, that it's a good language. It says something about the inability of the academic world to write decent code, actually. See More
Laura Kyle
Slimothy
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
NonchalantDercetius
Nobuyuki
Top Con

Language fragmentation (this is finally starting to go away)

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
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
hellopeach
Top Con

Too opinionated for a general-purpose programming language

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

Hard to debug other people's code

As the structure of Python code is based on conventions many developers are not following them and so it is difficult to follow/extract the design of not trivial application from the code. While this is a con, I see it in other languages as well. It seems to depend on the programmer. Most people don't learn conventions first, they just start programming. Unless you work for someone who insists you follow the conventions, you will probably go with what you like. You might never look at the conventions. See More
Slimothy
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
Joseph Bigler
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. Since 2.x and 3.x still exist, be prepared to switch if something makes 3.x take off in the future. 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
Joseph Bigler
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. You may need to find yourself an editor/IDE you like and carry it with you on a thumb drive, which isn't a bad idea anyway. 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
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
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
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
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
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
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
Joseph Bigler
Monika
Ünal Berke TOPÇU
Top Pro

It's really simple

It's very simple for understanding how programming works. If you don't like programming in Python, you probably won't like programming. It is a good way to find out with little investment. If you like, it is a great language. I wouldn't look for a language that has everything you eventually need to know in programming, such as static typing, in my first language. It should be easy to learn. You can pick up the hard stuff later if you tackle C or C++ or assembler. It will make learning them much easier. If you start with them, you might quit programming due to the difficulty of learning. 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
Deuxis
Slimothy
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
Monika
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
Slimothy
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
SensibleHermodr
Top Con

Version Confusion with V2.x and V3.x

See More
Laura Kyle
Slimothy
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
Joseph Bigler
Heliophanus
Top Con

Unflexible userbase

You will be expected to rigidly stick to the coding practices and to do everything by-the-numbers. One of the most common complaints I heard from people who left Plone, which is Python based, to Drupal, which is PHP based, is the community is more like a frat house than a community. If you look for help, make sure you follow the rules of whatever type of group you are requesting help from. See More
HeroSelecter
Top Pro

Easy to learn, More to Go

It is very easy to learn and it has community support and many categories available. See More
Monika
HealthyBarnumbirr
Top Con

Not a serious coding language

If you consider it your first language, better pick Julia! 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
Monika
HycrosxGladeum
Top Con

Bad for games

Python has a lot of frameworks like pygame, but exporting the game is hard and building files like .exe gets very large and have a bad performance on bad computers. See More
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
IntelligentAres
Top Con

Moving large blocks of code in whitespace sensitive languages is scary

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

Easy for new users and experienced programmers

(If you can get over whitespace formatting) See More
AdventurousSengann
Monika
Ken Colton
Top Pro

Import Turtle

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

Mobile versions

Mobile versions are available but can be difficult to find. Examples for android are pydroid and qpython See More
Specs
Platforms:Windows, Linux, macOS, AIX, IBM i, iOS, z/OS, Solaris, VMS
Current stable version:3.9.1
GZipped size:22.5MB
Typing discipline:Dynamically typed
See All Specs
HideSee All Experiences
1280 433

Nim

All
14
Experiences
Pros
13
Specs
Glerin
Top Pro

Great metaprogramming features

There are generics, templates, macros in Nim. They can allow you to write new DSL for your application, or avoid all boilerplate stuff. See More
Endi Sukaj
Анатолий Галиулин
Top Pro

Strict typing

Checks your code at compile time. See More
Monika
Glerin
Top Pro

Easy to read

Nim has a lot of common with Python in terms of syntax. Indentation-based syntax, for/while loops. See More
Monika
Glerin
Top Pro

Easy to integrate with another languages

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

Type interferencing

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

Compile-time execution

Nim has a built-in VM, which executes macros and some other code at compile time. For example, you can check if you're on Windows, and Nim will generate code only for it. See More
Monika
Andrew Penkrat
Top Pro

Really cross-platform

The same code can be used for web, server, desktop and mobile. See More
Endi Sukaj
Анатолий Галиулин
Top Pro

Multi paradigm

Imperative, OOP, functional programming in one language. See More
Monika
Glerin
Top Pro

Built-in Unicode support

You can use unicode names for variables, there is "unicode" module for operations with unicode. See More
Monika
Glerin
Top Pro

Garbage-collected

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

Has built-in unittest module

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

Supports UFCS (Unified Function Call Syntax)

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

Has built-in async support

Nim has "asyncdispatch" module, which allows you to write async applications. See More
Specs
Platforms:Windows, MacOS/iOS, Linux /Android/Termux, *BSD, Solaris/SmartOS, HaikuOS, lots of others
License:MIT
CPU:All CPU architectures that have an ANSI C compiler
Current stable version:1.6.6
See All Specs
HideSee All Experiences
447 184

JavaScript

All
46
Experiences
Pros
23
Cons
22
Specs
Chloe Montanez
Slimothy
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
Laura Kyle
Slimothy
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
Slimothy
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
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
DevDad
Slimothy
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
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
Slimothy
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
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
Chloe Montanez
Slimothy
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
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 "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
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
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
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
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
DevDad
Slimothy
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
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
DevDad
Top Pro

Great tools for development

Flow, JSHint/ESLint, Babel, npm, etc. 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
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

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

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
ExcitedThoon
Chloe Montanez
Stuart Kearney
Top Pro

Instant gratification

While it's easy to argue that Python will give you 'instant gratification' (while actually ruining your understanding of good programming practices), 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

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
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
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
Reviews
Top Con

The language itself is not very appealing to developers.

JS is one of the most dreaded languages as it was designed for the purpose of becoming just an scripting language for a browser. It was never intended to take over as the leading technology in web development, thus the language has been streched past its own capabilities. A beginer should learn something else first, something that is better conceived and refined. 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
Hesham ELMAHDY
Top Con

Very confusing to read

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
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
ExcitedThoon
Top Pro

One of the most underestimated languages

deviously simple in syntax, yet highly powerful in paradigms, this language does not force you to the (actually intrinsically broken) object oriented paradigm, has a healthy dose of functional programming inside, and does not bloat the keyword space. Good javascript is all about structure. Bad javascript is all about lazy hipsters not taking the time to learn 'javascript, the good parts', a must read. 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
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
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
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
Minimum Supported ECMAScript Version:ECMAScript 6 (Node v4.x-v10.x)
ECMAScript Modules:Available (as a flag) (only on Node 8.x-10.x)
See All Specs
HideSee All Experiences
614 264

C

All
36
Experiences
Pros
17
Cons
18
Specs
Jonathan
Slimothy
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
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
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
Slimothy
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
Buster Blue
Laura Kyle
Garrett Oreilly
Top Con

Steep learning curve

While the language compliments knowledge of computer components very well, and gives a deeper understanding, it is also quite difficult to learn, and to use correctly, especially without aforementioned knowledge. See More
Paolo
Slimothy
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
Deb
Top Con

Requires memory management

Learning programming is already hard enough when you don't have to worry about memory leaks. 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
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
thermoplastics
Svjatoslavs Krasnikovs
Top Pro

Low level of abstraction

While higher level languages languages like Java and Python provide possibilities to be "more expressive" per line of code, it's much more convenient to start with "less efficient" (get me right) language, in order to get initial concepts of how things behave at lower level. Actually C is a good starting point moving to both higher and lower levels of abstraction, the good example here would be learning C before Assembler, as for general use the Assembler quite hard to understand due to low level of its abstraction (like getting the understanding on how loops work in C before trying to implement them on Assembler). See More
Endi Sukaj
Michael Murphy
Top Con

Lack of support for first class strings

C does not support the string type, nor does it support UTF-8 strings that modern languages are employing today. Instead of strings, C makes use of the *char type which is a pointer to a character array. See More
Paolo
EncouragingBeag
Top Pro

The king of languages, imitated, extended but never equalled

Made of a small set of keywords and rules, only your imagination is the limit. Above all, when it comes to 'pro' programming, C is the only one to rely on. See More
Laura Kyle
Alexey Cherkaev
Top Con

Low-level

Depending on the purpose this can be either a pro or a con. If the task is to learn how to program, low-level of C will impend learning important concepts. Furthermore, C is rather limited in ways of building abstractions. "Low-levelness" of C can be a pro feature in learning system programming. See More
Emma
Top Pro

More control over the code

See More
Laura Kyle
Michael Murphy
Top Con

Arrays are not first class objects

When an array is passed to a function, it is converted to a pointer, even though the prototype confusingly says it's an array. When this conversion happens, all array type information gets lost. C arrays also cannot not be resized, which means that even simple aggregates like a stack are complicated to implement. C arrays also cannot be bounds checked, because they don't know what the array bounds are. See More
Slimothy
Timothée Poisot
Top Pro

Teaches good practices

Writing in C will require you to understand how things are done. C implies using and understanding the fundamentals. Learning a higher-level language after is much easier. See More
John Parsons
Top Con

Undefined behaviors and weak limited type safety

Subtle errors can render the entire program "undefined" by the complicated C standard. The standard imposes no requirements in such cases. Thus C compiler is 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? 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
Monika
John Parsons
Top Pro

Portable between CPU architectures

C was designed to be independent of any particular machine architecture, and so with a little care, it is easy to write "portable" programs (see here). By design, C provides constructs that map efficiently to typical machine instructions, and therefore it has found lasting use in applications that had formerly been coded in assembly language like operating systems or small embedded systems. See More
Kevin Groat
Top Con

The need for C developers in the current market is very low, and trending downward

Older languages, like C, are no longer in their hay day. Even if you do learn it as your first language, you are only setting yourself up to need to learn another language in the long run. If you want a skill that you can not only learn from, but also potentially build a career on, C should not be your first choice. See More
teadan
Samuel Cherukutty
Top Pro

C is simple with lesser rules than any other language

C is standardized and it is the go-to language when you have to speed things up. See More
Simona
CromulentFides
Top Con

Other languages can do it easier or better

There are languages like Rust, Object Pascal, D, Golang, Vlang, Odin, Zig, Jai, etc... that can be used instead. The other languages are easier to understand, use, and/or about as fast. See More
teadan
LoveableMaui
Top Pro

Easy to drop down to assembly

Sometimes you really need to program directly in assembly. C’s ABI and common compiler extensions make this a piece of cake. 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
hyphae
Top Pro

If you can't grok C you should not be a professional programmer

It sets an early bar that if you can't hurdle you might as well do something other than programming and not waste any more of your time. See More
Laura Kyle
Michael Murphy
Top Con

Isn't truly portable or cross platform

The C programming language is not portable to other operating systems, and even different compilers, because the C language does not provide any reference cross platform libraries or compilers. Different platforms and compilers provide their own implementation of the C standard library which may not be compatible with the implementation in another compiler or platform. Without cross platform libraries and tools, one cannot state that C is portable. This is in stark contrast to modern programming languages that provide their own cross platform libraries and compilers, such as D, Go and Rust. See More
Tyler
Top Pro

Basic concepts can be applied to accelerate learning any other language

You can easily pivot knowledge learned here and apply it to almost every other language. See More
Zack H
Laura Kyle
Michael Murphy
Top Con

Only offers basic support for source code split into multiple files

Modern programming languages are capable of compiling split source code files by concatenating them together efficiently at compile time before compiling them. However, C requires the developer to resort to messing with header files and makefiles to get similar functionality. See More
Chuck
Top Pro

Ubiquitous

There is a C compiler available for probably every computer system in existence today. See More
Laura Kyle
Michael Murphy
Top Con

Compiles procedurally rather than intelligently

In the same manner that C recursively compiles header files ad infinitum without any sort of dependency checking, C source code is also compiled in the same manner. If you attempt to call a function before it is declared, the compiler will fail because the function was not compiled before it was caled. See More
NonchalantDercetius
Top Pro

Low level langauge

See More
Laura Kyle
Michael Murphy
Top Con

C structs are very weak and outdated

C structs lack a lot of modern capabilities that are vital in programming languages of today, such as assigning member functions to structs to give them object-oriented capabilities, constructs, deconstructors and RAII. Great care must be used when using structs in C to prevent memory leaks and ridiculously slow structs. See More
Simona
NonchalantDercetius
Top Pro

Foundational, difficult but important

Learning C will teach valuable skills and transferrable understanding of computing. While learning a scripting language may be easier, students will not understand system constraints and performance problems, nor what features like garbage collection are actually doing in other languages. See More
Laura Kyle
Michael Murphy
Top Con

Includes require obscene resources to compile

All the modern languages have resulted in ditching the ancient deprecated model of #include statements and have instead adopted the superior model of modules. When compiling software written in C, the programmer is forced to also compile X headers which contain Y headers which contain Z headers and so forth -- drastically increasing the number of lines that need to be compiled. In order to compile something as simple as "Hello, World", for example, 18K lines of code needs to be compiled. This can be very taxing on RAM and CPU resources, causing compile times to quickly absorb a large portion of the programming process. See More
Laura Kyle
Michael Murphy
Top Con

Heavily outdated programming concepts

C lacks a large majority of programming concepts that modern languages make use of today. The existing functionality of C makes use of outdated and deprecated methodologies which can be of great annoyance to the modern day programmer. See More
Specs
Current stable version:C'18
Standard:ISO/IEC 9899:2011/Cor 1:2012 or C11
Typing discipline:static
Paradigm:imperative
See All Specs
HideSee All Experiences
470 210

Rust

All
22
Experiences
Pros
13
Cons
8
Specs
Endi Sukaj
Slimothy
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
MellowCottyto
Top Con

Long compile times

Way longer to compile than other languages. 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
Simona
CromulentFides
Top Con

Low readability

Harder to read and understand language. 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
CourteousFujin
Top Con

Low productivity

The compiler is strict, such as ownership and borrowing checkers. See More
Endi Sukaj
Slimothy
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
Monika
MellowCottyto
Top Con

Very ugly and verbose syntax

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

Built-in concurrency

Rust has built-in support for concurrency. See More
VigilantHotuMatua
Top Con

Significant time required to understand the language fully

There's the infamous borrow checker for example. 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
Monika
MellowCottyto
Top Con

Steep learning curve

Pretty strict and hard to adapt for beginners. 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
SophisticatedMayahuel
Top Con

Rust not as safe as it pretends to be

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

Low-level programming language

This means that it encourages the programmer to be very careful in terms of how memory is allocated, etc. Most applications can run without exceeding the capacity of the server, even with an inefficient dynamic scripting language. See More
Endi Sukaj
Slimothy
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
Mateusz Kubaszek
Top Pro

Big community

The biggest community contributing to language. See More
Maxwell Anderson
Top Pro

Official package manager and build tool

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

Functional programming

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

Zero-cost futures or Async IO

See More
Specs
Platforms:Linux, MacOS X, Windows, BSD
License:MIT/Apache
Current stable version:1.66
HideSee All Experiences
572 307

Swift

All
12
Experiences
Pros
10
Cons
1
Specs
Slimothy
Top Pro

Modern syntax

See More
thermoplastics
Amanda Frisk
Top Con

Swift is a moving target

They've released 1.2 so far, and 2.0 is coming soon. Every small update brings adjustments to paradigms (such as how to do type casting) that can be a little frustrating to absorb. Objective C was also constantly updating, however, but not at the same rate these days. See More
Matthew
BraveMagec
Top Pro

Swift is closer to other platforms

Apple’s modern programming language is easier to understand for non-iOS developers and minimizes time for additional explanations and clarifications. Moreover, Swift can be used as a script language. It is an interesting solution for the iOS community to unify writing of build scripts. At the time being iOS developers are split up in regard to this activity. Some of them write build scripts in Bash, others use Ruby, Python, etc. Swift gives an amazing opportunity to be applied to all iOS programming needs. More details can be found here https://mlsdev.com/blog/51-7-advantages-of-using-swift-over-objective-c See More
Slimothy
Top Pro

Works with Apple's Cocoa and Cocoa Touch frameworks

See More
Slimothy
Top Pro

Can be used as a Just-In-Time language

See More
Slimothy
Top Pro

Inherent parallelism

See More
Slimothy
Top Pro

Low memory footprint due to reference counting

See More
Slimothy
Top Pro

Backed by Apple

See More
Slimothy
Top Pro

Performance speed comparable to native C

See More
thermoplastics
Amanda Frisk
Top Pro

Swift has some clever tricks up its sleeve

Due to having elements of a functional programming language. Things like 'map' and 'filter' for example. See More
Slimothy
Top Pro

Uses LLVM compiler and Obj-C runtime allowing C, Objective-C, Objective-C++ and Swift code to run side by side within a single program

See More
Specs
Platforms:Mac, Linux
HideSee All Experiences
80 60

Pharo

All
18
Experiences
Pros
14
Cons
3
Specs
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
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
VivaciousVainamoinen
Top Con

Odd language

Requires a different mindset. Much harder to apply what you know from popular or conventional languages . Switching over from or between other languages is more difficult. 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
CourteousBiegkegaellies
Top Con

Single threaded

Pharo's VM only ever uses one CPU core. If you want to write code that uses more than one CPU core, you need to jump through hoops such as running multiple VMs and synchronising your data. 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
thermoplastics
Laura Kyle
Graham McLeod
Top Pro

Highly productive

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
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
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
Simona
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
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
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
Specs
Platforms:MacOSX; Linux; Windows
License:MIT
Auto Complete:Y
Typing discipline:Dynamically typed
See All Specs
HideSee All Experiences
93 26

V

All
17
Experiences
Pros
14
Cons
2
Specs
teadan
Monika
prohyon
Top Pro

Fast like C

V is easier than C and fast like C. See More
YUART
Simona
FascinatingAdapa
Top Con

Rapid changes in a language syntax/features

Since V language under a continuous development and core syntax and features will be "frozen" in a version 1.0.0, updating from older version of a language can cause a code rewrite of previously working program. See More
Monika
prohyon
Top Pro

Simplicity

V is simple and powerful. See More
Simona
AdaptablePereplut
OpinionatedFortuna
Top Con

V 1.0 release was planned for December 2019

See More
VivaciousVainamoinen
Top Pro

C Interop

Can import C libraries, structs, and headers. See More
AdaptablePereplut
RickZeeland
Top Pro

Can create multi-OS GUIs

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

Cross-platform

Compile to many OSes. See More
Monika
prohyon
Top Pro

Generics

V has generics. See More
Simona
CromulentFides
Top Pro

Clear syntax

Highly understandable language. See More
Simona
ReveredBunjil
Top Pro

Single paradigm

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

Sum types

V has Sum Types. See More
PhilosophicalGyges
Top Pro

Closures

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

Supports concurrency and channels

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

Safety

V is very safe. See More
YUART
Top Pro

Fiendly and helpful community

Just check the Discord channel and you will see by yourself See More
Simona
CromulentFides
Top Pro

Inline assembly

Can add Assembly code. See More
Specs
Platforms:Windows, Linux, Mac
License:MIT
Supported platforms:Windows, Mac, Linux, FreeBSD, OpenBSD, NetBSD, DragonflyBSD, Solaris, Android, iOS
Developer:Alexander Medvednikov
See All Specs
HideSee All Experiences
137 39

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
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
WhiteLilac
Matthias Schuster
Top Con

No Qt support

There is currently no support for Qt. 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
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
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
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
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
Justin fron
Top Pro

Friendly community

Friendly community 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
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
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
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
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
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
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
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
Luca Deltodesco
Top Pro

Algebraic data types and pattern matching.

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
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
PleasantWurugag
Top Pro

Type safety for exísting JS libraries

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

Available in NPM

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
Laura Kyle
PrincipledTaranis
Top Pro

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

See More
PrincipledTaranis
Top Pro

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

See More
Specs
Platforms:Web, iOS, Android, Blackberry, Windows, OSX, Linux
Supported languages:C++, C#, Java, Javascript, PHP, Lua, Python, Actionscript
HideSee All Experiences
248 66

Julia

All
15
Experiences
Pros
12
Cons
2
Specs
Monika
Deuxis
Mantas Zimnickas
Top Pro

Almost as fast as C

Julia runs almost as fast as (and in fact in some cases faster than) C code. See More
gilch
Laura Kyle
Top Con

Young language with limited support

Julia was released in 2012. Due to its short existence, there is a limited amount of support for the language. Very few libraries exist as of yet, and the community is still quite small (though growing quickly). See More
thermoplastics
Top Pro

Great standard REPL

Out of the box Julia has a very good Read-Eval-Print-Loop, which both completes functions and types, as well as completion based on history of previous statements. It integrates well with the shell and has an excellent online help system. See More
Monika
thermoplastics
Top Con

1-based array and column major

This design probably comes from Matlab, but makes it unnatural to interface C and C++ and python. See More
thermoplastics
Top Pro

Nice regular syntax

Julia code is easy to read and avoid a lot of unnecessary special symbols and fluff. It uses newline to end statements and "end" to end blocks so there is no need for lots of semicolons and curly braces. It is regular in that unless it is a variable assignment, function name always comes first. No need to be confused about whether something is a method on an object or a free function. Unlike Python and Ruby, since you can annotate the types a function operates on, you can overload function names, so that you can use the same function name for many data types. So you can keep simple descriptive function names and not have to invent artificial function names to separate them from the type they operate on. See More
ComposedLugh
Top Pro

Written in itself

The Julia language is written in itself to a much larger extent than most other languages, so a budding programmer can read through the depths of the standard library and learn exactly how things work all the way down to the low-level bit-twiddling details, which can be englightening. See More
Deuxis
Top Pro

Amazing learning curve

Julia requires no boilerplate code – a beginner needs to write only the parts they care about. This combined with the REPL provides the best learning experience available. See More
Deuxis
Top Pro

High-level code

Julia provides a high level of abstraction, making platform-independent programming trivial and easing the learning curve. See More
Mantas Zimnickas
Top Pro

Function overloading

You can have multiple functions with the same name, but doing different things depending on function arguments and argument types. See More
PracticalNereus
Top Pro

Strong dynamic typing

Dynamic and high level, but does not isolate the user from properly thinking about types. Can do explicit type signatures which is great for teaching structured thinking. See More
LoveableKisshoten
Top Pro

Strong Metaprogramming

Julia allows you to edit Julia code in the language itself and write powerful macros. It is a great introduction to metaprogramming features See More
Deuxis
Mantas Zimnickas
Top Pro

Powerful n-dimensional arrays

Julia has built in n-dimensional arrays similar in functionality as Python's numpy. See More
Mantas Zimnickas
Top Pro

Function and operator broadcasting

You can perform operations on scalars, for example 2^2 or [1, 2, 3].^2. See More
DelightfulChloris
Top Pro

REPL-based

The Julia REPL allows quickly testing how some code behaves and gives access to documentation and package management immediately in the REPL. See More
Specs
Platforms:Windows, Linux, Mac, FreeBSD
Current stable version:1.5.3
Type Model:Dynamically Typed
HideSee All Experiences
217 60

Go

All
33
Experiences
Pros
18
Cons
14
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
Slimothy
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
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
Slimothy
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
Monika
MightyHedetet
Top Con

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

Golang developers were extremely short-sighted and biased by forcing the K&R style, which should never have happened. Basically kicking Allman style users out of their language. 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
CourteousFujin
Top Con

Doesn't have true enums

Golang does weirdness with const versus having real enums, like other languages. This reflects the stubbornness and shortsightedness of the core developers, similar to the issue with generics, where it was denied that it was needed until it became too obvious that it should have been added years ago. See More
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
CourteousFujin
Top Con

Golang controlled by Google

Solves Google problems, which might not be your or the majority of user's problems. Was created for the benefit and purposes of Google, so is less flexible in language direction and options. See More
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
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
Monika
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 its 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
Monika
RickZeeland
Top Con

No forms designer

Those who are used to Visual Studio can feel the lack of a forms designer for rapid development. 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
NonchalantDercetius
Top Con

Bizarre syntactic choices like a unique date format.

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
Monika
CourageousBaalHammon
Top Con

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

Newer languages that could threaten Golang (or other Google controlled languages) appear to have suppressed search results on Google and YouTube. Dangerous situation where large company can manipulate user choice and market share. The freedom to freely choose and user rights need to be protected. See More
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
meikl
Top Con

Changing visibility requires renaming all over the code

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
CourteousFujin
Top Con

Lacks support for immutable data

Only way to prevent something from being mutated is to make copies of it, and to be very careful to not mutate it. See More
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
CourteousFujin
Top Con

Does not have sum types

Makes it harder to have functions of different parameters types in a non OOP language. Thus messy generics and interfaces, and more confusion, where sum types could have solved a number of issues. See More
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
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
Monika
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 its own self-contained web server that will list documentation for all installed packages in your Go path. 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
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
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
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
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
Specs
Platforms:Windows, Linux, Mac etc.
Developer:Google with Ken Thompson, Robert Griesemer, Rob Pike
Current stable version:1.18
GZipped size:115 MB (installer)
HideSee All Experiences
921 228

Clojure

All
16
Experiences
Pros
12
Cons
3
Specs
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
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
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
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
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

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

Huge ecosystem of libraries to work with

There's a very large ecosystem of high-quality Clojure libraries which developers can use. One example is Incanter. It's a great data analytics library and a very powerful tool for dealing with matrices, datasets and csv files. See More
Endi Sukaj
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
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
OrganizedRundas
Top Pro

Dynamic language

A superb data processing language. While rich type and specification systems are available they are optional. 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
Chloe Montanez
TallTumatauenga
Top Pro

No C/Java syntax

Refreshing, BTW! 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
Specs
Platforms:Windows, Linux, Mac
Price:Free, Open Source
Current stable version:1.10.1
GZipped size:3.7Mb, requires JAVA
See All Specs
HideSee All Experiences
529 171

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
Slimothy
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
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
Slimothy
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
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
Slimothy
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
Laura Kyle
Siddy Doku
Top Pro

Simple

Easy to learn. 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
Slimothy
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, Linux
HideSee All Experiences
220 80

Common Lisp

All
5
Experiences
Pros
5
Brian Levy
Top Pro

Carefully designed for interactive use

Almost all aspects of the language are designed with interactive/repl use in mind. See More
thermoplastics
Slimothy
Moyamo de Hacker
Top Pro

Very Powerful REPL with SLIME

SLIME (Superior Lisp Interaction Mode for Emacs). See More
Brian Levy
Top Pro

Condition/restart system

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

Image based runtime

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

Almost as fast as, or faster than, C

Some compilers such as SBCL can be faster than C or other low-level languages, and most compilers can generate fast native code. See More
Hide
155 59

Dart

All
19
Experiences
Pros
13
Cons
5
Specs
Endi Sukaj
Emil Persson
Top Pro

Great async language support

Dart is a single threaded programming language. So if any piece of code blocks the execution of the program, the program practically freezes. To avoid this Dart makes use of asynchronous operations which let your program run without getting blocked. This is done through Future objects. A Future is an object which represent a means for getting a value at a certain point in the future. A function may invoke a Future and when that happens, two outcomes can be achieved: The function is unable to return a value, so it queues up work to be done and returns an uncompleted Future object. Or later when a value is available to be returned, the Future object completes with that value. See More
Wernight
Top Con

Doesn’t generate consumable JavaScript at present

Dart builds to JavaScript but the entire app needs to be built to JavaScript at once for now (that may change in the future). See More
Endi Sukaj
Ryan
Monty Rasmussen
Top Pro

Great standard library

Dart includes a truly comprehensive core library, making it unnecessary to include disparate, external resources for basic functionalities Other than reducing the need to pull in various 3rd-party utilities this also ensures that all Dart code looks and feels the same. Out of the box, the developer gets core libraries to help with: async, collections, strings, regexps, conversions, formats, file I/O, math, typed data, and more. See More
techbeamers
Top Con

Still many holes to fill while converting code to Javascript

While implementing callbacks, passing a type to any function that gets passed to Javascript causes the dart2js compiler to crash. See More
Bryan
Endi Sukaj
Frank Pepermans
Top Pro

No compile time in development

Dartium (Chromium derivative) is a browser with integrated Dart VM, which allows you to run and debug native Dart code during development for short edit-reload cycles. Only for testing on other browsers and deployment is transpiling to JS necessary. See More
Andrew Mezoni
Top Con

Dart SDK does not provide standard (out of the box) way to access SQL-based databases on server side

This missing (but very popular) feature requires to use 3rd-party packages developed by the personal enthusiasts or very small groups of enthusiasts, which is not very convenient because they are all very fragmented in terms of content, the essence and capabilities. See More
Endi Sukaj
Günter Zöchbauer
Laura Kyle
Top Pro

A lot of tools are available to help in developing with Dart

Dart has a lot of tools available which help with developing Dart applications. Some examples of those tools include: pub - package and dependency management and build tool analyzer - static syntax analysis with linter, quick fixes, autocompletion support for easy IDE integration test - powerful and flexible testing framework and test runner dev_compiler - generate reusable JS instead of tree-shaken minified JS output (work in progress) dartfmt_ - source code formatter server-side VM observatory - a powerful tool for profiling and debugging running Dart code (for Dartium and Dart server code) See More
Tim Perry
Top Con

Small community, little momentum

See More
Endi Sukaj
Günter Zöchbauer
Top Pro

Transpiled JavaScript code works on all browsers

In Dart many browser differences (subtle differences and also missing features) are abstracted away or polyfilled. When Dart is transpiled to JS the output works on all supported browsers. There is usually no need to load polyfills or to consider browser differences during development. No need for libraries like jQuery to make the same code work the same on all browsers. See More
Endi Sukaj
Top Con

May be difficult to use some JavaScript libraries

Dart is much more than a programming language, it's a platform with its own standard libraries and tools. It's a major departure from JavaScript itself (even though it can compile to JS) that it's not possible to directly interact with JavaScript libraries in Dart. Instead, you have to use a special interop library which exposes the wrapped versions of the JavaScript objects that you are accessing. While this enables Dart to sandbox JavaScript so that its problems do not leak into a Dart application, it also means that it may be cumbersome to use libraries which don't have a wrapper library available. See More