blog.pauloasilva.com

Erlang

Erlang é uma linguagem de programação desenvolvida nos laboratórios de ciências da computação da Ericsson em 1987 com características geralmente associadas aos sistemas operativos (concorrência, gestão de memória etc).

Trata-se de uma linguagem funcional, dinamicamente tipada, desenhada tendo em vista as aplicações distribuídas non-stop, cuja implementação original corria código máquina virtual. Actualmente existe uma versão Open-Source totalmente documentada e publicada ao abrigo da licença EPL (derivada da Mozilla Public License).

A componente de concorrência é sem dúvida um ponto forte desta linguagem incorporando um mecanismo simples de processos e comunicação entre estes.

-module(helloWorld).
-export([helloWorld/0]).
helloWorld() -> io:fwrite("hello, world").

Edit: Abaixo os dois módulos para download criados para ajudar o Dhérsy Gabreil

11 Comments

  1. Dhérsy Gabreil diz:

    Parabens pelo post!

    Se você puder me ajudar agradeço desde ja sua atenção!!
    Tenho trabalho para apresentar na faculdade sobre erlang;gostaria de saber como faço para usar entrada e saida de dados em erlang?
    Exemplo em Pascal:

    Writeln (‘Digite o Numero!’);
    Readln (num);
    Writeln (‘O numero digitado foi: ‘,num);

    Como faço isso em Erlang tem como?

    Aguado sua resposta!!

  2. @Dhérsy Gabreil: Sim, o Erlang dispões de um mecanismo de I/O que é utilizado no exemplo helloWorld que deixei no post.
    Antes de mais fica uma referência directa para a documentação[1]bem como para o módulo io[2] (ver no fim).

    Quanto ao exemplo em Pascal, uma possível solução em Erlang será:
    main()->
    {ok,Value} = io:fread(‘Digite o numero!’,”~f”),
    io:fwrite(‘O numero digitado foi: ~f ~n’,[Value]).

    Não tive hipótese de testar o código, mas se tiveres problemas faço-o sem problemas.

    Boa sorte e bom trabalho

    [1]http://www.erlang.org/doc/reference_manual/part_frame.html
    [2]http://www.erlang.org/documentation/doc-5.4.9/lib/stdlib-1.13.9/doc/html/io.html

  3. Dhérsy Gabreil diz:

    Obrigado pela ajuda inicial!!!
    Ai vai mais uma duvida, possivel faz o codigo em erlang!!
    Exemplo em pascal:

    program media;
    uses crt;
    var
    num1,num2 : integer;
    media: real;

    begin
    clrscr;
    writeln (‘digite a 1° nota’);
    readln (num1);
    writeln (‘digite a 2° nota’);
    readln (num2);
    media:= num1 + num2;
    writeln;//para pular uma linha
    writeln (‘A media é: ‘,media);
    end.

    Como ficaria isso em Erlang?
    Agradeço a atenção!!

  4. @Dhérsy Gabreil: De pouco serve dar-te o peixe. É sempre melhor ensinar a pescar.

    A partir do exemplo anterior consegues com certeza chegar a uma solução para este problema.
    Sugiro que tentes implementar esse algoritmo em Erlang e depois, caso tenhas problemas, que deixes aqui o código para que te possa ajudar.

    A solução é bastante simples.

    Bom trabalho.

  5. Dhérsy Gabreil diz:

    Tentei executar o codigo que você fez ai,só que não consegui.

    por isso levantei a questão do exemplo completo em pascal;pois creio que com a resolução do mesmo, minhas duvidas diminuiram muito!!

    Agradeço sua atenção…E desculpe-me pelo incomodo!

  6. @Dhérsy Gabreil: Em relação ao primeiro exemplo poderá fazer o download do módulo[1] para testar.
    Aceda à directoria onde guardou o ficheiro e corra o interpretador (erl). Na prompt do erl execute:
    c(demo).
    demo:demo().

    Deve ter em atenção que neste exemplo espera-se que seja introduzido um float pelo que só nestas circunstâncias o fread retornará {ok, Value} (onde Value é uma lista). Se experimentar introduzir um inteiro o script será abortado retornando uma excepção:
    ** exception error: no match of right hand side value {error,{fread,float}}
    in function demo:demo/0

    Relativamente ao segundo algoritmo em Pascal fica uma possível solução em Erlang[2]. Em nenhum dos casos é feita qualquer validação ao valor introduzido pelo que a execução poderá ser abortada.

    [1] http://blog.pauloasilva.com/wp-content/uploads/2008/11/demoerl.zip
    [2] http://blog.pauloasilva.com/wp-content/uploads/2008/11/mediaerl.zip

  7. Dhérsy Gabreil diz:

    Amigo fico muito grato!!!
    Me ajudou muito mesmo!!
    Existe alguma forma de salvar em arquivo com erlang?
    E se posivel me passe alguma documentação do uso de erlang e alguma biblioteca!!?

    Abraço!!

  8. Dhérsy Gabreil diz:

    aparti do seu exemplo fui tentar construir alguns programas …mas veja o que esta acontecendo:

    -module(soma).
    -export([soma/0]).

    soma() ->
    {ok,[Num1]} = io:fread(‘Primeiro Numero: ‘, “~f”),
    {ok,[Num2]} = io:fread(‘Segundo Numero: ‘, “~f”),
    soma = (Num1 + Num2),
    io:format(“Soma: ~f~n”,soma).

    1> c(soma).
    ./soma.erl:8: Warning: format arguments not a list
    {ok,soma}
    2> soma:soma().
    Primeiro Numero: 10.0
    Segundo Numero: 20.0
    ** exception error: no match of right hand side value 30.0
    in function soma:soma/0 <— o que é isso?

  9. Dhérsy Gabreil diz:

    Paulo a questão da soma eu já resolvi!!!

  10. @Dhérsy Gabreil: a melhor documentação está, como referi, no site erlang.org[1].
    Lá podes encontrar alguns exemplos[2] com vários níveis de dificuldade assim como cursos e livros[3].

    A minha relação com o erlang foi sempre de autodidacta. Foi-me apresentada no curso de Programação Concorrente para o qual tive que desenvolver um servidor que satisfizesse as necessidades da bolsa de valores.
    A partir daqui tive contacto com Mnesia[4] (Sistema de Gestão de Base de Dados Distribuído), Sockets, GUIs etc.

    Sem me alongar quero lembrar-te que o mais importante é conhecer os fundamentos da linguagem. Vi no teu exemplo que ainda não tens sedimentado o conceito de átomo. Dedica alguma atenção a este ponto pois tudo o resto será brincadeira.

    Tenho algum código fonte que não me importo de disponibilizar, mas terás de me conceder algum tempo para o procurar e organizar.

    [1] http://erlang.org
    [2] http://erlang.org/examples.html
    [3] http://erlang.org/download.html
    [4] http://www.erlang.org/doc/apps/mnesia/index.html

  11. Dhérsy Gabreil diz:

    Agradeço muito sua atenção!!!
    E qualquer codigo que puder me mandar se bem vindo!!!
    Estou estudando feito um doido,mas estou gostando muito da linguagem.

Deixar uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

*


nine − 7 =

Pode usar estas etiquetas HTML e atributos: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">