Introducing Lustre.ai Logo
Lustre.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
Lustre.ai illustration
Slant logo
0
Log in • Sign up
Follow
DevelopmentProgramming Language

What are the best systems programming languages?

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

34 Options Considered

Best systems programming languagesPriceCurrent stable versionPlatforms
87
Nim
-1.6.6Windows, MacOS/iOS, Linux /Android/Termux, *BSD, Solaris/SmartOS, HaikuOS, lots of others
85
Rust
-1.4.0Linux, MacOS X, Windows, BSD
73
C
-C'18-
72
Go (Programming Language)
01.17Windows, Linux, Mac etc.
--
Common Lisp
---
See Full List
87

Nim

My Recommendation for Nim

My Recommendation for Nim

Add Video or Image
All
54
Experiences
6
Pros
29
Cons
18
Specs
thermoplastics
Alex Libman
Top Pro
•••

Very good performance

Nim consistently benchmarks ahead of Go, Java, C#, Haskell, and of course all the scripting languages. See More
InquisitiveOzwiena
Lonely COBOL
Top Con
•••

No big name backer

Mostly unknown language that's not even on TIOBE's index top 100 nor has any big name corporate support. See More
DebonairAnbay
DebonairAnbay's Experience
Slant's rankings are complete trash. Clearly Nim is given special treatment, where none of it's CONs show on it's main page. Disgusting bias and pretense, by presenting false fan rankings. Nim is a lowly player that few take serious and is of no consequence. See More
Specs
Current stable version:1.6.6
Platforms:Windows, MacOS/iOS, Linux /Android/Termux, *BSD, Solaris/SmartOS, HaikuOS, lots of others
License:MIT
IDE Support:https://github.com/nim-lang/Nim/wiki/editor-support
See All Specs
thermoplastics
Clay Sweetser
Top Pro
•••

Strong metaprogramming capabilities

Macros, templates, and compile-time constructs allow DSL's and simplification of code. See More
Simona
SpontaneousIdyia
grengo1234
Top Con
•••

Version 1.0 just released (very new)

Not very stable and has a rather small community. See More
MemorableJumis
MemorableJumis's Experience
Con artists pushing this false hype language on tricked Python addicts and on here. Nobody know this language, not even on TIOBE index. You not getting a job with this. Nobody need this language, not even for hobby, as others much better. See More
Andreas Rumpf
Top Pro
•••

Concise

Nim programs are concise, but readable. See More
InquisitiveOzwiena
Lonely COBOL
Top Con
•••

Nim needs a lot more documentation

Details on features and how to use needs to be fully documented. See More
MeticulousFecunditas
MeticulousFecunditas's Experience
Compiles to efficient C code so you can run it anywhere, but still a nice and extendable syntax. The ability to do meta-programming can also shift a lot of computation to compile-time without having to create stand-alone scripts and put magic numbers in your code. See More
Chloe Montanez
Yardanico
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
Simona
Yardanico
Alex
Top Con
•••

Non-standard multithreading model

