SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
.. .......... ...... ..................... ..................... ..................... ..... ..... . ..... .......... .
..
.....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
.
Walter Bright
..
......
If a language can capture 90% of the power of C++
with 10% of its complexity
I argue that is a worthwhile tradeoff.
Jonathan MERCIER aka bioinfornatics D Programing October 9, 2013 2 / 21
..
.....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
Factorial number: C++ vs D
Imperative
..
1 typedef unsigned long ulong;
2
3 ulong factorial (ulong n){
4 if (n < 2)
5 return 1;
6 else
7 return n ∗ factorial (n − 1);
8 }
..
1 ulong factorial (ulong n){
2 if (n < 2)
3 return 1;
4 else
5 return n ∗ factorial (n − 1);
6 }
Jonathan MERCIER aka bioinfornatics D Programing October 9, 2013 3 / 21
..
.....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
Factorial number: C++ vs D
Imperative and generics
..
1 template<class T> T factorial(T n){
2 if (n < 2)
3 return 1;
4 else
5 return n ∗ factorial (n − 1);
6 }
..
1 T factorial (T n){
2 if (n < 2)
3 return 1;
4 else
5 return n ∗ factorial (n − 1);
6 }
Jonathan MERCIER aka bioinfornatics D Programing October 9, 2013 4 / 21
..
.....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
Factorial number: C++ vs D
Imperative, generics and contract
..
1 template<class T> T factorial(T n){
2 assert ( n >= 1 );
3 if (n < 2)
4 return 1;
5 else
6 return n ∗ factorial (n − 1);
7 }
..
1 T factorial (T n)
2 in{ assert ( n >= 1 ); }
3 out{ assert ( n >= 1 ); }
4 body{
5 if (n < 2)
6 return 1;
7 else
8 return n ∗ factorial (n − 1);
9 }
Jonathan MERCIER aka bioinfornatics D Programing October 9, 2013 5 / 21
..
.....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
Factorial number: C++ vs D
Meta-programing
..
1 typedef unsigned long ulong;
2
3 template <ulong N> struct Factorial {
4 enum { value = N ∗ Factorial<N − 1>::value };
5 };
6
7 template <> struct Factorial<0> {
8 enum { value = 1 };
9 };
10
11 const ulong x = Factorial<4>::value;
12 const ulong y = Factorial<0>::value;
..
1 template Factorial (ulong n){
2 static if (n < 2)
3 const Factorial = 1;
4 else
5 const Factorial = n ∗ Factorial !(n − 1);
6 }
7
8 immutable ulong x = Factorial !( 4 );
9 immutable ulong y = Factorial !( 0 );
Jonathan MERCIER aka bioinfornatics D Programing October 9, 2013 6 / 21
..
.....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
Factorial number: C++ vs D
CTFE
..
1 typedef unsigned long ulong;
2
3 ulong factorial (ulong n){
4 if (n < 2)
5 return 1;
6 else
7 return n ∗ factorial (n − 1);
8 }
9
10 enum ulong x = factorial ( 4 );
11 enum ulong y = factorial ( 0 ); ..
1 ulong factorial (ulong n){
2 if (n < 2)
3 return 1;
4 else
5 return n ∗ factorial (n − 1);
6 }
7
8 enum ulong x = factorial ( 4 );
9 enum ulong y = factorial ( 0 );
Jonathan MERCIER aka bioinfornatics D Programing October 9, 2013 7 / 21
..
.....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
.
John Carmack
..
......
Using D for my daily work is not an option,
but I applaud their inclusion of a pure attribute.
Jonathan MERCIER aka bioinfornatics D Programing October 9, 2013 8 / 21
..
.....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
Factorial number: C++ vs D
functional
..
1 typedef unsigned long ulong;
2
3 ulong factorial (ulong n){
4 if (n < 2)
5 return 1;
6 else
7 return n ∗ factorial (n − 1);
8 }
..
1 @safe pure nothrow
2 ulong factorial (immutable ulong n){
3 if (n < 2)
4 return 1;
5 else
6 return n ∗ factorial (n − 1);
7 }
Jonathan MERCIER aka bioinfornatics D Programing October 9, 2013 9 / 21
..
.....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
.. Imperative.
Generics
.
Contracts
.
Meta-
programing
.
Functional
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
C++
D
Python
Java
Jonathan MERCIER aka bioinfornatics D Programing October 9, 2013 10 / 21
..
.....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
Do you like it ?
..
.Yes ..
.No
Jonathan MERCIER aka bioinfornatics D Programing October 9, 2013 11 / 21
..
..
.continue
.......... ...... ..................... ..................... ..................... ..... ..... . ..... .......... .
.. .......... ...... ..................... ..................... ..................... ..... ..... . ..... .......... .
..
.....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
Factorial number: Java vs D
A language survey
..
1 public class Factorial {
2 public static int factorial ( int n ){
3 if (n < 2)
4 return 1;
5 else
6 return n ∗ Factorial . factorial (n − 1);
7 }
8 } ..
1 pure ulong factorial ( immutable ulong n){
2 if (n < 2)
3 return 1;
4 else
5 return n ∗ factorial (n − 1);
6 }
Jonathan MERCIER aka bioinfornatics D Programing October 9, 2013 14 / 21
..
.....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
Factorial number: Python vs D
A language survey
..
1 def factorial ( n ):
2 if n < 2:
3 return 1
4 else :
5 return n ∗ factorial (n − 1)
..
1 pure ulong factorial ( immutable ulong n ){
2 if (n < 2)
3 return 1;
4 else
5 return n ∗ factorial (n − 1);
6 }
Jonathan MERCIER aka bioinfornatics D Programing October 9, 2013 15 / 21
..
.....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
Computing Factorial 50, 1 million time
.....
java
.
C++
.
D
.
Python
.0 .
2
.
4
.
6
.
8
.
10
.
0.167
.
0.003
.
0.014
.
11.399
Jonathan MERCIER aka bioinfornatics D Programing October 9, 2013 16 / 21
..
.....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
Computing Factorial 50, 20 millions times
.....
java
.
C++
.
D
.
Python
.0 .
50
.
100
.
150
.
200
.
1.692
.
0.002
.
0.006
. 228.815
Jonathan MERCIER aka bioinfornatics D Programing October 9, 2013 17 / 21
..
.....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
Do you like it ?
..
.Yes ..
.No
Jonathan MERCIER aka bioinfornatics D Programing October 9, 2013 18 / 21
..
..
.continue
.......... ...... ..................... ..................... ..................... ..... ..... . ..... .......... .
.. .......... ...... ..................... ..................... ..................... ..... ..... . ..... .......... .
..
.....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
.
Andrei Alexandrescu
..
......D rox !!!
Thanks
Jonathan MERCIER aka bioinfornatics D Programing October 9, 2013 21 / 21

Más contenido relacionado

Similar a D lang

Apostila c# iniciantes
Apostila c# iniciantesApostila c# iniciantes
Apostila c# iniciantesCaique Moretto
 
2012: Computação Natural - Slides do Curso
2012: Computação Natural - Slides do Curso2012: Computação Natural - Slides do Curso
2012: Computação Natural - Slides do CursoLeandro de Castro
 
Python
PythonPython
PythonTiago
 
Algoritmos jabour
Algoritmos jabourAlgoritmos jabour
Algoritmos jabourfjabour
 
Análise de Algoritmos de Ordenação Interna
Análise de Algoritmos de Ordenação InternaAnálise de Algoritmos de Ordenação Interna
Análise de Algoritmos de Ordenação InternaJohnnatan Messias
 
Relatorio final - Blinded Walker
Relatorio final - Blinded WalkerRelatorio final - Blinded Walker
Relatorio final - Blinded WalkerTiago Cunha
 
Cientista da computacao usando python
Cientista da computacao usando pythonCientista da computacao usando python
Cientista da computacao usando pythonJean Lopes
 
Caminhos Mínimos: Dijkstra e Floyd-Warshall
Caminhos Mínimos: Dijkstra e Floyd-WarshallCaminhos Mínimos: Dijkstra e Floyd-Warshall
Caminhos Mínimos: Dijkstra e Floyd-WarshallJohnnatan Messias
 
Guia Aberto Android ed.2
Guia Aberto Android ed.2Guia Aberto Android ed.2
Guia Aberto Android ed.2Átila Camurça
 

Similar a D lang (14)

Apostila c# iniciantes
Apostila c# iniciantesApostila c# iniciantes
Apostila c# iniciantes
 
2012: Computação Natural - Slides do Curso
2012: Computação Natural - Slides do Curso2012: Computação Natural - Slides do Curso
2012: Computação Natural - Slides do Curso
 
Landeiro introducao
Landeiro introducaoLandeiro introducao
Landeiro introducao
 
Python
PythonPython
Python
 
monografia_andre_paro
monografia_andre_paromonografia_andre_paro
monografia_andre_paro
 
Apostila de Bioestatística
Apostila de BioestatísticaApostila de Bioestatística
Apostila de Bioestatística
 
Algoritmos jabour
Algoritmos jabourAlgoritmos jabour
Algoritmos jabour
 
Análise de Algoritmos de Ordenação Interna
Análise de Algoritmos de Ordenação InternaAnálise de Algoritmos de Ordenação Interna
Análise de Algoritmos de Ordenação Interna
 
Relatorio final - Blinded Walker
Relatorio final - Blinded WalkerRelatorio final - Blinded Walker
Relatorio final - Blinded Walker
 
Cientista da computacao usando python
Cientista da computacao usando pythonCientista da computacao usando python
Cientista da computacao usando python
 
Caminhos Mínimos: Dijkstra e Floyd-Warshall
Caminhos Mínimos: Dijkstra e Floyd-WarshallCaminhos Mínimos: Dijkstra e Floyd-Warshall
Caminhos Mínimos: Dijkstra e Floyd-Warshall
 
Pre- Calculo
Pre- CalculoPre- Calculo
Pre- Calculo
 
Guia Aberto Android ed.2
Guia Aberto Android ed.2Guia Aberto Android ed.2
Guia Aberto Android ed.2
 
Análise bayesiana de decisões aspectos práticos
Análise bayesiana de decisões   aspectos práticosAnálise bayesiana de decisões   aspectos práticos
Análise bayesiana de decisões aspectos práticos
 

Último

FORMAÇÃO LITÚRGICA - MINISTROS EXTRAORDINÁRIOS.pptx
FORMAÇÃO LITÚRGICA - MINISTROS EXTRAORDINÁRIOS.pptxFORMAÇÃO LITÚRGICA - MINISTROS EXTRAORDINÁRIOS.pptx
FORMAÇÃO LITÚRGICA - MINISTROS EXTRAORDINÁRIOS.pptxodairmarques5
 
THIAGO-meudiadefestaparaimpressão_thandreola_300324.pdf
THIAGO-meudiadefestaparaimpressão_thandreola_300324.pdfTHIAGO-meudiadefestaparaimpressão_thandreola_300324.pdf
THIAGO-meudiadefestaparaimpressão_thandreola_300324.pdfthandreola
 
Lição 5 - Os Inimigos do Cristão - EBD.pptx
Lição 5 - Os Inimigos do Cristão - EBD.pptxLição 5 - Os Inimigos do Cristão - EBD.pptx
Lição 5 - Os Inimigos do Cristão - EBD.pptxCelso Napoleon
 
Comentários -João - Hernandes Dias Lopes.pdf
Comentários -João - Hernandes Dias Lopes.pdfComentários -João - Hernandes Dias Lopes.pdf
Comentários -João - Hernandes Dias Lopes.pdfRobertoLopes438472
 
Oração Pelo Povo Brasileiro
Oração Pelo Povo BrasileiroOração Pelo Povo Brasileiro
Oração Pelo Povo BrasileiroNilson Almeida
 
Vivendo a vontade de Deus para adolescentes - Cleide Silva
Vivendo a vontade de Deus para adolescentes - Cleide SilvaVivendo a vontade de Deus para adolescentes - Cleide Silva
Vivendo a vontade de Deus para adolescentes - Cleide SilvaSammis Reachers
 
AUTORA VILMA DIAS - MARIA ANTES DE SER MARIA (1).ppt
AUTORA VILMA DIAS - MARIA ANTES DE SER MARIA  (1).pptAUTORA VILMA DIAS - MARIA ANTES DE SER MARIA  (1).ppt
AUTORA VILMA DIAS - MARIA ANTES DE SER MARIA (1).pptVilmaDias11
 
Paulo é vítima de fake news e o primeiro culto num domingo
Paulo é vítima de fake news e o primeiro culto num domingoPaulo é vítima de fake news e o primeiro culto num domingo
Paulo é vítima de fake news e o primeiro culto num domingoPIB Penha
 
Novo dia de festa o verdadeiro amor tyejaytyo
Novo dia de festa o verdadeiro amor tyejaytyoNovo dia de festa o verdadeiro amor tyejaytyo
Novo dia de festa o verdadeiro amor tyejaytyothandreola
 
Cópia de Ideais - Desbravadores e Aventureiros.pdf.pptx
Cópia de Ideais - Desbravadores e Aventureiros.pdf.pptxCópia de Ideais - Desbravadores e Aventureiros.pdf.pptx
Cópia de Ideais - Desbravadores e Aventureiros.pdf.pptxLennySilva15
 
Dar valor ao Nada! No Caminho da Autorrealização
Dar valor ao Nada! No Caminho da AutorrealizaçãoDar valor ao Nada! No Caminho da Autorrealização
Dar valor ao Nada! No Caminho da Autorrealizaçãocorpusclinic
 
Lição 6 - As nossas Armas Espirituais.pptx
Lição 6 - As nossas Armas Espirituais.pptxLição 6 - As nossas Armas Espirituais.pptx
Lição 6 - As nossas Armas Espirituais.pptxCelso Napoleon
 
Joanna_de_Angelis__Autodescobrimento__Uma_Busca_Interior.pdf
Joanna_de_Angelis__Autodescobrimento__Uma_Busca_Interior.pdfJoanna_de_Angelis__Autodescobrimento__Uma_Busca_Interior.pdf
Joanna_de_Angelis__Autodescobrimento__Uma_Busca_Interior.pdfRobertPeresBastos
 

Último (13)

FORMAÇÃO LITÚRGICA - MINISTROS EXTRAORDINÁRIOS.pptx
FORMAÇÃO LITÚRGICA - MINISTROS EXTRAORDINÁRIOS.pptxFORMAÇÃO LITÚRGICA - MINISTROS EXTRAORDINÁRIOS.pptx
FORMAÇÃO LITÚRGICA - MINISTROS EXTRAORDINÁRIOS.pptx
 
THIAGO-meudiadefestaparaimpressão_thandreola_300324.pdf
THIAGO-meudiadefestaparaimpressão_thandreola_300324.pdfTHIAGO-meudiadefestaparaimpressão_thandreola_300324.pdf
THIAGO-meudiadefestaparaimpressão_thandreola_300324.pdf
 
Lição 5 - Os Inimigos do Cristão - EBD.pptx
Lição 5 - Os Inimigos do Cristão - EBD.pptxLição 5 - Os Inimigos do Cristão - EBD.pptx
Lição 5 - Os Inimigos do Cristão - EBD.pptx
 
Comentários -João - Hernandes Dias Lopes.pdf
Comentários -João - Hernandes Dias Lopes.pdfComentários -João - Hernandes Dias Lopes.pdf
Comentários -João - Hernandes Dias Lopes.pdf
 
Oração Pelo Povo Brasileiro
Oração Pelo Povo BrasileiroOração Pelo Povo Brasileiro
Oração Pelo Povo Brasileiro
 
Vivendo a vontade de Deus para adolescentes - Cleide Silva
Vivendo a vontade de Deus para adolescentes - Cleide SilvaVivendo a vontade de Deus para adolescentes - Cleide Silva
Vivendo a vontade de Deus para adolescentes - Cleide Silva
 
AUTORA VILMA DIAS - MARIA ANTES DE SER MARIA (1).ppt
AUTORA VILMA DIAS - MARIA ANTES DE SER MARIA  (1).pptAUTORA VILMA DIAS - MARIA ANTES DE SER MARIA  (1).ppt
AUTORA VILMA DIAS - MARIA ANTES DE SER MARIA (1).ppt
 
Paulo é vítima de fake news e o primeiro culto num domingo
Paulo é vítima de fake news e o primeiro culto num domingoPaulo é vítima de fake news e o primeiro culto num domingo
Paulo é vítima de fake news e o primeiro culto num domingo
 
Novo dia de festa o verdadeiro amor tyejaytyo
Novo dia de festa o verdadeiro amor tyejaytyoNovo dia de festa o verdadeiro amor tyejaytyo
Novo dia de festa o verdadeiro amor tyejaytyo
 
Cópia de Ideais - Desbravadores e Aventureiros.pdf.pptx
Cópia de Ideais - Desbravadores e Aventureiros.pdf.pptxCópia de Ideais - Desbravadores e Aventureiros.pdf.pptx
Cópia de Ideais - Desbravadores e Aventureiros.pdf.pptx
 
Dar valor ao Nada! No Caminho da Autorrealização
Dar valor ao Nada! No Caminho da AutorrealizaçãoDar valor ao Nada! No Caminho da Autorrealização
Dar valor ao Nada! No Caminho da Autorrealização
 
Lição 6 - As nossas Armas Espirituais.pptx
Lição 6 - As nossas Armas Espirituais.pptxLição 6 - As nossas Armas Espirituais.pptx
Lição 6 - As nossas Armas Espirituais.pptx
 
Joanna_de_Angelis__Autodescobrimento__Uma_Busca_Interior.pdf
Joanna_de_Angelis__Autodescobrimento__Uma_Busca_Interior.pdfJoanna_de_Angelis__Autodescobrimento__Uma_Busca_Interior.pdf
Joanna_de_Angelis__Autodescobrimento__Uma_Busca_Interior.pdf
 

D lang