Nim

Join the Nim Track
Nim is a system and applications programming language that is statically typed and compiled, designed to be efficient, expressive, and elegant. Being general-purpose it can fill a wide range of uses but has found a niche in game development and systems programming including embedded systems.
Track mentors

2 Mentors

Our mentors are friendly, experienced Nim developers who will help teach you new techniques and tricks.
Track students

104 Students

Join hundreds of students who have enjoyed learning and improving their skills by taking this track.
Track exercises

32 Exercises

Hundreds of hours have gone into making these exercises fun, useful, and challenging to help you enjoy learning.

About Nim

Nim is a general-purpose language designed and developed by Andreas Rumpf and first appearing in 2008. Designed to be efficient, expressive, and elegant. Nim is statically typed and compiled but lets you write elegant code that runs efficiently. Nim lets you target many platforms by compiling code to C, C++, JavaScript, or Objective-C. Nim syntax is similar to Python and shares many of Python's characteristics but draws inspiration from a number of languages, such as C, C++, C#, Lisp, Ada, Go, Oberon, and others.

As Nim is a general-purpose language it can be used in various places but has been filling a real niche in the area of Game development and Systems Programming including Embedded systems.

Nim gives you a lot of the convenience you find in Python and other languages, like easy to read syntax, a package management system for using new libraries in your projects, and user-friendly tracebacks for debugging errors.

Nim gives you the speed and portability of C, but with a high-performance garbage-collector and elegant syntax that makes the language very approachable to new people. Nim also gives you control, letting you change the garbage-collector or turn it off completely giving you the option to manage memory yourself. You have a variety of programming paradigms and abstraction layers with Nim.

Join the Nim track
proc helloWorld*(name="World"): string =
  "Hello, " & name & "!"

let greeting = helloWorld("Exercism")
echo greeting

A tremendous learning opportunity to explore the depth of your own knowledge

Exercism is fantastic in learning new languages but that is not the extent of it. If you are a "more experienced" programmer you may have encountered impostor syndrome: the idea you don't really know what you think you know. Exercism lets you solve problems and put them in the space of open feedback which is a tremendous learning opportunity to explore the depth of your own knowledge. Even if you have been programming in a language for awhile it is worth checking into Exercism to see where you stand with current implementation practices.

Relaxed. Encouraging. Supportive.

Meet the Nim Track mentors

Once you join the Nim language track, you will receive support and feedback from our team of mentors. Here are the bios of a few of the mentors of this track.

Avatar of Juan Carlos

Juan Carlos https://github.com/juancarlospaco

I code Python and Nim.
Avatar of Daniil Yarancev

Daniil Yarancev https://github.com/Yardanico

I'm a student who loves to use Nim. It is a very unique and powerful language which contains a lot of features. Sometimes you can even forget that you're writing in a compiled language rather than in a scripting one!
Fun. Challenging. Interesting

Community-sourced Nim exercises

These are a few of the 32 exercises on the Nim track. You can see all the exercises here.

Collatz Conjecture
easy
loops
math
Queen Attack
easy
arrays
exception handling
games
logic
matrices
Triangle
easy
classes
conditionals
Two Fer
easy
conditionals
optional values
text formatting
Grade School
easy
conditionals
filtering
integers
lists
sorting
strings
classes
Gigasecond
easy
dates
time
Passionate. Knowledgeable. Creative.

Meet the Nim Track maintainers

The Nim Maintainers are the brains behind the Nim Track. They spend their spare time creating interesting and challenging exercises that we can all learn from. We are incredibly grateful for their hard work. Here are the bios of a few of the maintainers of this track.

Anthony Scotti 128bit.io

With a love of learning new languages, Nim has caught my eye and I want to share the experience of learning it with others.

Get started with the Nim track. As with everything on Exercism, it's 100% free!

Join the Nim Track