Erlang é uma linguagem de programação simultânea de uso geral e sistema de tempo de execução coletado por lixo. O subconjunto seqüencial de Erlang é uma linguagem funcional, com avaliação rigorosa, atribuição única e digitação dinâmica. Por simultaneidade, segue o modelo do ator. Foi desenvolvido pela Ericsson para oferecer suporte a aplicativos distribuídos, tolerantes a falhas, em tempo real suave e sem interrupção. Ele suporta troca a quente, para que o código possa ser alterado sem parar o sistema.
Embora os threads sejam considerados um tópico complicado e propenso a erros na maioria dos idiomas, o Erlang fornece recursos no nível do idioma para criar e gerenciar processos com o objetivo de simplificar a programação simultânea. Embora toda a simultaneidade seja explícita no Erlang, os processos se comunicam usando a passagem de mensagens em vez de variáveis compartilhadas, o que elimina a necessidade de bloqueios.
A primeira versão foi desenvolvida por Joe Armstrong em 1986. 2 Era originalmente uma linguagem proprietária da Ericsson, mas foi lançada como código aberto em 1998.