dark mode light mode Search Menu


Nim Website

It can be used for scripting, games, compilers, operating systems, and scientific computing. For example, you can use Nim to write your own operators, macros, and templates.

The language also provides a range of programming approaches, from imperative to object oriented to functional to metaprogramming (where a program can manipulate another program).

Where Rust, another recent language, is designed to replace C and C++ by addressing their shortcomings, Nim’s ambitions are to replace C, C++, and Lua. You also might add Python which is often used in scientific computing.

The language is designed to be efficient, elegant, and highly expressive.

What Makes Nim Special?

Nim is a relatively new language created by Andreas Rumpf and released in 2008. It was originally called Nimrod. Rumpf created the language in response to existing languages which required large virtual machines to ship with code, were too dynamic, and compiled their code at run time.

Nim code compiles to C code to provide cross-platform compatability without virtual machine software. Instead of evaluating code when run, Nim code can be compiled into byte code to run faster. Because Nim is compiled to C, the language includes a foreign function interface (FFI) to include C code within Nim code. Programmers also can compile their Nim code to Objective C, for iOS devices.

The broad range of features combined with a mostly simple syntax makes Nim a really interesting language for programmers. For example, despite its flexibility, the language uses indentation like Python and Haskell to let the compiler know how sections of code are related.

Nim also has an interesting flexible notation for writing code. The language uses traditional method or function notation f(x, y) where f is the function name and (x,y) are potential input arguments. However, you also can write f x,y or, if there are no arguments, f. Among other benefits, this flexible notation helps the compiler target Nim code to be converted to JavaScript. The language does keep track of function names, including capitalization, to avoid name conflicts.

It’s also possible to use templates to teach the Nim compiler how to be efficient when compiling your code, for example, to speed up processing of boolean (true or false, on or off) logic and process integer and numbers.

Nim also lets you do parallelism, the simultaneous execution of multiple calculations at the same time. Garbage collection, a key function for memory management in the computer, can be done with and without distinct and separate pointers. The language also is designed to scale with built in sets, strings, enumerations, objects, and arrays.

How is Nim Used?

As a relatively new language in early stages of development, Nim is used in a wide range of places where programmers want to test its features and suitability. This can include scientific computing, creating operating systems, games, scripting, and compilers. While Nim does not yet have the broad adoption of older languages, it does have an active and enthusiastic community. And the flexibility of the language should attract more programmers and more implementations in the future.

Learn More



Tutorial of the Nim Language

Andreas Rumpf presentation at MIT describing Nimrod, the original name for Nim. Compares and contrasts Nim with other languages.

Nim Questions on Quora


Nim versus Rust


What is Special About Nim?


Related Posts