July 20–24, 2015
Portland, OR

Nim - The ultimate introduction

Andreas Rumpf (3DICC)
1:30pm–5:00pm Monday, 07/20/2015
Scale D136
Average rating: *****
(5.00, 3 ratings)

Prerequisite Knowledge

Basic programming knowledge is requried, some knowledge about Abstract Syntax Trees is helpful.

Materials or downloads needed in advance

Attendees will need a laptop.


Nim strives to be complete rather than simplistic. This means most modern features that you have come to expect like type classes, generics, iterators, and hygienic macros can be found in Nim.

In this tutorial I will give a basic introduction to the Nim programming language, as well as a bit of the philosophy behind the language’s design, followed by a tour through the standard library. Then I will focus on the following topics: meta programming; Nim’s take on concurrency and parallelism; and foreign function interface.

You will learn:

  • How to install Nim and compile simple programs
  • How to use Nimble, Nim’s package manager
  • The basics of the language including its safe and unsafe subsets
  • Novel ideas on how to improve the state of the art for systems programming
  • How c2nim, Nim’s binding generator, makes interfacing with C++ quite easy
  • We will see how Nim’s meta programming capabilities can be used to help us in debugging or testing Nim programs
  • We will cover how Nim’s effect system would have prevented the famous Shellshock bug from occurring
Photo of Andreas Rumpf

Andreas Rumpf


Andreas Rumpf is the creator of the Nim programming language, which is growing slowly but steadily. He is a software engineer working at 3DICC to incorporate Nim into their collaborative distributed 3D system. He has programmed in various languages over the years (including quite obscure ones) without being satisfied with any of them. Andreas holds a degree in computer science from the University of Kaiserslautern.