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

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!!
@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
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!!
@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.
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!
@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
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!!
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?
Paulo a questão da soma eu já resolvi!!!
@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
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.