Nim has very strict rules on memory sharing between threads, in order to keep garbage collection latency to a minimum. Message passing and copying must be used. This will be changed when ARC memory management model will become the default (as of 1.2.0 it's an experimental option). See More
Max Skybin
Max Skybin's Experience
Very expressive without sacrificing performance See More
Chloe Montanez
Yardanico
Top Pro
•••

Static and safe type system

Nim checks your code for type errors at compile-time. See More
Simona
DecentOgma
Top Con
•••

Whitespace sensitive syntax

Burns eyes and is ugly. See More
FantasticLucina
FantasticLucina's Experience
Nim is a language where you can re-create the abstractions of any other language. You can have your code as high-level as Python and Ruby or as low-level as C and Assembly. And all of this while adhering to the zero-overhead principle. See More
thermoplastics
Alex Libman
Top Pro
•••

Best ratio of performance to programmer difficulty

If you want the best performance at any cost you of course go with C, but most of the time you want to maximize both performance and developer effort. Nim's benchmark results are almost equal to Rust, and well ahead of Go, Java, C#, etc. Nim's programmer difficulty is almost as low as Python. See More
Simona
AdaptablePereplut
Top Con
•••

Generics are a mess

Confused mishmash of conflicting ideas. See More
prohyon
prohyon's Experience
Nim is the most powerful language that exist. See More
Mikhail
Top Pro
•••

Multi paradigm

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

Memory management confusion

Multiple choices of garbage collection that causes confusion. Various times, nothing works particularly well. See More
Chloe Montanez
Yardanico
Top Pro
•••

Compile-time execution

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

Weird thread model

Not turned on by default. Has very odd and convoluted rules on memory sharing between threads. Harder to use. See More
Mikhail
Top Pro
•••

Supports UFCS (Unified Function Call Syntax)

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

Community harsh if criticized

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

Very easy FFI

Can easily import from C, C++, js with pragma. See More
InquisitiveOzwiena
Top Con
•••

You won't get a job programming with Nim

It's not a mainstream language. See More
Mikhail
Top Pro
•••

Really crossplatform

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

Tooling not yet as good as the more commercial languages

Compared to languages such as C#, Nim lacks great IDE support. The debugging tools are somewhat inconvenient to use. See More
Mikhail
Top Pro
•••

Strict typing

Checks your code at compile time. See More
Simona
Caleb Budde
Top Con
•••

Garbage collection/threading blues

For version 1.1 or 2.0 or whatever they should make the language more clear in the choices for garbage collection. See More
Mikhail
Top Pro
•••

Has built-in async support

Nim has "asyncdispatch" module, which allows you to write async applications. See More
Simona
Live Wire
Yardanico
Top Con
•••

Garbage collection choices

Nim has multiple choices for garbage collection, and choosing which is best for your code may not be obvious. See More
Monika
Mikhail
Top Pro
•••

Easy to integrate with another languages

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

Lacks void / null safety

Easy to get involved in safety issues. See More
WhiteLilac
Federico C
Top Pro
•••

Very fast compile time

Also, recompiling is often faster than plain GCC. See More
PerceptiveOlodumare
Top Con
•••

Inconsistent name formatting

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

Python-like syntax

Readable, clean and familiar to Python developers. See More
PerceptiveOlodumare
Top Con
•••

Atrocious error messages

Unhelpful to users, wasting hours deciphering and extremely annoying. See More
Monika
Federico C
Top Pro
•••

Open Source

Open Source reference compiler, standard library, and ecosystem. See More
PerceptiveOlodumare
Top Con
•••

Failed wannabe Python knockoff language

Created in 2008, Nim has failed to make TIOBE top 100 or PYPL rankings for programming languages. Pythoners can use alternatives like Cython (https://cython.org/) for a more Python-like experience. See More
Michael Bednarek
Top Pro
•••

Smaller binary size

Binary sizes for a compiled program tend to be smaller than other languages. See More
MemorableJumis
Top Con
•••

Con artist pushed useless language

False hype con artist language pushed by tricking Python users. Nobody need this language, not even on TIOBE index top 100 list, but it came out 2008. You not get job knowing Nim. Bad for even hobby, others better to learn and use. See More
Lonely COBOL
Top Pro
•••

Garbage collector is optional, we can mix GC and no-GC types in the same codebase

See More
Monika
Mikhail
Top Pro
•••

Built-in Unicode support

You can use unicode names for variables, there is "unicode" module for operations with unicode. See More
Federico C
Top Pro
•••

Grass-roots, community driven language

The development is not directed by a single, large company. See More
ElatedBelisama
Top Pro
•••

All in one language

Very capable of being used for any front-end and back-end needs. See More
Dominik Picheta
Chloe Montanez
Yardanico
Top Pro
•••

Type inferencing

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

Safe, race-free threading model

Safe, race-free threading model using the built-in disjoint check. See More
Monika
ArtisticSurma
Top Pro
•••

Strikes great balance between performance and productivity

While Nim is really fast, it is also elegant and productive. Optional GC, python-like synthax and minimal design all help you solve real world problems. See More
Monika
prohyon
Top Pro
•••

Really cross-platform

The same code can be used for web, server, desktop, and mobile. See More
Monika
Mikhail
Top Pro
•••

Has built-in unittest module

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

Swift like memory management (ARC)

Plain reference counting with move semantic optimizations, offers a shared heap. It offers deterministic performance for hard realtime systems. See More
Monika
Mikhail
Top Pro
•••

Garbage-collected

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

Rust

My Recommendation for Rust

My Recommendation for Rust

Add Video or Image
All
39
Experiences
3
Pros
20
Cons
15
Specs
storedbox
Monika
Belle
Top Pro
•••

Helpful compiler

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. The compiler usually gives good explanations about what you did wrong and sometimes even proffers ways to fix things. See More
Alex
Michael Murphy
Top Con
•••

Integer generics unsolved

Although Rust supports generics, it does not yet support integer generics. Crates exist to alleviate issues with this, but the ultimate solution has yet to be done. This also affects generics with fixed-size arrays, although array slices are easily used as a workaround. See More
kungfu
kungfu's Experience
Looking at rust code will give you a headache, it is such a hard language to read. And this "memory safety" is also very hard, it is not free you have to work for it for so little gain, which means your development time will increase 5x easily. See More
Specs
Current stable version:1.4.0
Platforms:Linux, MacOS X, Windows, BSD
License:MIT/Apache
storedbox
Chloe Montanez
Johan 't Hart
Top Pro
•••

Dependency management

Rust has a simple-yet-advanced, platform-agnostic build and dependency management system called Cargo. Cargo provides a convenient and near effortless means to distribute reusable packages called crates. One can even define Git repositories as dependencies. At the same time, use of this system is entirely optional and reliable alternatives--such as Bazel--are readily available. See More
Chloe Montanez
CharmingEpiales
Top Con
•••

Does not provide stable ABI yet

The language does not provide stable ABI yet: different versions of the compiler may provide different backward-breaking machine code. There are a lot of things to be done before stabilizing the ABI. So if Rust-developers want to have stable ABI they use C one. As another result, every crate in Rust must be statically linked today. See More
Luke I. Wilson
Luke I. Wilson's Experience
Rust systems programmer for over a year. See More
storedbox
Endi Sukaj
Top Pro
•••

Generics support

You don't have to write the same array and dictionary classes hundreds or thousands of times to get strong compile-time type checking. See More
meikl
Top Con
•••

Nearly no standard API

For nearly everything you will need to utilize a third party implementation (external crate). See More
Winnie Brockett
Winnie Brockett's Experience
Rust is blazingly fast and memory-efficient: with no runtime or garbage collector, it can power performance-critical services, run on embedded devices, and easily integrate with other languages. 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
Monika
Alex
penilloppee
Top Con
•••

Very hard to read

The syntax is hard to read and very terse, which is bad for large code bases. See More
storedbox
Chloe Montanez
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. The language design coerces developers into writing optimal code almost all the time and enables optimization of your program without requiring full knowledge and understanding the compiler's source code or the internals and quirks of your target processor(s)/architecture(s). 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 stated otherwise. See More
ConsiderateAmphiaraus
Top Con
•••

Significant time required to understand the language fully

There's the infamous borrow checker for example. See More
Simona
storedbox
Endi Sukaj
Top Pro
•••

Safe and unsafe code scopes

This mechanism ensures that if you stick with the safe code, there will be no memory issues. On the other hand, if you need (or want) to do something crazy, you totally can. See More
ConsiderateAmphiaraus
Top Con
•••

Very time consuming to write

See More
Endi Sukaj
Top Pro
•••

Built-in concurrency

Rust has built-in support for concurrency. See More
Monika
truthful koschei
Chloe Montanez
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
storedbox
ElatedCinteotl
Top Pro
•••

Compiles to performant machine code

By leveraging LLVM as a backend, the Rust compiler produces efficient machine code from Rust sources. As a natural consequence, Rust programs and libraries tend to be (significantly) more performant than their interpreted contemporaries. See More
InquisitiveOzwiena
Top Con
•••

Low productivity

The compiler is too strict, such as ownership and borrowing checkers. Great difficulty with getting projects completed. See More
prohyon
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
TalentedBathala
Top Con
•••

Low readability

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

Zero-cost futures or Async I/O

See More
InquisitiveOzwiena
Top Con
•••

Long compile times

Way longer to compile than other languages. See More
Monika
Michael Murphy
Top Pro
•••

Experienced developers can rapidly prototype & deliver products

Out of all the systems languages, and even non-systems languages, Rust seems to make its users the most productive. This phenomenon is an increasing trend which is regularly reported by those who have gained enough experience with Rust to call themselves Rust programmers. Newcomers often struggle with the borrowing and ownership mechanism, lifetimes, traits, generics, and all manner of concepts and capabilities that Rust offers which their University of choice, or languages that they were familiar with, did not prep them for. Yet once you have learned these concepts and internalized them, the static analysis offered by the compiler becomes one of your greatest assets to your development. With the rules internalized, there is never a time where you will fight with the borrow checker. It will simply point out mistakes that you've made along the way, and are usually addressed within a minute or two. It also makes major refactoring simple. Once your project compiles, there's a pretty good chance that it will work correctly on the first try. Any issues you encounter throughout development will exclusively be basic logic bugs, rather than critical issues common of other systems programming languages. Cargo is also no slouch, and in combination with Crates.io, it is trivial to develop, publish, discover, and use crates from the official crate repository within each of your software projects. Any small problem which can be made generic or separate from a project will likely be chipped off and wrapped in a crate for others to use. These crates can then be collectively audited and put to use in the wild, in real time. This makes it possible to develop highly optimized data structures and routines, and then quickly propagate them across the entire industry. The performance is the cherry on top. A prototype is easily transformed into a final product with a bit of optimization. Rewriting entire portions of your architecture to be highly parallel with a fine degree of granularity is also simple, due to traits like Send & Sync ensuring that data is properly shared across thread boundaries, and the borrowing and ownership system which ensures proper memory access patterns across threads. See More
TalentedBathala
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
storedbox
Chloe Montanez
ideasman42
Top Pro
•••

Advanced, sanitary macros (a la lisp)

Macros facilitate code deduplication at a level unachievable with functions/classes/traits alone. Rust's macros are not like those from C/C++. They are safe, sanitary, and support strong-typing. Notable features include pattern matching, recursive invocation, and a small macro grammar (DSL). See More
Ray
truthful koschei
Top Con
•••

Very new and untested

At this point, one can look at their Github page and see in the issues that Rust isn't as safe as it is claimed to be. Safety is only second to weird conversations about "harmful" features. Old unsafe bugs don't get solved while discussions about some language feature having problematic names get solved quite fast. Despite strong claims of "safety first", Rust is still choosing itself what its place actually is. If one were to follow "safety first", Rust is simply not a good option for now. See More
storedbox
Top Pro
•••

Functional Programming

Very easy to create functional with some additional from structure application. See More
Endi Sukaj
Top Con
•••

Hard to find learning resources or libraries

Because it's still a relatively new language, Rust does not enjoy a following as large as other languages/environments. Rust development has also been rather volatile for a long time during the beginning of the development of the language adding to this issue. Because of the small community, it's harder to find useful libraries for projects or any other kind of resource. See More
Endi Sukaj
Top Pro
•••

Threads without data races

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

Immature tooling & ecosystem

Compared to C/C++, there isn't yet the wide range of tools available (IDE's, static analysis, build systems), while unavoidable for any new language and improving over time - its a noticeable down-side. See More
Deri Herdianto
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
GenerousBonaDea
Top Con
•••

Working with mutable state is expensive performance-wise

See More
Evan Stoll
Top Pro
•••

Big community

The biggest community contributing to language. See More
Endi Sukaj
Top Pro
•••

Easy to write understandable code

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

Guaranteed memory safety, better than Nim with error help

With the outstanding ownership and borrowing system, no garbage collector, efficiency, concurrency, and intuitiveness backing it all up, these features make Rust the greatest language for Systems programming, especially with its larger base than Nim. See More
LoveableCirce
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
HumblePolyphemus
Top Pro
•••

Welcoming community full of talented engineers

The ecosystem of libraries is full of modular, ergonomic, and performant code written by many people smarter than I. It makes working with libraries a pleasant experience and one that is even better given Rust's notoriously friendly community. See More
HideSee All
73

C

My Recommendation for C

My Recommendation for C

Add Video or Image
All
27
Experiences
1
Pros
18
Cons
7
Specs
Endi Sukaj
Top Pro
•••

Extremely efficient

The C language's mentality is to trust the programmer. With all great powers comes great responsibilities. C allows you to harness the full power of the underlying hardware. No garbage collection is a blessing, not a curse. It forces the programmer to be aware of what he's writing. It's similar to getting frustrated with spoken languages because they don't have built-in autocorrect. Although it's easier to brainlessly write a text and let autocorrect do the work for you, you won't become better in the language this way, nor will you be able to better express yourself because you don't have to think about the grammar of the language. Having to think about resources and how to best implement everything, coupled with the relatively low-level of C in general. Makes C programs extremely efficient and fast. See More
Nick McCurdy
Top Con
•••

Unsafe

C makes it extremely easy to make mistakes. Your language should help you be productive by abstracting mistakes away from you. See More
CreativeAnuket
CreativeAnuket's Experience
C is simple, fast... 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
Endi Sukaj
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 and Mac) 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 for certain individual cases, as well. See More
Monika
Ved
Top Con
•••

Language 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
ndrewxie
Top Pro
•••

Simple

C has a very minimal syntax that makes it easy to pick up, create a compiler for and use. See More
Endi Sukaj
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
Endi Sukaj
thermoplastics
郭春林
Top Pro
•••

Very compact

C is compact and very fast. It is ideal for embedded programming, which requires only small resources. C is straight forward and very portable especially in a Unix environment. Most popular languages are descendant from C. C programmers do not requires any fancies like class, template or overloading, etc. Those not only make for confusion, but also bloat the object code. Efficient C code utilizes every bit of the machine it is running on. See More
Endi Sukaj
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
Endi Sukaj
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
Ved
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
ad7e
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
HilariousMultultu
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
ad7e
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
HilariousMultultu
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
Mimarik
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
Mimarik
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
Mimarik
Top Pro
•••

Pleasing to the programmer

Whether you are writing application code or trying to code-golf something down to the fewest bytes and milliseconds (perhaps both at the same time) possible, as opposed to languages such as C++, notoriously painful to read and debug, C's simplicity at its heart will make the job much less annoying. See More
Mimarik
Top Pro
•••

More control over the code

See More
prohyon
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
prohyon
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
prohyon
Top Pro
•••

C is simple with lesser rules than any other language

C is standardized and it is the goto language when you have to speed things up See More
Monika
prohyon
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
prohyon
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
prohyon
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
CreativeAnuket
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
HideSee All
72

Go (Programming Language)

My Recommendation for Go (Programming Language)

My Recommendation for Go (Programming Language)

Add Video or Image
All
37
Experiences
1
Pros
26
Cons
9
Specs
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
Endi Sukaj
Top Pro
•••

Built-in testing framework

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
ReverentZisa
ReverentZisa's Experience
Many years of Go development See More
Specs
Current stable version:1.17
Platforms:Windows, Linux, Mac etc.
GZipped size:115 MB (installer)
Developer:Google with Ken Thompson, Robert Griesemer, Rob Pike
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
Monika
Endi Sukaj
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
GenuineTawals
Top Con
•••

No generics

See More
Endi Sukaj
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. The workflow is comparable to that of a scripting language. See More
LivelyTaranis
Top Con
•••

Designed to make the programmer expendable

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

Automatically generates API documentation for installed packages

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

No classes

Go lacks classes which can become burden when you have to compose 15 different structs to solve the single problem. It also disallows a lot of abstraction that'd be easily solved using classes. 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
ConsiderateAmphiaraus
ReverentZisa
Top Con
•••

Emphasis recently shifted from tech to woke politics

[political rambling, redacted] See More
Endi Sukaj
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
HilariousMultultu
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
•••

Exceptionally simple and scalable multithreaded and concurrent programming

Simply prepend a function with go to execute it concurrently. Utilizes channels for communication between goroutines which aids to prevent races and makes synchronizing threads effortless. The maximum number of threads to use may be defined at compile time, even if that is limiting goroutines to run on one thread. See More
LivelyTaranis
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
Endi Sukaj
Top Pro
•••

API documentation is rich in content; easy to memorize

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

No forms designer

For someone who's used to Visual Studio, Go lacks the luxury of having a forms designer for rapid development. See More
ArticulateLulal
Top Pro
•••

No Class-based OOP

Uses more generalized OO concepts. Faster to write, easier to understand, and easier to troubleshoot. See More
thermoplastics
Antonio Nešić
Top Pro
•••

Go get and Go fmt

You need a module, no problem, grab it via go get. On the other hand with other programming languages, you always have troubles with indentation and the in-house rules for writing brackets. go fmt solves this problem, and unifies the experience across the professional shops as well as freelancers. See More
Monika
Endi Sukaj
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
Endi Sukaj
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
PhilosophicalRenpet
Top Pro
•••

C libraries available

Thanks to Cgo, it is possible to interface practically ale C libraries to Go. See More
prohyon
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
prohyon
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
prohyon
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
prohyon
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
prohyon
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
Monika
prohyon
Top Pro
•••

Golang is a Systems Programming Language

https://www.quora.com/Is-Go-a-systems-programming-language See More
prohyon
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
prohyon
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
Alex
HumorousBalayang
Top Pro
•••

Fresh concept nowdays

The lang is written from scratch according to current hardware possibilities and what people expect from them. Can handle great both system-level scripts/tools and high-level complex network services. See More
Endi Sukaj
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
prohyon
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
prohyon
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
prohyon
Top Pro
•••

Supports functional programming techniques such as function literals

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

Common Lisp

My Recommendation for Common Lisp

My Recommendation for Common Lisp

Add Video or Image
All
11
Pros
8
Cons
3
prohyon
Top Pro
•••

Very Powerful REPL with SLIME

SLIME (Superior Lisp Interaction Mode for Emacs). See More
VivaciousVainamoinen
Top Con
•••

Academic language, snobbish following

Not geared towards mainstream use. See More
HardwareHero
Top Pro
•••

Lots of production-ready libraries available

Common Lisp is arguably the most useful Lisp to "get things done". One of the main reasons of this is the large community behind it and the large number of libraries and frameworks already built to solve virtually any problem you may have when writing programs to be used by actual users. See More
HardwareHero
Top Con
•••

Too many implementations

There are a lot of Common Lisp implementations out there (CLisp, SBCL, CCL, just to name a few). Some implementations are free and open source, others are proprietary and cost quite a bit. Though none of them follow 100% the Common Lisp standard for example, SBCL fails about 50 official ANSI Common Lisp conformance tests. Having so many implementations it may be hard to develop new libraries because you would have to test it for several different implementations. See More
prohyon
Top Pro
•••

Carefully designed for interactive use

Almost all aspects of the language are designed with interactive/repl use in mind. See More
VivaciousVainamoinen
Top Con
•••

Esoteric syntax

While functional, the syntax isn't the easiest to pickup for most coders. See More
HardwareHero
Top Pro
•••

Software written in Common Lisp can exceed C/C++ performance

Some CL implementations (most notably SBCL) with some careful design can surpass even C/C++ code in production when it comes to efficiency and speed. See More
HardwareHero
Top Pro
•••

Portable

Common Lisp is very portable across multiple platforms. With a myriad of implementations available. See More
prohyon
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
HardwareHero
Top Pro
•••

Flexible, does not force you to a particular paradigm

Common Lisp can be a very flexible language. You can either follow functional paradigms and rules or you can go the imperative route. You can also use OOP because of the powerful Common Lisp Object System (CLOS). See More
prohyon
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
HideSee All
--

Ada

My Recommendation for Ada

My Recommendation for Ada

Add Video or Image
All
18
Experiences
2
Pros
11
Cons
4
Specs
ArtisticHegemone
Top Pro
•••

Highly tunable error checking

There are many error conditions. There can be tampering with containers, there can be integer overflow, there can be contract violation. Other programming languages suffer from "one size fits all" choice. You need checks - you pick one language, you want performance - you pick another language. Whatever language you pick, having written 1M LoC, you cannot undo your decision. Not in Ada. Ada is not only appealing by being able to check many conditions but also being able not to check them if requested so. Ada can be safe, Ada can be fast. No need to have multiple languages. Investments in Ada code are secure. See More
ArtisticHegemone
Top Con
•••

Different libraries use different basic types

Is it possible for anyone to write custom string type? Yes, so let's do this. Is it possible for anyone to write custom container? Yes, so let's do this. This democracy comes at a cost. In some another programming language "a list of string" may virtually always be the same thing for mutually unaware developers, so you get two programming libraries and put them together, toll-free. In Ada this is very likely to not be true. Ada Web Server introduces custom containers, GNATCOLL introduces custom strings. Both libraries are maintained by same vendor. Writing glue conversion code is unfortunately required. See More
InquisitiveNibhaz
InquisitiveNibhaz's Experience
Lovely language. Gives me the power of a chainsaw but with kickback guards, cutoff switches, and other safety gear to lessen the chances of me cutting off my own leg accidentally (metaphorically speaking). See More
Specs
Platforms:Windows, Linux, MacOS, embedded
SkillfulManat
Top Pro
•••

Safety Critical Application, IOT

See More
ArtisticHegemone
Top Con
•••

Smart pointers are not built-in

ARC is indeed possible in a programming language having RAII and finalization, but programming language does not further assist to implement ARC. You got the tools, now you are on your own. Every programming language has an economic foundation. For C++, it's C compatibility, so problems arising from it are not going to leave. For Ada economic foundation is SPARK. What can be verified, is going to thrive. What cannot be verified, lacks attention. In SPARK until recently there were no pointers. Now they are going to be introduced, but they will be unique. Unique pointers means nothing to count, no reference counting. Implementing references (smart pointers) is verbose. Someone does it by hand, someone uses code generator from UML. See More
ArtisticHegemone
ArtisticHegemone's Experience
Wrote several tricky traffic-editing proxies, forward and reverse ones. They run fast and operate megabytes of data per minute: parse JSON, patch it, serialize. Non-stop. Garbage collected solution would accumulate garbage at the speed of traffic. I also now make webservers in Ada. See More
ArtisticHegemone
Top Pro
•••

Catches integer overflows and range errors, but they don't start an apocalypse

Some "system" programming languages make it hard to catch integer overflows and range errors. Another ones advertise catching them, but what they forget to mention is that catching such error starts an apocalypse. A condition that is either impossible or hard to handle properly. Ada is designed by sane people. In Ada these ones are usual exceptions. Let us show 500 error, but please don't shutdown the whole webserver. No apocalypse today, thanks. See More
ArtisticHegemone
Top Con
•••

C/C++ transpiler is stuck to Ada 95 revision

There are many developers still using Ada 95 compilers because there was no update for their hardware. They maintain libraries to be Ada 95 compatible. The hardware that can usually make one be locked to Ada 95 choice is rare (usually military) and has alternatives, but one special case is very notable. Current seller of Ada->C/C++ does almost nothing to improve compiler, so it's not moving anywhere. It stays on Ada 95 edition. This vendor is not known in Ada community, they are seemingly only collecting money from rent (they are not original developers). Better than nothing, but that's what we've got so far. Ada 95 is still very great, even compared to C++20. C++20 only recently got std::span, Ada's array parameters were like that since Ada 95. But all the hype stuff, all the list comprehensions will not be for you if you want to secure your time investments by making sure all your code can be compiled to C/C++ to run on any target. See More
ArtisticHegemone
Top Pro
•••

Excellent module system

Ada is not a basketball game where any player can come and put ball into basket. Modules cannot go and put entities (constants, functions, types) into arbitrary namespaces. And there is no "root" namespace polluted by non-namespace aware "modules". No games here. Everything is well defined. Modules (packages) only put everything into their own namespace. Every entity is easily traced to its origin. Also, unlike some other system programming languages, "." is not for beauty. Packages have hierarchy. For instance, Ada.Text_IO.Stream_IO is allowed to provide stream interface to Ada.Text_IO because private part of Ada.Text_IO is accessible to children packages. This is more convenient access granting system than ones found in other programming languages. See More
SkillfulManat
Top Con
•••

IDE not mature

See More
DecisiveChalchiuhtlicue
Top Pro
•••

Expressive types

See More
ArtisticHegemone
Top Pro
•••

Design by contract

Eiffel's killer feature without Eiffel's ultimate blocker. Design by contract - yes, tracing garbage collection - no. See More
ArtisticHegemone
Top Pro
•••

Really hermetic type system

In some other programming languages Boolean(5) is an easy way to make Boolean value that is neither strictly True nor strictly False. Some programming languages don't even have this concept defined properly. Booleans, characters, numbers, everything is blurred, everything is shaking. Nothing shakes in Ada. In practice one is almost guaranteed to not ever stumble across invalid value. One is almost guaranteed that "Positive" value will indeed be positive and "Natural" value won't be negative. And it does not take much effort to support it, Ada programs are fast and slim, notably more efficient than some other programming languages pretending for safety, but failing to at least deliver strictly positive numbers. See More
ArtisticHegemone
Top Pro
•••

Strongly typed generic containers

See More
ArtisticHegemone
Top Pro
•••

Almost any target is reachable using C/C++ compiler

There is a certified (ACATS validated) Ada compiler on top of C or C++ (actually 4 switches for fine tuning). It knows how to check integer overflow even if C/C++ compiler does not know. It can provide symbolic backtrace on almost any platform. With a special key generated C/C++ code whistleblows about entering and leaving functions. Just think about it. Your target may only have C compiler available. Yet if you get Ada, all integer operations are checked, and if exception happens, you have symbolic backtrace. RAII also works on top of C compilers. See More
ArtisticHegemone
Top Pro
•••

RAII and finalization

Can you imagine living without it? See More
ArtisticHegemone
Top Pro
•••

Traditional OOP

One does not have to figure out how to map familiar classes to haskellish traits or arithmetic types in Rust. One does not have to learn to put box into box, like in Go. Good or bad, comparably conservative OOP is here. Class hierarchies, abstract interfaces, they just exist when one does not want to experiment with alien technologies. Ada's OOP innovation is synchronized interfaces for tasks and Hoare monitors, but that is another story. See More
HideSee All
66

C++

My Recommendation for C++

My Recommendation for C++

Add Video or Image
All
46
Experiences
2
Pros
18
Cons
25
Specs
gilch
Top Con
•••

Atrocious complexity

The grammar is undecidable. Subtle errors can make the meaning of the program "undefined" by the spec. See More
Endi Sukaj
Top Pro
•••

Highly portable

Implementations exist for hundreds of operating environments, from mainframes and super computers all the way down to tiny embedded devices. See More
penilloppee
penilloppee's Experience
Very portable. Together with C. These are the only programming languages that are officially supported in Android, iOS, and Windows. Also C++ is fast evolving, there are so many very good abstractions now in C++11/C++14/C++17 and next... C++20... Which will have compile time reflections and meta-classes! See More
Specs
Standard: ISO/IEC 14882 or C++17
Price:Depends on Implementation
Engine:UE4 , Cocos-2d-x
Treycos
Top Con
•••

Bugs easily corrupt the memory you need to find them

You can usually get a core dump, but often the call stack gets completely overwritten. Compilers are not even consistent in how they map the binary objects to code. See More
Endi Sukaj
Laura Kyle
Johan 't Hart
Top Pro
•••

Powerful generic (meta) programming capabilities with templates

When you leverage the power of the c++ templating system enough, you can make the compiler execute a Turing complete program. You can even e.g. calculate prime numbers during compile time. This is far more powerful than simple generics in e.g. Java and C#. On top of type safe containers one can use it to e.g. Static polymorphism (polymorphism without performance cost) More type safety without performance cost Functional programming / lazy evaluation See More
Ryan Rillorta
Ryan Rillorta's Experience
Rapidly evolving, is getting more powerful and easier to use. Superior tooling. And very cross platform, it is found everywhere. See More
gilch
Top Con
•••

Slow compilation

C++ is such a complicated language that compilers don't work very quickly. See More
Endi Sukaj
Top Pro
•••

Multi-Paradigm

Supports procedural, object oriented, generic, and other paradigms. See More
SociableMagec
Top Con
•••

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

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

Class destructor support

Resource Acquisition Is Initialization is actually a term used in c++ to basically say it has destructors. Originally it is used to free class resources. But because class destructors are called guaranteed at the end of the scope of where a value is used, one can leverage this property to do all kinds of useful things which are not so nicely done in other languages. E.g. automatically close a file when it is not needed, close a socket, stop monitors, free resource handles etc. One does not need to remember to end a try-catch block with a finalize section, or call Dispose() on IDisposable class datamembers. See More
Rūdis
LoyalMilEspaine
Top Con
•••

A chaotic mingling of programming concepts

To give a similar picture: C++ does have more of a motor combustor, that is responsible to vaporize the gasoline. A bad principle corrected many times. At the end we have a complicated machinery that is a weird collection of a few genius ideas to make the whole thing work (templates (weird and a lot of history-driven pitfalls), now: lambdas (in a weird way), still a lot of exceptions in how compilers machinely set up the classes). Weird new rvalue mechanisms. Too much backward compatibility where all the old and erroneous stuff still exists, and the smart pointers emerge, and et cetera. Everything is just mingled together. And when you want to templatize your existing code, you have to start over from the beginning. Like Scott Myers said it: "C++ is a foundation of programming languages". Yes, a weird one. Result: your coding solutions do not scale. You do not know, where you end up in refactoring. See More
Monika
smurfer17
Top Pro
•••

C code can be used in C++ code

Most C code will work as C++. See More
Eugene A. Simonenko
Top Con
•••

Tough to learn as the first language

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

Huge language supports most everything

C++ is a large language with an even larger community and following. It has libraries for every kind of task that is possible to do with C++ See More
Treycos
Top Con
•••

Module system is not great

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

Powerful memory management

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

Undefined behavior

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

Excellent compiler optimization

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

Rather useless compiler errors

An error in C++ can be a result of many things, so often the compiler doesn't have very useful advice about just what the problem is. Sometimes this can feel like the error is "IT BROKE" and the solution advice is "FIX IT". See More
smurfer17
Top Pro
•••

STD is often updated

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

No reflection

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

Teaches problem solving

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

Undefined behaviors and weak limited type safety

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

Best way to understand algorithms

See More
SociableMagec
Top Con
•••

Huge language gets in the way of learning

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

Teaches fundamental OOP

Teaches you to leverage object oriented programming. See More
Johan 't Hart
Endi Sukaj
Top Con
•••

Separate header files

One has to duplicate e.g. object interface declaration in header files. Making some object member public is not enough to make it accessible for other cpp files. However the feature request for module support is high on the wishlist. This would solve this issue. See More
Justus Sagemüller
Top Pro
•••

Zero-cost abstractions

You can use somewhat high-level abstractions and still be quite sure that the code will run as fast as a low-level C implementation – not just in an asymptotic and/or average-throughput sense, but in fact exactly as fast and with no latency issues. See More
SociableMagec
Top Con
•••

Retains nearly all bad habits of C

See More
Federico C
Top Pro
•••

Supported by static analysis tools and safety standards

See More
Endi Sukaj
Johan 't Hart
Top Con
•••

No cross-platform dependency management

C++ doesn't come with a platform independent dependency management system like Maven for Java, Nuget for .net or Cargo for Rust. Most solutions are platform specific, like Nuget for Visual Studio. In Linux the package management system is often used for c/c++ dependency management. (apt-get build-dep ...) See More
prohyon
Top Pro
•••

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

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

Memory leaks and segmentation faults

Because C and C++ allow the user direct access to memory and don't provide garbage collection threads, there is a probability that a program may have a "memory leak", which occurs when something a programmer allocated in the heap is not deallocated properly. Also, attempting to dereference memory protected by the operating system causes a segmentation fault and kills the program. See More
Monika
prohyon
Top Pro
•••

Universal, portable, best complexity/efficiency trade-off

See More
DecentMehen
Top Con
•••

N different ways to do things -- most deprecated

C++ has retained every ancient feature in the name of compatibility. (Consider dynamic memory: malloc, then new, then smart_ptr, then unique_ptr and shared_ptr.) Which is great for old codebases, but now you're using libraries from every period that do things differently and lots of boilerplate are necessary to unify all of these. See More
TallTamanuitera
Top Pro
•••

Has lots of library

C++ is mature and everything has standardized library. See More
gilch
Johan 't Hart
Top Con
•••

Complicated programs due to powerful template mechanism

Developers with advanced understanding of the template mechanism can create programs so arcane that they are hard to understand even for other professional c++ developers. See More
PersistentGelos
Top Pro
•••

Faster execution of the same algorithms

Because C++ (and its precursor C) are "lower level" than a lot of popular programming languages they are also faster at executing code than Java or C# which require VMs and garbage collection threads. See More
SociableMagec
Top Con
•••

No way to locate definitions

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

Standard library missing important features

See More
RealisticNemetona
Top Con
•••

Incomprehensible operator overloading resoution

See More
RealisticNemetona
Top Con
•••

Duplicates C features in incompatible ways

Arrays, strings, pointers, etc. have both C and C++ versions. Sometimes the C++ versions are worse. This is more useless trivia beginners have to sort through. See More
RealisticNemetona
Top Con
•••

Exceptions incompatible with C++ manual memory management

See More
RealisticNemetona
Top Con
•••

Arcane binding rules

See More
RealisticNemetona
Top Con
•••

Complicated types

See More
HideSee All
--

Zig

My Recommendation for Zig

My Recommendation for Zig

Add Video or Image
All
15
Pros
7
Cons
7
Specs
Monika
xbdf
Top Pro
•••

Some safety

It's safer than C, at least. See More
DecentOgma
LoveableCirce
Top Con
•••

Almost no community

Lacking in libraries and users. See More
Specs
Current stable version:0.9.0
License:MIT
Site:https://ziglang.org/
Current Version:master
See All Specs
xbdf
Top Pro
•••

C Interop

Zig programs can import C libraries and export header files to be used in C programs. See More
Simona
DecentOgma
Top Con
•••

No closures

Does not have closures. See More
teadan
ReveredBunjil
Top Pro
•••

Control flow is simple and obvious

No operator overloading, property methods, runtime dispatch, macros, etc. See More
ImpartialLiTieguai
Top Con
•••

No interfaces/traits

Features that are useful are missing, where you can find them in other languages. See More
xbdf
Top Pro
•••

Cross-compilation is easy

The Zig compiler can build artifacts for any Tier 3 Supported platform without additional downloads. See More
Monika
OpinionatedFortuna
Top Con
•••

Deceptively gives impression it's near being production ready

No plans to hit 1.0 until 2025 (3 years later), according to Zig Roadmap speech. Impression is given that (0.9.1) language was close to ready, when it's not. See More
Monika
LoveableCirce
Top Pro
•••

Compile-time execution

Zig can execute code at compile-time, allowing for more performant and readable programs. See More
ImpartialLiTieguai
Top Con
•••

No lambdas

Missing many key and useful features other languages have. See More
xbdf
Top Pro
•••

Performance

Zig is pretty fast, in some cases even faster than C. See More
Monika
OpinionatedFortuna
Top Con
•••

Creator admits to not knowing what he's doing

Creator admits his shortcomings during Zig Roadmap speech. Very disturbing. Not a language to invest in or take seriously, outside personal experimentation. See More
teadan
prohyon
Top Pro
•••

Small binary

Produces binary smaller than C. See More
Simona
DecentOgma
Top Con
•••

Convoluted syntax

Claims to be an improvement over C, but in this area, not really. See More
HideSee All
--

Object Pascal

My Recommendation for Object Pascal

My Recommendation for Object Pascal

Add Video or Image
All
31
Experiences
1
Pros
25
Cons
4
Specs
OpinionatedFortuna
Daniele Teti
Top Pro
•••

Multiplatform (Delphi, FreePascal)

Works on all major desktop and mobile OSes, and more. See More
Federico C
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
Marcus Fernström
Marcus Fernström's Experience
Easily write cross platform systems tools, same power and low-level abilities as C or C++ but much easier to learn and work in, also the best GUI tooling I've ever seen. See More
Specs
Standard:ISO/IEC 7185:1990 Pascal and ISO/IEC 10206:1990 Extended Pascal
Price:Free (FreePascal, GNU Pascal), varying price (Delphi)
Yoshiyuki
John Parsons
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
John Parsons
Top Con
•••

No language standard

After the Wirth era, practically there is no official Pascal language standard. Delphi used to be the dé facto standard especially for industry, but today Free Pascal is starting to get better support. However, there are some other Pascal language variants such as Smart Pascal, Oxygene (from RemObjects), Pascal ABC, etc. that each has its own styles. See More
Ray
John Parsons
Top Pro
•••

Clear syntax

The syntax is clear and concise, for example: procedure test(); begin DoSomething(); end; See More
John Parsons
Top Con
•••

No up to date version of language standards

In 1983, the language was standardized, created two standards ISO/IEC 7185:1990 Pascal and ISO/IEC 10206:1990 Extended Pascal. Object Pascal extensions to the language are no official standards. Their are no standards for modern features and enhancements. Various Pascal dialects like Delphi or HP Pascal exist with their own enhancements and features. See More
LikableKul
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
John Parsons
Top Con
•••

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

See More
John Parsons
Top Pro
•••

Fast execution

The compiler generates fast and optimized code. No stop-the-universe garbage collection. See More
Yoshiyuki
John Parsons
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. Pascal / Object pascal was also used in schools during the 2000s to teach kids the basics of object oriented programming. See More
John Parsons
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
thermoplastics
Daniele Teti
Top Pro
•••

Clear, simple syntax, no hidden behaviors

See More
John Parsons
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
Daniele Teti
Top Pro
•••

Strongly typed

See More
ConfidentTartarus
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
John Parsons
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
John Parsons
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
EnthusiasticGenann
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
John Parsons
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
teadan
John Parsons
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
teadan
Marcus Fernström
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
thermoplastics
Daniele Teti
Top Pro
•••

Supports generics

See More
Marcus Fernström
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
Daniele Teti
Top Pro
•••

Exceptional retrocompatibility

See More
Iwan Kelaiah
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
Iwan Kelaiah
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
teadan
ConfidentTartarus
Top Pro
•••

Dynamic evolution of language

See More
thermoplastics
Daniele Teti
Top Pro
•••

Supports reflection (Delphi)

See More
Daniele Teti
Top Pro
•••

Supports anonymous methods (Delphi)

See More
HideSee All
56

D

My Recommendation for D

My Recommendation for D

All
43
Experiences
2
Pros
32
Cons
8
Specs
Endi Sukaj
Steven Sagaert
Top Con
•••

Not widely used

See More
Endi Sukaj
Top Pro
•••

Provides a powerful data structure on top of C's arrays called slices

