SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
.. .......... ...... ..................... ..................... ..................... ..... ..... . ..... .......... .
..
.....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
.
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

Mais conteúdo relacionado

Semelhante 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
 

Semelhante 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

As festas esquecidas.pdf................
As festas esquecidas.pdf................As festas esquecidas.pdf................
As festas esquecidas.pdf................natzarimdonorte
 
Série Evangelho no Lar - Pão Nosso - Cap. 132 - Em tudo
Série Evangelho no Lar - Pão Nosso - Cap. 132 - Em tudoSérie Evangelho no Lar - Pão Nosso - Cap. 132 - Em tudo
Série Evangelho no Lar - Pão Nosso - Cap. 132 - Em tudoRicardo Azevedo
 
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
 
EUBIOSOFIA - MEMÓRIAS DA SOCIEDADE TEOSÓFICA BRASILEIRA
EUBIOSOFIA - MEMÓRIAS DA SOCIEDADE TEOSÓFICA BRASILEIRAEUBIOSOFIA - MEMÓRIAS DA SOCIEDADE TEOSÓFICA BRASILEIRA
EUBIOSOFIA - MEMÓRIAS DA SOCIEDADE TEOSÓFICA BRASILEIRAMarco Aurélio Rodrigues Dias
 
Lição 4 - Como se Conduzir na Caminhada.pptx
Lição 4 - Como se Conduzir na Caminhada.pptxLição 4 - Como se Conduzir na Caminhada.pptx
Lição 4 - Como se Conduzir na Caminhada.pptxCelso Napoleon
 
O Livro dos Mortos do Antigo Egito_240402_210013.pdf
O Livro dos Mortos do Antigo Egito_240402_210013.pdfO Livro dos Mortos do Antigo Egito_240402_210013.pdf
O Livro dos Mortos do Antigo Egito_240402_210013.pdfmhribas
 
METODOLOGIA ELANA* – ENSINO LEVA AUTONOMIA NO APRENDIZADO. UMA PROPOSTA COMP...
METODOLOGIA ELANA* – ENSINO LEVA  AUTONOMIA NO APRENDIZADO. UMA PROPOSTA COMP...METODOLOGIA ELANA* – ENSINO LEVA  AUTONOMIA NO APRENDIZADO. UMA PROPOSTA COMP...
METODOLOGIA ELANA* – ENSINO LEVA AUTONOMIA NO APRENDIZADO. UMA PROPOSTA COMP...PIB Penha
 
Oração A Bem-Aventurada Irmã Dulce Dos Pobres
Oração A Bem-Aventurada Irmã Dulce Dos PobresOração A Bem-Aventurada Irmã Dulce Dos Pobres
Oração A Bem-Aventurada Irmã Dulce Dos PobresNilson Almeida
 
Tabela bíblica Periódica - Livros da Bíblia.pdf
Tabela bíblica Periódica - Livros da Bíblia.pdfTabela bíblica Periódica - Livros da Bíblia.pdf
Tabela bíblica Periódica - Livros da Bíblia.pdfAgnaldo Fernandes
 
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 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
 
2 joão (1) 1.pptx As TRÊS CARTAS DO APÓSTOLO JOÃO têm uma mensagem solene e u...
2 joão (1) 1.pptx As TRÊS CARTAS DO APÓSTOLO JOÃO têm uma mensagem solene e u...2 joão (1) 1.pptx As TRÊS CARTAS DO APÓSTOLO JOÃO têm uma mensagem solene e u...
2 joão (1) 1.pptx As TRÊS CARTAS DO APÓSTOLO JOÃO têm uma mensagem solene e u...MiltonCesarAquino1
 
O Sacramento do perdão, da reconciliação.
O Sacramento do perdão, da reconciliação.O Sacramento do perdão, da reconciliação.
O Sacramento do perdão, da reconciliação.LucySouza16
 
As violações das leis do Criador (material em pdf)
As violações das leis do Criador (material em pdf)As violações das leis do Criador (material em pdf)
As violações das leis do Criador (material em pdf)natzarimdonorte
 

Último (17)

As festas esquecidas.pdf................
As festas esquecidas.pdf................As festas esquecidas.pdf................
As festas esquecidas.pdf................
 
