D (linguagem de programação)
Origem: Wikipédia, a enciclopédia livre.
| D | |
|---|---|
| Paradigma | Orientação a objetos, Imperativo, Genérico |
| Surgido em | 1999 |
| Última versão | 1.064 (13 de setembro de 2010) |
| Versão em teste | 2.049 (13 de setembro de 2010) |
| Criado por | Walter Bright |
| Estilo de tipagem: | forte, estática |
| Compiladores | DMD, DGCC |
| Influenciada por | C, C++, C♯, Java |
| Página oficial | www.digitalmars.com/d |
D é uma linguagem de programação de uso geral projetada por Walter Bright da Digital Mars. É baseada majoritariamente em C++, apesar de não ser apenas uma variante. A versão estável da primeira especificação (v1.0) foi lançada em janeiro de 2007.
Índice |
Histórico[editar]
A linguagem D foi criada por Walter Bright, desenvolvedor de compiladores para as linguagens C e C++ e fundador da Digital Mars. Ela foi concebida em dezembro de 1999 para ser uma sucessora das linguagens C e C++.
É uma linguagem de programação de sistemas, focada em combinar o alto desempenho das linguagens C e C++ com a produtividade de outras linguagens modernas, tais como Ruby e Python.
Características[editar]
A linguagem D apresenta, dentre outras características:
- Fortemente tipada estaticamente;
- Compilada para código nativo;
- Multiparadigma: suporta os estilos imperativo, orientado a objetos e multiprogramação de template;
- Projetada para a orientação a objetos e programação genérica;
- Pertencente à família com sintaxe semelhante à Linguagem C, com aparência próxima à Linguagem C++ (Compatibilidade com códigos objeto C);
- Arranjos dinâmicos e associativos;
- Presença de coletor de lixo;
- inline Assembler.
Principais metas de D[editar]
- Reduzir os custos de desenvolvimento de software em ao menos 10% com adição de produtividade comprovada, realçando características e ajustando características da linguagem de modo que erros comuns e bugs, que consomem tempo, sejam eliminados;
- Torná-la fácil para escrever código que seja portável de compilador para compilador, máquina para máquina, e sistema operacional para sistema operacional;
- Suportar multi-paradigmas de programação, isto é, com um mínimo de suporte a paradigmas imperativos, estruturados, orientados a objetos, e programação genérica;
- Ter uma curta linha de aprendizagem para programadores acostumados com programação em C ou C++;
- Tornar D substancialmente mais fácil para implementar um compilador próprio que C++;
- Ser compatível com as APIs C locais;
- Ter uma gramática livre de contexto;
- Incorporar metodologia de Programação de Contrato e teste de unidade;
- Ser capaz de construir programas leves por si próprio;
- Reduzir os custos da criação de documentação.
Exemplos de Códigos[editar]
Olá Mundo[editar]
import std.stdio; void main() { writefln("Olá, Mundo!"); }
ou, equivalente:
import std.c.stdio; void main() { printf("Olá, Mundo!\n"); }
N-Primeiros Números Perfeitos[editar]
/* Para compilar: rdmd NumerosPerfeitos.d */ import std.c.stdio; void main(char[][] args) { int n; // n primeiros números perfeitos int num = 0; int soma; int contador = 0; printf( "Entre com o valor de 'N': "); scanf("%d", &n); printf( "\nOs N primeiros numeros perfeitos sao:\n"); do { num += 1; soma = 0; for ( int i=1; i <= num-1 ; i++ ) { if( (num % i) == 0 ) { soma += i; } } if ( soma == num ) { printf("%d\n", soma); contador += 1; } }while (contador != n); } /* NÚMEROS PERFEITOS - Um número se diz perfeito se é igual a soma de seus divisores próprios. - Divisores próprios de um número positivo N são todos os divisores inteiros positivos de N exceto o próprio N.'); - Por exemplo, o número 6, seus divisores próprios são 1, 2 e 3, cuja soma = 6 (1 + 2 + 3 = 6); Outro exemplo é o número 28, cujos divisores próprios são 1, 2, 4, 7 e 14, e a soma dos seus divisores próprios é 28 (1 + 2 + 4 + 7 + 14 = 28) */
Classes[editar]
class A { public this() //Construtor { x = 10.0 + 7i; } private cfloat x; //número complexo } class B : A { public this() { super(); //Chama o construtor da classe pai } }
Arrays[editar]
//Arranjos dinâmicos: int[] a; a.length = 10; //comprimento igual a 10 posições a = 50; //a[0], a[1] ... a[9]= 50 a ~= 48; //adiciona uma posição ao array e atribui 48 a ela int[] b; for(int i=0; i<30; i++) { b ~= i; } int[] c; c = b[1..10]; //c[0]= b[1], c[1] =b[2] ... c[8]= b[9] int[] d; d = a ~ c; // d[0]=a[0],d[1]=a[1]...,d[10]=a[10],d[11]=c[0]... d[19]=c[8] int* p = b.ptr; //p aponta para o primeiro elemento de b for(int i = 0; i < b.length; i++) printf("%d\n", *(p+i)); c.sort; //ordena o vetor c
//Arranjos associativos: int[char[]] a; //array associativo a["hello"] = 4; a["tchau"] = 10; a["oi"] = 50; a["nome"] = 70; int* p; p = ("tchau" in a); //p aponta para uma chave de índice "tchau" e se ela //não existir, p será igual a null if(p != null) //encontrou o índice { printf("%d\n", *p); } a.remove("oi"); //remove a chave "oi"
uint toHash(char[] str) { uint hash; foreach (char c; str) hash = (hash * 9) + c; return hash; }
é o mesmo que
uint toHash(char[] str) { uint hash; for(int i=0; i<str.length; i++) { char c = str[i]; hash = (hash * 9) + c; } return hash; }
Ver também[editar]
Ligações externas[editar]
- Página oficial (em inglês)
- Página em pt-BR (em português)
- Página de Walter Bright (em inglês)
- Repositório de programas e projetos escritos em D (em inglês)
- Toolkit gráfico para a linguagem baseado no GTK+ (em inglês)
- Tutoriais e arquivos de referência para a linguagem (em inglês)
- DMD - compilador para a D (em inglês)
- Comparação de D com C, C++, C# e Java (em inglês)