D provides a structure that builds on C's arrays called slices. A slice is a segment of an array that tracks the pointer and the length of the segment. Slices are extremely powerful because they combine the protection of knowing the length of the data with the garbage collector that manages the memory backing that data, thus avoiding most memory corruption issues. See More
qwedsa
qwedsa's Experience
HOLY CRAP I LOVE D See More
Specs
Current stable version:D 2.097.0
Site:https://dlang.org/
Latest beta version:D 2.097.1 Beta
Vester Saguban
Top Con
•••

Lack of vision

D is community-driven and lacks the support of any large corporation. While this increases the amount of talent and engineering abilities of the people working on D, it also brings a severe lack of charisma, leadership and vision. See More
Endi Sukaj
Top Pro
•••

Provides templates to support generic programming

D templates offer a clean way to support generic programming while offering the power of partial specialization. Template classes and template functions are available, along with variadic template arguments and tuples. See More
HonorableProserpina
HonorableProserpina's Experience
Nice lambda syntax See More
Vester Saguban
Top Con
•••

Poor adoption even after many years of existence

There's a widely accepted perception of D as a language that has been poorly adopted. Since adoption is driven by perception this becomes a fact. So managers and engineers start becoming nervous in adopting a language that has such a perception among the community and that has been so unsuccessful for so long. See More
Mikhail
Top Pro
•••

Easy to read and understand code

See More
Simona
OpinionatedFortuna
Top Con
•••

Failed at becoming viable alternative to C or C++

Almost as complex and convoluted as C++, but lacking in popularity or corporate adoption. See More
Martin Tschierschke
Top Pro
•••

Offers rdmd for compiled scripting

Because of the very fast compilation, D can very convinietly be used for scripting, too. No need to switch to an other language for prototyping either. See More
James Lu
Vester Saguban
Top Con
•••

All the downsides of garbage collection without any of its benefits

When D decided to implement garbage collection it instantly alienated a large community of developers (C and C++ programmers). For them, the official policy has been: "Don't want garbage collection? Use D with RAII or manual management style!". While true, it's also absolutely pointless because there's little to none support for alternate memory management styles in the standard library, which means that a new user will have to start with a language that is stripped down of the core infrastructure. On the other hand, for those people who want to use garbage collection, the implementation of it is lackluster. However, with the latest versions of the D compilers, you can now directly use C++ standard library classes like std::vector and std::queue in your D code. See More
Matthew
prohyon
Top Pro
•••

Faster than all c++ competitors

See More
James Lu
Endi Sukaj
Top Con
•••

Reference implementation is now open source

Part of the reference compiler DMD was made at Symantec, and is now open-source and available for everyone to use freely. See More
Endi Sukaj
Top Pro
•••

Unit testing built-in

D provides unittest blocks to insert code that verifies functions preform their expected behavior and document edge cases. Since these are enabled with a compiler switch, there is no need to teach new programmers how to install new libraries and import modules, instead training on test driven design can start from the very first function. See More
James Lu
Alex Libman
Top Con
•••

Now permissively licensed

See More
GenerousKutkh
Top Pro
•••

It's a state-of-art evolution of C

See More
ideasman42
Top Con
•••

Garbage Collected

While optional, this uses a garbage collected runtime. See More
Endi Sukaj
Jonathan MERCIER
Top Pro
•••

Has an open source implementation

D has at least two robust open source compilers: GDC ( gcc-based D compiler) and LDC (LLVM-based D compiler) See More
Endi Sukaj
Top Pro
•••

Extremely powerful user types

For example you can make your own type that behaves like a JavaScript variable (nice for using JSON based REST APIs) See More
Endi Sukaj
Top Pro
•••

Easy to integrate with C and C++

D practically has the same memory structure as C and C++; all D does it build a structure around that. The entire C standard library is accessible at no cost (syntactic or speed) and it's being worked on allowing the same for the C++ standard library. See More
Endi Sukaj
Top Pro
•••

Automatic & manual memory Management

D uses a garbage collector to manage memory. This eliminates the error prone process of manually allocating memory in languages that don't have a garbage collector. Despite this, the new and delete operations can be overridden for some classes to allow custom allocation. See More
moytrage
Top Pro
•••

Compile-time functions

D can run powerful functions totally at compile time. Lots of standard library code is implemented in such a way that it can be run at compile time. Almost any computational work can be done at compile time. See More
Monika
James Lu
moytrage
Top Pro
•••

Very fast compilation

Huge project with dozens of source files like "dlangui" compiles in seconds. The DMD compiler can compile its own standard library, code generation backend (dmc++), and frontend from scratch within three minutes. See More
Endi Sukaj
Top Pro
•••

Provable purity and immutability

The compiler can check that functions don't have side effects, extremely important for functional programming in concurrent scenarios, and can check immutability. Therefore, the compiler will prove that your programs are functionally pure and respect immutable data, if you want it to. See More
moytrage
Top Pro
•••

Lots of powerful meta programming features

In D almost anything can be done in field of meta programming and self-reflection, there are many features in the language that allow easily to get information about anything that happens in the code. See More
Mikhail
Top Pro
•••

Industrial quality

See More
moytrage
Top Pro
•••

Memory safe language subset - SafeD

SafeD is a possibility for compiler to check functions not to use unsafe operations that can lead to memory corruptions, also bounds of structures are checked. Thus SafeD almost guaranties that your code will not corrupt memory and crash. See More
moytrage
Top Pro
•••

Great packaging and build system DUB

DUB simplifies compiling/building project of any complexity by specifying all project settings inside JSON build file, there you can list all source files and project folders, also list all necessary dependency packages and their versions. All public DUB packages are stored in DUB online registry (https://code.dlang.org/) and available for direct usage in your code. See More
Mikhail
Top Pro
•••

Built-in Unicode support

See More
Mikhail
Top Pro
•••

Compile-time Function Execution

See More
Mikhail
Top Pro
•••

Designed for concurrency and parallelism

Supports first-class functionality for both concurrency and parallelism, offered as part of the standard library. See More
moytrage
Top Pro
•••

Has a very rich standard library Phobos

Phobos library is a part of standard compiler package. Phobos implements everything that standard C++ library has including structures and algorithms similar to C++ STL, also many extra features that you can find in C++ boost. See More
moytrage
Top Pro
•••

Powerful mixins mechanism

D has mixins that allow to generate and embed any code at compile time. This is a powerful replacement for macros in C++. See More
Mikhail
Top Pro
•••

Has an improved C subset

With few exceptions, D will either compile C code to work exactly as when compiled as C, or it won't compile - it won't quietly change the semantics of C code and give unexpected results. This means that D contains an improved C, as it fails compilation where type safety is missing in C. This allows learning the same machine operations available in C and other low-level languages. See More
Mikhail
Top Pro
•••

Asynchronous I/O that doesn’t get in your way

Because all types can be treated as objects, all files can call functions in the same manner -- even stdin and stdout. stdout.writeln(); stdin.readln(); file.writeln(); file.readln(); See More
Mikhail
Top Pro
•••

Doesn't force you to deal with memory management

When you're just starting out, dealing with manual memory management and its bugs is a huge pain! D is garbage collected by default, which removes a huge class of things that could go wrong. And later on, if you decide you don't want or need the GC, you can turn it off. See More
Mikhail
Top Pro
•••

Supports calling functions from types in an object-oriented manner.

if (exists(file)) {} may be written as if (file.exists) {}. writeln(file); may be written as file.writeln(); isDivisibleBy(10, 2); may be written as 10.isDivisibleBy(2); writeln(isEven(add(5, 5))); may be written as 5.add(5).isEven().writeln(); See More
moytrage
Top Pro
•••

Implements all wanted features that C++ was missing

D was created as an improvement and replacement for C++. D implements all features that were long wanted and missing in C++, also all drawbacks of C++ were fixed. See More
James Lu
Top Pro
•••

Generative programming

mixin template, UDAs, templates, -- these turn the compiler into a code generation tool that writes code for you See More
Endi Sukaj
Top Pro
•••

Easy and powerful module systems

Since source files have a one-to-one correspondence with modules, you don't have to #include the text of a file of declarations, you only need to import the module. This way, there's no need to worry about importing the same module several times and no need to wrap header files with #ifndef/#endif. See More
Endi Sukaj
Top Pro
•••

Easy to make reusable code by using ranges

D uses a type called range which provides a common interface to a sequence of values, therefore making it simpler to write code that works on arbitrary data, thereby making it reusable. See More
Mikhail
Top Pro
•••

Static with type inference

For a new user adding types can feel tedious, and takes focus off the meaning of the code, but they are also important for checking logic. D provides static types, and a good system to infer types, so types are checked when calling functions, but do not need to be specified everywhere, making it feel more dynamic. See More
HideSee All
--

V

My Recommendation for V

My Recommendation for V

All
20
Experiences
5
Pros
11
Cons
3
Specs
teadan
Monika
prohyon
Top Pro
•••

Fast like C

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

The author of the language is an expert con artist

The only reason Vlang has any kind of funding is that it has a lot of dummy repositories that promise a lot of performance to the user (like Gitly, UI, Vinix, Viscord, Vbrowser, DOOM written in V, gg ...), when there is nothing to deliver in the first place. The author of V has a history of overpromising things, has claimed that the language has insane features when it didn't. Having a plain look at their README will give the right idea for someone with programming experience. See More
TruthfulKunapipi
TruthfulKunapipi's Experience
V has around a hundred releases (https://github.com/vlang/v/releases) is clearly not vaporware or a con. Slant is allowing lies, disinformation, defamation by competitors against the author. The language has hundreds of contributors and a book written on it (https://www.packtpub.com/product/getting-started-with-v-programming/9781839213434). See More
Specs
Platforms:Windows, Linux, Mac
License:MIT
Site:vlang.io, https://github.com/vlang
Developer:Alexander Medvednikov
See All Specs
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
FascinatingAdapa
FascinatingAdapa's Experience
Crazies are being allowed to do insults, slander, and personal vendettas against developers. A language review and personal insults or false accusations are completely different things. Looks like the author of V will be able to sue Slant. People are discussing how clearly unfair the handling is of this case and the weird bias against the V 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
FascinatingAdapa
DynamicSif
Top Con
•••

Highly questionable "Fake it till you make it" marketing

Large parts of what they describe as their "key features" on their website is actually goals, not something they currently deliver. It's also something they never will deliver, because it's impossible to do so. The goals themselves are hyped and unrealistic, and until they have a working prototype delivering the claims (which is largely considered to be impossible by the community), the claims are just lies. See More
FantasticXquic
FantasticXquic's Experience
Easier to understand, read, and maintain. Very fast, like C++. See More
Monika
prohyon
Top Pro
•••

Generics

V has generics. See More
UnderstandingDaichinTengri
UnderstandingDaichinTengri's Experience
The author of V is a con artist skilled at manipulating users into thinking that it is the fastest language or something that doesn't need any dependencies. There are a lot of DUMMY repositories in the language organization that mocks already existing services/apps, while promising that these outperforms those apps just because it is written in V. See More
IntelligentMwari
Top Pro
•••

Safety

V is very safe. See More
prohyon
prohyon's Experience
Fast compilation time. See More
Simona
DedicatedSet
Top Pro
•••

Sum types

V has Sum Types. 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
VivaciousVainamoinen
Top Pro
•••

C Interop

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

Clear syntax

Highly understandable language. See More
Simona
CromulentFides
Top Pro
•••

Inline assembly

Can add Assembly code. See More
Simona
CromulentFides
Top Pro
•••

Cross-platform

Compile to many OSes. See More
HideSee All
--

PureBasic

My Recommendation for PureBasic

My Recommendation for PureBasic

Add Video or Image
All
4
Pros
1
Cons
2
Specs
Simona
Top Pro
•••

Standalone executables

Can create single file executables. See More
InquisitiveOzwiena
Top Con
•••

Limited free version

Free version is limited to 800 lines and can not create DLL's. See More
Specs
Current stable version:5.71
Platforms:Windows, Linux, Mac
Simona
Top Con
•••

Slightly bogged syntax

Sometimes the syntax bogs down, just a little with long procedure names and such. A truly minor issue. See More
HideSee All
--

Ark

My Recommendation for Ark

My Recommendation for Ark

Add Video or Image
Hide
--

Crystal

My Recommendation for Crystal

My Recommendation for Crystal

Add Video or Image
All
10
Experiences
1
Pros
5
Cons
3
Specs
VersatileRadegast
Top Con
•••

A language only Ruby fans can love

Ruby-ish language. See More
ConfidentJuventas
Top Pro
•••

Fast performance

See More
SuccessfulTranquillitas
SuccessfulTranquillitas's Experience
i've used in developing web service for mobile app See More
Specs
Platforms:Linux, BSD, OSX
Website:https://crystal-lang.org/
VersatileRadegast
Top Con
•••

Not Cross-platform

No official Windows support. See More
ConfidentJuventas
Top Pro
•••

Elegant syntax as Ruby

See More
PersonablePandia
Top Con
•••

Slow compilation

See More
ConfidentJuventas
Top Pro
•••

Compiles to native binary

See More
Monika
ConfidentJuventas
Top Pro
•••

Easy to learn

Easy for beginners and easy implementation. See More
ConfidentJuventas
Top Pro
•••

Has co-routine

See More
HideSee All
--

OCaml

My Recommendation for OCaml

My Recommendation for OCaml

Add Video or Image
All
11
Pros
9
Cons
1
Specs
VersatileRadegast
Top Con
•••

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

Lacks native support for Windows systems. See More
schlaumeier
Kristaps
Top Pro
•••

Very capable type system helps avoid errors

The very strong yet flexible (you do not actually write the types, the compiler determines them) helps to prevent type related errors. See More
Specs
Current stable version:4.0.7
License:LGPL version 2.1
Site:http://ocaml.org
Price:Open source (Free)
See All Specs
Kristaps
schlaumeier
Top Pro
•••

Very fast compiled code

Almost in the C league (might in the end depend on the subject). See More
LivelyTaranis
Top Pro
•••

Actively-developed functional programming language at the forefront of research

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

One of the best for writing compilers

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

Encourages functional style

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

Sophisticated and easy-to-use package manager

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

Practical multi paradigm language

Ocaml is a functional language in first place but also supports an pragmatic imperative programming style (for..loops, etc) and objects. See More
LivelyTaranis
Top Pro
•••

Stable syntax

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

Strong editor integration

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