VICIOS MORAIS E COMPORTAMENTAIS NA VISÃO ESPÍRITA
VICIOS MORAIS E COMPORTAMENTAIS  NA VISÃO ESPÍRITAVICIOS MORAIS E COMPORTAMENTAIS  NA VISÃO ESPÍRITA
VICIOS MORAIS E COMPORTAMENTAIS NA VISÃO ESPÍRITA
 
Série Evangelho no Lar - Pão Nosso - Cap. 132 - Em tudo
Série Evangelho no Lar - Pão Nosso - Cap. 132 - Em tudoSérie Evangelho no Lar - Pão Nosso - Cap. 132 - Em tudo
Série Evangelho no Lar - Pão Nosso - Cap. 132 - Em tudo
 
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
 
EUBIOSOFIA - MEMÓRIAS DA SOCIEDADE TEOSÓFICA BRASILEIRA
EUBIOSOFIA - MEMÓRIAS DA SOCIEDADE TEOSÓFICA BRASILEIRAEUBIOSOFIA - MEMÓRIAS DA SOCIEDADE TEOSÓFICA BRASILEIRA
EUBIOSOFIA - MEMÓRIAS DA SOCIEDADE TEOSÓFICA BRASILEIRA
 
Lição 4 - Como se Conduzir na Caminhada.pptx
Lição 4 - Como se Conduzir na Caminhada.pptxLição 4 - Como se Conduzir na Caminhada.pptx
Lição 4 - Como se Conduzir na Caminhada.pptx
 
O Livro dos Mortos do Antigo Egito_240402_210013.pdf
O Livro dos Mortos do Antigo Egito_240402_210013.pdfO Livro dos Mortos do Antigo Egito_240402_210013.pdf
O Livro dos Mortos do Antigo Egito_240402_210013.pdf
 
METODOLOGIA ELANA* – ENSINO LEVA AUTONOMIA NO APRENDIZADO. UMA PROPOSTA COMP...
METODOLOGIA ELANA* – ENSINO LEVA  AUTONOMIA NO APRENDIZADO. UMA PROPOSTA COMP...METODOLOGIA ELANA* – ENSINO LEVA  AUTONOMIA NO APRENDIZADO. UMA PROPOSTA COMP...
METODOLOGIA ELANA* – ENSINO LEVA AUTONOMIA NO APRENDIZADO. UMA PROPOSTA COMP...
 
Oração A Bem-Aventurada Irmã Dulce Dos Pobres
Oração A Bem-Aventurada Irmã Dulce Dos PobresOração A Bem-Aventurada Irmã Dulce Dos Pobres
Oração A Bem-Aventurada Irmã Dulce Dos Pobres
 
Tabela bíblica Periódica - Livros da Bíblia.pdf
Tabela bíblica Periódica - Livros da Bíblia.pdfTabela bíblica Periódica - Livros da Bíblia.pdf
Tabela bíblica Periódica - Livros da Bíblia.pdf
 
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 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
 
2 joão (1) 1.pptx As TRÊS CARTAS DO APÓSTOLO JOÃO têm uma mensagem solene e u...
2 joão (1) 1.pptx As TRÊS CARTAS DO APÓSTOLO JOÃO têm uma mensagem solene e u...2 joão (1) 1.pptx As TRÊS CARTAS DO APÓSTOLO JOÃO têm uma mensagem solene e u...
2 joão (1) 1.pptx As TRÊS CARTAS DO APÓSTOLO JOÃO têm uma mensagem solene e u...
 
Aprendendo a se amar e a perdoar a si mesmo
Aprendendo a se amar e a perdoar a si mesmoAprendendo a se amar e a perdoar a si mesmo
Aprendendo a se amar e a perdoar a si mesmo
 
O Sacramento do perdão, da reconciliação.
O Sacramento do perdão, da reconciliação.O Sacramento do perdão, da reconciliação.
O Sacramento do perdão, da reconciliação.
 
As violações das leis do Criador (material em pdf)
As violações das leis do Criador (material em pdf)As violações das leis do Criador (material em pdf)
As violações das leis do Criador (material em pdf)
 
Centros de Força do Perispírito (plexos, chacras)
Centros de Força do Perispírito (plexos, chacras)Centros de Força do Perispírito (plexos, chacras)
Centros de Força do Perispírito (plexos, chacras)
 

D lang