Infra - Linux

Conheçam a linguagem D

Neste documento apresento a linguagem de programação D. Uma linguagem de alto nível, porém se necessário pode propiciar acesso a instruções de baixo nível. O compilador está disponível para Linux e Windows, assim facilitando a portabilidade do código fonte.

por Alessandro de Oliveira Faria



Criada em 1999 pelo Walter Bright da Digital Mars, a linguagem de programação D foi baseada em C++. Mas não chega a ser apenas uma variante. É uma linguagem de programação de mais alto nível que C++, entretanto preserva a capacidade para escrever código de alta performance, interagir diretamente com a API do sistema operacional e acesso a hardware. O foco principal da linguagem é reunir o alto desempenho do C/C++ e a produtividade das linguagens atuais.

A análise léxica* funciona independente da análise sintaxe e da análise de semântica. Abaixo os processos de compilação da linguagem D:

1. Caracteres do código fonte:
O arquivo fonte é checado para validar o conjunto de caracteres. Os formatos aceitáveis são ASCII, UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, e UTF-32LE.

2. Análise léxica:
O arquivo fonte é dividido em uma seqüência de símbolos.

3. Análise de sintaxe:
Os símbolos são analisados para validação da sintaxe.

4. Análise semântica:
Verifica os erros semânticos, (por exemplo, uma multiplicação entre tipos de dados diferentes)

5. Otimização:
Otimização é um passo que busca criar uma versão equivalente em semântica, entretanto mais rápido em termos de execução.

6. Finalmente o código:
Instruções da arquitetura/plataforma são selecionadas implementar toda a semântica do programa. O resultado será um arquivo objeto, para um posterior processamento um linker**.

* Análise léxica é o processo de analisar a entrada de linhas de caracteres (tal como o código-fonte de um programa de computador) e produzir uma seqüência de símbolos chamado "símbolos léxicos" (mais informações aqui http://pt.wikipedia.org/wiki/An%C3%A1lise_l%C3%A9xica).

** Linker é um programa que liga objetos gerados por um compilador, formando assim um arquivo binário executável com instruções nativa.

Abaixo algumas características:

  • Coletagem de lixo;
  • Orientada a Objetos;
  • Inline Assembler;
  • Compatibilidade com códigos objeto C;
  • Arranjos dinâmicos e associativos (Sensacional!!!);
  • Código facilmente portável;
  • Rápido aprendizado para programadores em C ou C++.
  • Acesso a instruções de baixo nível.

Em particular, gostei do recurso de Arranjos dinâmicos e associativos, veja os exemplos abaixo:

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  

Arranjos associativos:

int[char[]] a; //array associativo
a["hello"] = 4;
a["tchau"] = 10;
a["oi"] = 50;
a["nome"] = 70;  

Veja no link abaixo as comparações entre a linguagem D com C, C++, C# e Java.
http://www.digitalmars.com/d/comparison.html

Para mais informações, consulte o site oficial:
http://www.digitalmars.com/d/index.html

Abaixo os links utilizado para pesquisa e/ou referências:
http://agilizando.blogspot.com/2007/01/linguagem-de-programao-d-chega-verso.html
http://pt.wikipedia.org/w/index.php?title=Linguagem_D&redirect=no

Download e instalação

Em primeiro lugar efetue o download em http://ftp.digitalmars.com/dmd.zip, conforme o exemplo abaixo.

$ wget http://ftp.digitalmars.com/dmd.zip 

Descompacte o arquivo .zip na pasta corrente.

$ unzip dmd.zip 

Archive:  dmd.zip
  inflating: dmd/bin/dm.dll
  inflating: dmd/bin/dmd
 extracting: dmd/bin/dmd.conf
  inflating: dmd/bin/dmd.exe
  inflating: dmd/bin/dumpobj
  inflating: dmd/bin/eecxxx86.dll
  inflating: dmd/bin/emx86.dll
  inflating: dmd/bin/make.exe
  inflating: dmd/bin/mspdb41.dll

  inflating: dmd/src/phobos/unittest.d
  inflating: dmd/src/phobos/win32.mak
  inflating: dm/lib/snn.lib
  inflating: dm/bin/make.exe
  inflating: dm/bin/lib.exe

Entre no diretório dmd/bin e altere o arquivo dmd.conf em DFLAGS para a localização (path completo) da pasta phobos que se encontra 2 níveis abaixo do local da extração do arquivo zip. Veja o conteúdo do meu arquivo.

$ su
senha:
# cd dmd/bin
# cat dmd.conf
[Environment]
DFLAGS=-I/neti/prg/dmd/src/phobos 

Agora como super-usuário, copie o arquivo dmd.conf para a pasta /etc.

# cp dmd.conf /etc 

Copie a biblioteca Phobos para a pasta /lib.

# cp ../lib/libphobos.a /lib/ 

Agora finalmente copie o arquivo dmd e rdmd para a /bin/:

# cp {dmd,rdmd} /bin/ 

Para um melhor entendimento das operações acima, abaixo a lista do principais arquivos da linguagem D.

    dmd - O compilador D;
    dmd.conf - Arquivo de configuração do compilador;
    rdmd - Interpreta um programa escrito em D.

Compilaremos agora o nosso primeiro "Ola Mundo!". Digite o programa abaixo e salve como ola.d.

 
import std.stdio;

void main(char[][] args)
{
    writefln("Ola Mundo, VIVA O LINUX!");
}  

Para executar o programa OLA.D em modo interpretado, utilize o comando rdmd como no exemplo abaixo:

$ rdmd ola.d
Ola Mundo, VIVA O LINUX! 

Agora compilaremos e executaremos o nosso primeiro programa em D!!! Chique heim...

$ dmd ola
gcc ola.o -o ola -m32 -lphobos -lpthread -lm
$ ./ola
Ola Mundo, VIVA O LINUX! 

Bom, como o objetivo deste documento não é proporcionar grandes ensinamentos sobre a linguagem e sim uma breve apresentação, vou parar por aqui. Não esqueçam, usem a força... LEIA OS FONTES!!!

Alessandro de Oliveira Faria

Alessandro de Oliveira Faria - Sócio-proprietário da empresa NETi TECNOLOGIA fundada em Junho de 1996 (http://www.netitec.com.br), empresa especializada em desenvolvimento de software e soluções biométricas, Consultor Biométrico na tecnologia de reconhecimento facial, atuando na área de tecnologia desde 1986 assim propiciando ao mercado soluções em software nas mais diversas linguagens e plataforma, levando o Linux a sério desde 1998 com desenvolvimento de soluções open-source, membro colaborador da comunidade Viva O Linux, mantenedor da biblioteca open-source de vídeo captura entre outros projetos.