Skip to content

Linguagens de programação esotéricas

21/08/2008

O objetivo de qualquer linguagem de programação é, ou ao menos deveria ser, permitir que o programador escreva códigos de forma que a implementação tome o menor tempo possível, que seja fácil de ler depois e que não limite a criatividade do programador, sem pesar em termos performance. É claro que tudo isso, seja a linguagem compilada ou interpretada ou os dois, tem que simplesmente rodar como deveria, mesmo nas situações mais inimagináveis. Enfim, não é uma tarefa fácil construir uma linguagem boa.

O curioso é saber que existem linguagens de programação que tem justamente objetivos contrários a esses (como Assembly) são as chamadas linguagens de programação esotéricas. Alguns dizem que elas servem para testar o limite do possível em linguagens de programação, outros dizem que elas servem para introduzir novos conceitos de programação, mas a verdade é que elas são passatempo para h4x0r5 desocupados, ou nem isso.

Através de uma sintaxe bizarra elas conseguem facilmente pirar a cabeça de qualquer um que tente entender o código ou escrever algo sério usando essas linguagens. Elas foram feitas para “fuckar com o seu brain”, como sugere a linguagem brainfuck – sim, esse é o nome dela. Vejamos um programa “Olá mundo!” em brainfuck:

++++++++++[>++++++++>+++++++++++
>---------->+++>++++++++>+++++++
+++++>+++++++++++>++++++++++>+++
++++++++>+++<<<<<<<<<<-]>-.>--.>
++++.>++.>---.>---.>.>.>+.>+++.>

Hã?

Esta linguagem foi projetada com o objetivo de possuir o menor compilador possível e para isso Urban Müller, seu criador, reduziu o número de caracteres reconhecidos pelo compilador para oito. Existem várias linguagens baseadas em brainfuck e a maioria delas inclui novos caracteres, o que não quer dizer que o código se torne mais legível. Veja o mesmo programa escrito acima, agora em L00P, uma linguagem baseada em brainfuck:

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
---.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++.--------------------------------------------------
--------------------------------------------------------------------------------
-------------------.+++++++++++++++++++++++++++++++++++++++++++++.++++++++.-----
--.----------.+++++++++++.----------------------------------------------.&

Entendeu agora?

Por outro lado, uma linguagem de programação esotérica pode ter uma aplicação bem específica. Brainfuck, por exemplo, só possui oito caracteres, o que significa que na melhor das hipóteses só serão necessários três bits para representar cada caractere do programa (dois algarismos na base binária elevado a terceira potência, número de casas, é igual a oito possibilidades de combinações), o que diminui bastante o tamanho do código. Aquele “Olá Mundo!” que ocupava 160 bytes com cada caractere ocupando 8 bits ocuparia apenas 60 bytes após otimizado e com o compilador ocupando até menos de 200 bytes é possível programar usando um espaço de armazenamento limitadíssimo. É muito difícil encontrar uma aplicação prática para brainfuck, mas não dá pra dizer que é completamente inútil.

Outra linguagem bastante curiosa é o Whitespace, que descobri lendo o Nérdson. Esta linguagem, criada por Edwin Brady e Chris Morris, considera somente caracteres em branco como: espaços, tabulações, quebras de linha e linhas em branco. Esta linguagem possui a incrível habilidade de poder estar contida dentro de qualquer código de outra linguagem, porque os caracteres em branco (whitespaces) geralmente não são tão importantes nas outras linguagens de programação. Veja um “Olá Mundo!” em Whitespace:

   
   	  	   
		    	
   		  	 	
		    	 
   		 		  
		    		
   		 		  
		    
	  
   		 				
		    	 	
   	 		  
		    		 
   	     
		    			
   			 			
		  
  	   
   		 				
		    	  	
   			  	 
		    	 	 
   		 		  
		    	 		
   		  
	  
		    		  
   	    	
		    		 	
   		 	
		    			 
   	 	 
		    				
    
	
	     
linha-em-branco_______PS:nada-disto-é-interpretado,lembra?
    	
linha-em-branco
 			 
linha-em-branco
	  	 
	
     	
	   
linha-em-branco
  	
linha-em-branco
   	 
linha-em-branco
linha-em-branco/EOF

Mmmmmmmmm…

Apesar de a primeira vista parecerem inúteis, essas linguagens nos levam a refletir sobre uma questão: a partir de que ponto uma linguagem passa a ser esotérica? Será que o critério é a linguagem em si ou o conhecimento já adquirido com outras linguagens pela pessoa que lê o código? Para uma pessoa leiga no assunto até mesmo um código em Pascal ou BASIC pode ser incompreensível, ou seja, no fundo nenhuma linguagem é esotérica, apenas estão mais distantes ou mais próximas da realidade do programador.

Fonte: Wikipédia e Nérdson.

Anúncios
13 Comentários leave one →
  1. Marcelo Honório (Equipe CAS) permalink
    25/08/2008 12:53

    Não seria “Linguagens de programação exóticas”?!

  2. Rafael Pecin permalink
    25/08/2008 13:21

    /eof

  3. Guilherme permalink
    25/08/2008 14:26

    Hehehe, faltou a mais engraçada de todas, que é a LOLCode… Segue um exemplo:

    HAI
    CAN HAS STDIO?
    VISIBLE “HAI WORLD!”
    KTHXBYE

    Basicamente um “Hello World” 😉

  4. Mamutti permalink
    25/08/2008 18:49

    Marcelo, é esotérica mesmo, eu também achei estranha a denominação, mas olhando no dicionário até que faz sentido. Eu também tinha outra idéia a respeito do que seria uma coisa esotérica…

    Guilherme, essa também é muito legal, mas eu não quis deixar muito longo o texto.

  5. Tonho permalink
    25/08/2008 18:59

    http://www.lolmacs.com/wp/?p=7
    LOLCODE In Ur Nutshelz
    Definitivamente, LOLcode é a linguagem mais divertida 🙂

  6. 26/08/2008 16:11

    Acho que a melhor de todas é uma lingüagem chamada Shakespeare:

    http://shakespearelang.sourceforge.net/report/shakespeare/shakespeare.html

  7. Mamutti permalink
    27/08/2008 4:00

    Thiago, O.o essa eu nunca tinha visto. Que horror!

  8. 29/08/2008 1:32

    Esotérico? Difícil? Você ainda não viu isso:
    http://www.lscheffer.com/malbolge.shtml

    Isso sim está distante de qualquer programador! =)

  9. woodx permalink
    04/10/2008 17:31

    Muito bem colocado! Vejo que muitos nem sabem o que é uma linguagem exotérica e no entanto criticaram o artigo. Parabéns pela divulgação do conhecimento.

  10. Mamutti permalink
    05/10/2008 17:39

    Valeu, woodx!

Trackbacks

  1. Linguagens de programação esotéricas
  2. Linguagens de programação esotéricas at Bragil.Net
  3. Retrospectiva I « iCaju

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: