D Programming Jonathan MERCIER Introduction Object Functional Meta-programming Parallelism Ressource Management Contract System and Safe Code Reference and pointer Generics Inference Loops Functions Debugs Versions Requirement Editors Basics My first D program Types Arrays String and characters Const and Immutable Input/Output Algorithm Structure and Class Template Miscellanous Let start it! GTK D . . D Programming In nutshell Jonathan MERCIER December 9, 2012 . . 1/122 . D Programming . . Forward
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
.
......
D ProgrammingIn nutshell
Jonathan MERCIER
December 9, 2012
. .. 1/122.
D Programming .
.
.. . . Forward
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Plan.....1 Introduction
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
...3 GTK D
...4 Thanks To. .. 2/122. .. 2/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Before starting
. .. 3/122. .. 3/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Why a new language?
.Few significant dates..
......
C++ 1983
Java 1990Python 1995Ruby 1995
And now?
. .. 4/122. .. 4/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Why a new language?
.Few significant dates..
......
C++ 1983Java 1990
Python 1995Ruby 1995
And now?
. .. 4/122. .. 4/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Why a new language?
.Few significant dates..
......
C++ 1983Java 1990Python 1995
Ruby 1995
And now?
. .. 4/122. .. 4/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Why a new language?
.Few significant dates..
......
C++ 1983Java 1990Python 1995Ruby 1995
And now?
. .. 4/122. .. 4/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Why a new language?
.Few significant dates..
......
C++ 1983Java 1990Python 1995Ruby 1995
And now?
. .. 4/122. .. 4/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
What is D programming?
D is a modern language programming inspired by:C++JavaHaskellPythonRuby
. .. 5/122. .. 5/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Why a new language?
.D Combines..
......
Modeling Power
Modern ConvenienceNative Efficiency
. .. 6/122.. .. 6/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Why a new language?
.D Combines..
......
Modeling PowerModern Convenience
Native Efficiency
. .. 6/122.. .. 6/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Why a new language?
.D Combines..
......
Modeling PowerModern ConvenienceNative Efficiency
. .. 6/122.. .. 6/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Plan.....1 Introduction
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
...3 GTK D
...4 Thanks To. .. 7/122.. .. 7/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Object
.
......
Interface..
1 interface foo { …}
class..
1 class bar { …}
inheritance..
1 class bar: foo { …}
multi class inheritance not allowed, instead usedinterface.
. .. 8/122.. .. 8/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Object
.
......
Interface..
1 interface foo { …}
class..
1 class bar { …}
inheritance..
1 class bar: foo { …}
multi class inheritance not allowed, instead usedinterface.
. .. 8/122.. .. 8/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Object
.
......
Interface..
1 interface foo { …}
class..
1 class bar { …}
inheritance..
1 class bar: foo { …}
multi class inheritance not allowed, instead usedinterface.
. .. 8/122.. .. 8/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Object
.
......
Interface..
1 interface foo { …}
class..
1 class bar { …}
inheritance..
1 class bar: foo { …}
multi class inheritance not allowed, instead usedinterface.
. .. 8/122.. .. 8/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Plan.....1 Introduction
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
...3 GTK D
...4 Thanks To. .. 9/122.. .. 9/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Functional
.
......
Data immutability
..1 immutable int[] a = [ 4, 6, 1, 2];
Pure functions..
1 pure int square(int x) { return x * x; }
Lambda functions..
1 a.sort!( (x,y) => x < y ); // [ 1, 2, 4, 6 ]
. .. 10/122.. .. 10/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Functional
.
......
Data immutability
..1 immutable int[] a = [ 4, 6, 1, 2];
Pure functions..
1 pure int square(int x) { return x * x; }
Lambda functions..
1 a.sort!( (x,y) => x < y ); // [ 1, 2, 4, 6 ]
. .. 10/122.. .. 10/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Functional
.
......
Data immutability
..1 immutable int[] a = [ 4, 6, 1, 2];
Pure functions..
1 pure int square(int x) { return x * x; }
Lambda functions..
1 a.sort!( (x,y) => x < y ); // [ 1, 2, 4, 6 ]
. .. 10/122.. .. 10/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Plan.....1 Introduction
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
...3 GTK D
...4 Thanks To. .. 11/122.. . .. 11/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Meta-programming
.Combination of..
......
templates
compile time function executiontuplesstring mixins
. .. 12/122.. . .. 12/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Meta-programming
.Combination of..
......
templatescompile time function execution
tuplesstring mixins
. .. 12/122.. . .. 12/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Meta-programming
.Combination of..
......
templatescompile time function executiontuples
string mixins
. .. 12/122.. . .. 12/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Meta-programming
.Combination of..
......
templatescompile time function executiontuplesstring mixins
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
...3 GTK D
...4 Thanks To. .. 14/122.. . .. 14/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Parallelism
.
......
module to use..
1 import std.parallelism;
parallel loop
..1 foreach( i; parallel( list ) ){ …}
Pool thread
..
1 void myfunction( int param1, int param 2 ){ …}2 auto myTask = task!myfunction( param1, param2 );3 taskPool.put( myTask );4 doSomething(); // another work in parallel5 taskPool.finish( true ); // wait alls jobs ending
. .. 15/122.. . .. 15/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Parallelism
.
......
module to use..
1 import std.parallelism;
parallel loop
..1 foreach( i; parallel( list ) ){ …}
Pool thread
..
1 void myfunction( int param1, int param 2 ){ …}2 auto myTask = task!myfunction( param1, param2 );3 taskPool.put( myTask );4 doSomething(); // another work in parallel5 taskPool.finish( true ); // wait alls jobs ending
. .. 15/122.. . .. 15/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Parallelism
.
......
module to use..
1 import std.parallelism;
parallel loop
..1 foreach( i; parallel( list ) ){ …}
Pool thread
..
1 void myfunction( int param1, int param 2 ){ …}2 auto myTask = task!myfunction( param1, param2 );3 taskPool.put( myTask );4 doSomething(); // another work in parallel5 taskPool.finish( true ); // wait alls jobs ending
. .. 15/122.. . .. 15/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Plan.....1 Introduction
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
...3 GTK D
...4 Thanks To. .. 16/122.. . . .. 16/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Ressource Management
..
Code 2: Example1 File f = File( ”myfile.txt”, ”r”);2 scope(exit) f.close();3 lockFile( f );4 doFoo( f );5 scope(success) doBar( f );6 scope(failure) unlock( f );
. .. 17/122.. . . .. 17/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Plan.....1 Introduction
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
...3 GTK D
...4 Thanks To. .. 18/122.. . . .. 18/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Contract.
......
check a statement..
1 assert( var != null );
check before entering into a function
..
1 double foo ( int a )2 in{ assert( a > 0 ); }3 body { return a − 2; }
check at function exit
..
1 int foo ( int a )2 out{ assert( a > 0 ); }3 body { return a − 2; }
-release flag will not compute contract
..$ ldc2 -release foo.d
. .. 19/122.. . . .. 19/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Contract.
......
check a statement..
1 assert( var != null );
check before entering into a function
..
1 double foo ( int a )2 in{ assert( a > 0 ); }3 body { return a − 2; }
check at function exit
..
1 int foo ( int a )2 out{ assert( a > 0 ); }3 body { return a − 2; }
-release flag will not compute contract
..$ ldc2 -release foo.d
. .. 19/122.. . . .. 19/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Contract.
......
check a statement..
1 assert( var != null );
check before entering into a function
..
1 double foo ( int a )2 in{ assert( a > 0 ); }3 body { return a − 2; }
check at function exit
..
1 int foo ( int a )2 out{ assert( a > 0 ); }3 body { return a − 2; }
-release flag will not compute contract
..$ ldc2 -release foo.d
. .. 19/122.. . . .. 19/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Contract.
......
check a statement..
1 assert( var != null );
check before entering into a function
..
1 double foo ( int a )2 in{ assert( a > 0 ); }3 body { return a − 2; }
check at function exit
..
1 int foo ( int a )2 out{ assert( a > 0 ); }3 body { return a − 2; }
-release flag will not compute contract
..$ ldc2 -release foo.d
. .. 19/122.. . . .. 19/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Plan.....1 Introduction
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
...3 GTK D
...4 Thanks To. .. 20/122.. . . .. 20/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
System and Safe Code
.System and Safe Code..
......
Safe functions are functions that are statically checkedto have no possibility of undefined behavior.
Undefined behavior is often used as a vector formalicious attacks.
Functions are marked with attributes: @safe,@system, @trusted
. .. 21/122.. . . . .. 21/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Plan.....1 Introduction
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
...3 GTK D
...4 Thanks To. .. 22/122.. . . . .. 22/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Reference and pointer
.
......
Pointers exist only to create C interface code
..1 int* a = cFunction( param );
ref into function..
1 void foo( ref int[] param ) { …}
ref into a loop
..1 foreach( ref item ; list ){ …}
. .. 23/122.. . . . .. 23/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Reference and pointer
.
......
Pointers exist only to create C interface code
..1 int* a = cFunction( param );
ref into function..
1 void foo( ref int[] param ) { …}
ref into a loop
..1 foreach( ref item ; list ){ …}
. .. 23/122.. . . . .. 23/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Reference and pointer
.
......
Pointers exist only to create C interface code
..1 int* a = cFunction( param );
ref into function..
1 void foo( ref int[] param ) { …}
ref into a loop
..1 foreach( ref item ; list ){ …}
. .. 23/122.. . . . .. 23/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Plan.....1 Introduction
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
...3 GTK D
...4 Thanks To. .. 24/122.. . . . .. 24/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
.Generic..
......
class
..1 class Foo( T ){ …}2 Foo!int instance = new Foo!(int)( param );
..1 T foo( T )(T param){ …}2 int var = foo!int( param );
macro
..
1 template TFoo( T )( T param ){ immutable T f = param + 3;}
2 int a = TFoo!int( 4 ) ; // return 7 at compile time
. .. 25/122.. . . . .. 25/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Plan.....1 Introduction
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
...3 GTK D
...4 Thanks To. .. 26/122.. . . . . .. 26/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Inference
.
......
auto for variable
..1 size_t[] list = [ 0, 1, 2, 3, 4];2 auto item = list[1]; // item type is size_t
auto for function..
1 auto foo( int param ){ …}
. .. 27/122.. . . . . .. 27/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Inference
.
......
auto for variable
..1 size_t[] list = [ 0, 1, 2, 3, 4];2 auto item = list[1]; // item type is size_t
auto for function..
1 auto foo( int param ){ …}
. .. 27/122.. . . . . .. 27/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Plan.....1 Introduction
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
...3 GTK D
...4 Thanks To. .. 28/122.. . . . . .. 28/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Loops.Loops..
......
for loop
..1 for( int i = 0; i < 10; i++ ){ …}
while loop
..1 while( isComputing ){ …}
do while..
1 do{ …}while( isComputing );
foreach loop
..
1 foreach( size_t i; list ){ …}2 foreach( size_t counter, size_t i = 0; list ){ …}3 foreach( counter, i; list ){ …}
. .. 29/122.. . . . . .. 29/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Plan.....1 Introduction
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
...3 GTK D
...4 Thanks To. .. 32/122.. . . . . . .. 32/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Debugs
.Debugs..
......
debug block
..1 debug( int param ){ …} // ldc2 −d−debug …..
debug line
..1 debug writeln( ”foo” ) ;
unitest
..
1 unitest {2 assert( doFoo( x ), true );3 assert( doBar( x ), 3 );4 …5 }
.
. .. 33/122.. . . . . . .. 33/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Debugs
.Debugs..
......
debug block
..1 debug( int param ){ …}
debug line
..1 debug writeln( ”foo” ) ; // ldc2 −d−debug …..
unitest
..
1 unitest {2 assert( doFoo( x ), true );3 assert( doBar( x ), 3 );4 …5 }
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
Code 11: Terminal$ ldc2 hello.d$ ./helloHello world
. .. 51/122.. . . . . . . . . . .. 51/122.
D Programming .
.
.. . . Forward.
.
. ... Back
D Programming
Jonathan MERCIER
IntroductionObject
Functional
Meta-programming
Parallelism
Ressource Management
Contract
System and Safe Code
Reference and pointer
Generics
Inference
Loops
Functions
Debugs
Versions
Requirement
Editors
BasicsMy first D program
Types
Arrays
String and characters
Const and Immutable
Input/Output
Algorithm
Structure and Class
Template
Miscellanous
Let start it!
GTK D
Thanks To
Plan.....1 Introduction
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
Code 27: Iteration1 import std.algorihm: filter, uniq, map, reduce;2 int[] list = [ 0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9 ];3 list.filter!( a => a > 6 );4 list.uniq( );5 list.map!( a => a + 2 );6 0.reduce!( (a,b) => a + b )( list );7 list.reduce!( min, max )( ); // compute in one pass min an max ..8 // min: 0 max: 9
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
ObjectFunctionalMeta-programmingParallelismRessource ManagementContractSystem and Safe CodeReference and pointerGenericsInferenceLoopsFunctionsDebugsVersionsRequirementEditors
...2 BasicsMy first D programTypesArraysString and charactersConst and ImmutableInput/OutputAlgorithmStructure and ClassTemplateMiscellanousLet start it!
Web site: dlang.orgCommunity: forum.dlang.orgContribute:www.github.com/D-Programming-Languageirc on freenode #dfrench speaker on jabber [email protected]