Suche senden
Hochladen
Introduction to Nim
•
5 gefällt mir
•
1,212 views
Fred Heath
Folgen
Talk given at UnifiedDiff 10/06/2016
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 33
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
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
Empfohlen
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
Weitere ähnliche Inhalte
Was ist angesagt?
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
Was ist angesagt?
(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
Ähnlich wie 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
Ähnlich wie 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
Mehr von 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
Mehr von 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
Kürzlich hochgeladen
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
Dubai Multi Commodity Centre
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
gvaughan
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
Curtis Poe
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
Lorenzo Miniero
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
BookNet Canada
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
Sergiu Bodiu
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
LoriGlavin3
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
Slibray Presentation
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Mark Simos
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
ScyllaDB
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
BookNet Canada
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
Enterprise Knowledge
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
Sri Ambati
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
Scott Keck-Warren
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
NavinnSomaal
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Zilliz
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
Lonnie McRorey
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
Pixlogix Infotech
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
Addepto
Kürzlich hochgeladen
(20)
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
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
Jetzt herunterladen