Submit Search
Upload
Introduction to Nim
•
5 likes
•
1,213 views
Fred Heath
Follow
Talk given at UnifiedDiff 10/06/2016
Read less
Read more
Technology
Report
Share
Report
Share
1 of 33
Download now
Download to read offline
Recommended
My First Source Code
My First Source Code
enidcruz
Microprocessors and interfacing d.a.godse a.p.godse
Microprocessors and interfacing d.a.godse a.p.godse
Imdad LaLbaqo
Effecting Pure Change - How anything ever gets done in functional programming...
Effecting Pure Change - How anything ever gets done in functional programming...
Tech Triveni
UTAU DLL voicebank and ulauncher
UTAU DLL voicebank and ulauncher
hunyosi
Javantura v3 - Just say it – using language to communicate with the computer ...
Javantura v3 - Just say it – using language to communicate with the computer ...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
clonehd01
clonehd01
Luiz Francisco Bozo
Scaling antispam solutions with Puppet
Scaling antispam solutions with Puppet
Giovanni Bechis
serverstats
serverstats
Ben De Koster
Recommended
My First Source Code
My First Source Code
enidcruz
Microprocessors and interfacing d.a.godse a.p.godse
Microprocessors and interfacing d.a.godse a.p.godse
Imdad LaLbaqo
Effecting Pure Change - How anything ever gets done in functional programming...
Effecting Pure Change - How anything ever gets done in functional programming...
Tech Triveni
UTAU DLL voicebank and ulauncher
UTAU DLL voicebank and ulauncher
hunyosi
Javantura v3 - Just say it – using language to communicate with the computer ...
Javantura v3 - Just say it – using language to communicate with the computer ...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
clonehd01
clonehd01
Luiz Francisco Bozo
Scaling antispam solutions with Puppet
Scaling antispam solutions with Puppet
Giovanni Bechis
serverstats
serverstats
Ben De Koster
What is python
What is python
EU Edge
Sol8
Sol8
University Of Lahore
zshと仮想端末マネージャで快適ターミナル生活
zshと仮想端末マネージャで快適ターミナル生活
Nobutoshi Ogata
Using the Command Line with Magento
Using the Command Line with Magento
Matthew Haworth
Bash Scripting
Bash Scripting
Vincent Claes
Sol9
Sol9
University Of Lahore
Game Analytics Cluster Scheduler
Game Analytics Cluster Scheduler
cmmdevries
File Handling Program
File Handling Program
တမန္ေတာ္ က်ဴးပါက်ဲ
App-o-Lockalypse now!
App-o-Lockalypse now!
Oddvar Moe
completion_proc and history
completion_proc and history
Nobuhiro IMAI
JSUG - Scala Lightning Talk by Michael Greifeneder
JSUG - Scala Lightning Talk by Michael Greifeneder
Christoph Pickl
Python para web - Utilizando micro-framework Flask - PUG-MA
Python para web - Utilizando micro-framework Flask - PUG-MA
Herson Leite
Powerpoint switch1
Powerpoint switch1
jaypeebala
Multithreading in PHP
Multithreading in PHP
dimitriyremerov
関西Vim勉強会#5 vimrcの書き方
関西Vim勉強会#5 vimrcの書き方
tsukkee _
dplyr
dplyr
Romain Francois
Seu primeiro loop com Python AsyncIO - TDC 2016
Seu primeiro loop com Python AsyncIO - TDC 2016
Carlos Maniero
Groovy
Groovy
Pascal Nsue Engonga
Memory Management in WordPress
Memory Management in WordPress
Konstantin Kovshenin
A toolbelt of seasoned bug hunter - Damir Zekic
A toolbelt of seasoned bug hunter - Damir Zekic
Ruby Meditation
Dts x dicoding #2 memulai pemrograman kotlin
Dts x dicoding #2 memulai pemrograman kotlin
Ahmad Arif Faizin
Lesson 10
Lesson 10
Alex Honcharuk
More Related Content
What's hot
What is python
What is python
EU Edge
Sol8
Sol8
University Of Lahore
zshと仮想端末マネージャで快適ターミナル生活
zshと仮想端末マネージャで快適ターミナル生活
Nobutoshi Ogata
Using the Command Line with Magento
Using the Command Line with Magento
Matthew Haworth
Bash Scripting
Bash Scripting
Vincent Claes
Sol9
Sol9
University Of Lahore
Game Analytics Cluster Scheduler
Game Analytics Cluster Scheduler
cmmdevries
File Handling Program
File Handling Program
တမန္ေတာ္ က်ဴးပါက်ဲ
App-o-Lockalypse now!
App-o-Lockalypse now!
Oddvar Moe
completion_proc and history
completion_proc and history
Nobuhiro IMAI
JSUG - Scala Lightning Talk by Michael Greifeneder
JSUG - Scala Lightning Talk by Michael Greifeneder
Christoph Pickl
Python para web - Utilizando micro-framework Flask - PUG-MA
Python para web - Utilizando micro-framework Flask - PUG-MA
Herson Leite
Powerpoint switch1
Powerpoint switch1
jaypeebala
Multithreading in PHP
Multithreading in PHP
dimitriyremerov
関西Vim勉強会#5 vimrcの書き方
関西Vim勉強会#5 vimrcの書き方
tsukkee _
dplyr
dplyr
Romain Francois
Seu primeiro loop com Python AsyncIO - TDC 2016
Seu primeiro loop com Python AsyncIO - TDC 2016
Carlos Maniero
Groovy
Groovy
Pascal Nsue Engonga
Memory Management in WordPress
Memory Management in WordPress
Konstantin Kovshenin
A toolbelt of seasoned bug hunter - Damir Zekic
A toolbelt of seasoned bug hunter - Damir Zekic
Ruby Meditation
What's hot
(20)
What is python
What is python
Sol8
Sol8
zshと仮想端末マネージャで快適ターミナル生活
zshと仮想端末マネージャで快適ターミナル生活
Using the Command Line with Magento
Using the Command Line with Magento
Bash Scripting
Bash Scripting
Sol9
Sol9
Game Analytics Cluster Scheduler
Game Analytics Cluster Scheduler
File Handling Program
File Handling Program
App-o-Lockalypse now!
App-o-Lockalypse now!
completion_proc and history
completion_proc and history
JSUG - Scala Lightning Talk by Michael Greifeneder
JSUG - Scala Lightning Talk by Michael Greifeneder
Python para web - Utilizando micro-framework Flask - PUG-MA
Python para web - Utilizando micro-framework Flask - PUG-MA
Powerpoint switch1
Powerpoint switch1
Multithreading in PHP
Multithreading in PHP
関西Vim勉強会#5 vimrcの書き方
関西Vim勉強会#5 vimrcの書き方
dplyr
dplyr
Seu primeiro loop com Python AsyncIO - TDC 2016
Seu primeiro loop com Python AsyncIO - TDC 2016
Groovy
Groovy
Memory Management in WordPress
Memory Management in WordPress
A toolbelt of seasoned bug hunter - Damir Zekic
A toolbelt of seasoned bug hunter - Damir Zekic
Similar to Introduction to Nim
Dts x dicoding #2 memulai pemrograman kotlin
Dts x dicoding #2 memulai pemrograman kotlin
Ahmad Arif Faizin
Lesson 10
Lesson 10
Alex Honcharuk
Introduction to rust: a low-level language with high-level abstractions
Introduction to rust: a low-level language with high-level abstractions
yann_s
C Tutorials
C Tutorials
Sudharsan S
为什么 rust-lang 吸引我?
为什么 rust-lang 吸引我?
勇浩 赖
Coffee scriptisforclosers nonotes
Coffee scriptisforclosers nonotes
Brandon Satrom
Code as data as code.
Code as data as code.
Mike Fogus
Python
Python
대갑 김
Python programming lab14
Python programming lab14
profbnk
'C' language notes (a.p)
'C' language notes (a.p)
Ashishchinu
Problemas de Arreglos en c++
Problemas de Arreglos en c++
Manfred Ariel Martinez Bastos
5 c control statements looping
5 c control statements looping
MomenMostafa
Go Lang Tutorial
Go Lang Tutorial
Wei-Ning Huang
Perkenalan ReasonML
Perkenalan ReasonML
Riza Fahmi
Libtcc and gwan
Libtcc and gwan
DaeMyung Kang
Libtcc and gwan
Libtcc and gwan
DaeMyung Kang
Intro to c programming
Intro to c programming
Prabhu Govind
Introduction to ReasonML
Introduction to ReasonML
Riza Fahmi
Marrow: A Meta-Framework for Python 2.6+ and 3.1+
Marrow: A Meta-Framework for Python 2.6+ and 3.1+
ConFoo
Programming For Designers V3
Programming For Designers V3
sqoo
Similar to Introduction to Nim
(20)
Dts x dicoding #2 memulai pemrograman kotlin
Dts x dicoding #2 memulai pemrograman kotlin
Lesson 10
Lesson 10
Introduction to rust: a low-level language with high-level abstractions
Introduction to rust: a low-level language with high-level abstractions
C Tutorials
C Tutorials
为什么 rust-lang 吸引我?
为什么 rust-lang 吸引我?
Coffee scriptisforclosers nonotes
Coffee scriptisforclosers nonotes
Code as data as code.
Code as data as code.
Python
Python
Python programming lab14
Python programming lab14
'C' language notes (a.p)
'C' language notes (a.p)
Problemas de Arreglos en c++
Problemas de Arreglos en c++
5 c control statements looping
5 c control statements looping
Go Lang Tutorial
Go Lang Tutorial
Perkenalan ReasonML
Perkenalan ReasonML
Libtcc and gwan
Libtcc and gwan
Libtcc and gwan
Libtcc and gwan
Intro to c programming
Intro to c programming
Introduction to ReasonML
Introduction to ReasonML
Marrow: A Meta-Framework for Python 2.6+ and 3.1+
Marrow: A Meta-Framework for Python 2.6+ and 3.1+
Programming For Designers V3
Programming For Designers V3
More from Fred Heath
Agile software requirements management with Impact Mapping and BDD
Agile software requirements management with Impact Mapping and BDD
Fred Heath
Nim programming language - DevFest Berlin 2019
Nim programming language - DevFest Berlin 2019
Fred Heath
USP Estimation - SwanseaCon 2016
USP Estimation - SwanseaCon 2016
Fred Heath
Port80: the uncertainty principle
Port80: the uncertainty principle
Fred Heath
Agile diff usp
Agile diff usp
Fred Heath
Design Patterns the Ruby way - ConFoo 2015
Design Patterns the Ruby way - ConFoo 2015
Fred Heath
User Story Point estimation method at ConFoo 2015
User Story Point estimation method at ConFoo 2015
Fred Heath
More from Fred Heath
(7)
Agile software requirements management with Impact Mapping and BDD
Agile software requirements management with Impact Mapping and BDD
Nim programming language - DevFest Berlin 2019
Nim programming language - DevFest Berlin 2019
USP Estimation - SwanseaCon 2016
USP Estimation - SwanseaCon 2016
Port80: the uncertainty principle
Port80: the uncertainty principle
Agile diff usp
Agile diff usp
Design Patterns the Ruby way - ConFoo 2015
Design Patterns the Ruby way - ConFoo 2015
User Story Point estimation method at ConFoo 2015
User Story Point estimation method at ConFoo 2015
Recently uploaded
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
Enterprise Knowledge
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
hans926745
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
Khem
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
The Digital Insurer
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Martijn de Jong
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
HampshireHUG
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Maria Levchenko
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
apidays
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Katpro Technologies
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
The Digital Insurer
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Radu Cotescu
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
Pixlogix Infotech
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Safe Software
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Puma Security, LLC
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
UK Journal
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
Recently uploaded
(20)
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Introduction to Nim
1.
The Nim programming language unified.diff
2.
Disclaimer
3.
Here be contrary opinions!
4.
The Joy of
Ruby 5.times { print "Odelay!" } exit unless restaurant.menu.include? "kebab" meringue = ['egg', 'sugar', 'milk'].reduce &:+
5.
90% = good
enough
6.
10% = performance || concurrency
|| parallelism
7.
The trouble with
C(++) ❏ int (*(*func())[10])() ❏ 1 / 0; ❏ char s[ ] == char *s == std::string == LPSTR == wchar ❏ int myInt = 0; fileStream.read (reinterpret_cast<char*>(&myInt), sizeof(int)); ❏ void myfunc() { char *c = malloc(16); }
8.
9.
Hello world! puts "hello
world!" Ruby print "hello world!" Python #include <iostream> C++ int main() { std::cout << "hello world!n"; return 0; } fn main() { Rust println!("Hello world!"); } package main Go import "fmt" func main() { fmt.Println("hello world!") }
10.
Language bureaucracy public class
HelloWorld { Java public static void main(String[] args) { System.out.println("Hello, World"); } } using System; C# namespace HelloWorld { class Hello { static void Main() { Console.WriteLine("Hello World!"); } } }
11.
Quest for a
new system-level language Requirements: ● Safe ● Portable ● Performant ● Expressive ● Elegant Candidates: 1. Rust 2. Go 3. Nim
12.
© Nim In
Action, Dominik Picheta, Manning Publications, 2016 Portability
13.
● Nim →
Backend (C, JS) ● Backend → Nim (C, JS) ● c2nim = Parse a C file and generate equivalent Nim code Interoperability
14.
Statically typed +
variable state
15.
● Statically typed
/ type inference ● Immutable / mutable variables ● whitespace-significant Types and variables
16.
● Non-tracing GC ●
Can be customised ○ GC_setMaxPause(MaxPauseInUs: int) ○ GC_step(us: int, strongAdvice = false, stackSize = -1) ● Can be turned off ○ GC_disable() Garbage Collection
17.
18.
Functions
19.
Functions: UFC
20.
Function: overloading
21.
Generics
22.
First-class Functions
23.
● First-class citizens ●
Closures ● Implicit returns ● Immutable arguments ● Overloading ● Uniform Function Call ● Style-indifferent Functions
24.
Modules person.nim main.nim
25.
● Arrays ● Sequences ●
Objects ● Tuples ● Sets Structured Types
26.
Modules
27.
Functional programming Side-effect checking Built-in
functional style
28.
Templates as DSLs
29.
Templates can access
AST
30.
Macros
31.
Threads
32.
NimScript
33.
Any questions? Ping me
at: FredAtBootstrap fred@bootstrap.me.uk
Download now