Será que Paulo Coelho virou programador? Ou Harry Potter, analista de sistemas?

Nada disso. Em primeiro lugar, quero esclarecer o significado real da palavra esotérico:  é o conhecimento restrito a uns poucos, que não é amplamente divulgado, por ser difícil a sua compreensão ou não interessar a quem não está profundamente ligado ao tema. Se aplica a qualquer área do conhecimento humano. Os místicos passaram a usar o termo justamente por que tratam de conhecimentos ocultos, revelados somente aos iniciados, etc…

Neste nosso caso, as linguagens esotéricas (também conhecidas como esolang), são linguagens de computador que não tem um caráter prático, pois foram criadas para demonstrar os limites teóricos da ciência da computação. Às vezes também como brincadeira, mas sempre são linguagens que funcionam baseadas na Máquina de Turing, ou Turing completas.

Alan Turing (1912-1954), foi um matemático britânico que criou um dispositivo teórico, a Máquina de Turing, que é o modelo abstrato de um computador digital. Se voce pode hoje em dia usar um software, isso se deve à Maquina de Turing. Simplificando, dizer que uma linguagem de programação é Turing completa significa que ela pode realizar qualquer tipo de cálculo, desde que tenha memória para isso. Nem todas são. O SQL, por exemplo, não é.

Uma das mais populares linguagens de programação esotéricas é a Brainfuck (o nome é este mesmo, algo um pouco pior que um quebra-cabeça). Foi criada por Urban Miller em 1993, com a intenção de criar o menor compilador possível e é baseada em outra linguagem, também esotérica, a False. Formalmente, a Brainfuck requer um vetor de células de memória, iniciando na posição zero e compreende apenas oito comandos:

  >  Move o ponteiro de memória para a direita;
  <  Move o ponteiro de memória para a esquerda; 
  +  Aumenta em uma unidade a célula de memória atual;
  -  Diminui em uma unidade a célula de memória atual; 
  .  Exibe  conteúdo da célula de memória atual; 
  ,  Permite a entrada de um caracter e o armazena na célula de memória atual;
  [  Salta para o comando após ao "]“, quando a célula de memória atual é igual a zero 
  ]  Volta o programa para a posição de memória depois de “[".

Como é Turing completa, pode-se fazer qualquer cálculo, porém escreve-se muito. O programa "Hello Word" em Brainfuck, ficaria assim:

>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-]
<.>>>++++++++++[<+++++++++>-]<—.<<<<.+++.——.——–.>>+.

Existem diversas outras, como a Ook, que é uma versão da Brainfuck, sendo que os comandos são compostos com a palavra Ook (linguagem dos gorilas, na opinião do autor, foi criada como uma paródia ao Brainfuck). Uma longa lista pode ser encontrada na página dedicada a elas no Wikipedia.


Leave a Reply