Soumettre la recherche
Mettre en ligne
Introduction to Nim
•
5 j'aime
•
1,213 vues
Fred Heath
Suivre
Talk given at UnifiedDiff 10/06/2016
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 33
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
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
Recommandé
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
Contenu connexe
Tendances
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
Tendances
(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
Similaire à 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
Similaire à 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
Plus de 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
Plus de 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
Dernier
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Delhi Call girls
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
Allon Mureinik
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
BookNet Canada
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
Softradix Technologies
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
Memoori
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Radu Cotescu
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Safe Software
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
carlostorres15106
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
Pooja Nehwal
How to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
naman860154
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
Delhi Call girls
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
Paola De la Torre
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
ThousandEyes
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
soniya singh
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Delhi Call girls
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
Padma Pradeep
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
Mark Billinghurst
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
ThousandEyes
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Katpro Technologies
Dernier
(20)
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
How to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
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
Télécharger maintenant