Qualquer aluno que começa a estudar uma
linguagem de programação quer matar o professor! Digo isso pois passei a mesma
vontade. É claro que com o tempo não fui mais vendo códigos e sim uma mulher de
vermelho... (Matrix). São muitas variáveis para detectar o que causa esse
repúdio do aluno ao aprender algo tão valioso em tempos que a programação está
em quase tudo. Mas
o que você não sabe é que existem algumas linguagens que foram criadas com o
simples objetivo de serem uma brincadeira, um jogo mental, quase que uma piada
Hacker.
O primeiro programa que um professor mostra é o famoso "Hello World" que escreve na tela uma mensagem como se fosse a primeira coisa que seu programa dissesse ao mundo. Exemplos de "Hello World":
Olá mundo (Hello world) em java.
Olá mundo em Portugol.
Saída após a compilação do código.
Essas linguagens de tão estranhas que são chamadas de Esotéricas (pra muita gente todas as linguagens são exotéricas…).
São códigos sem valor acadêmico ou profissional, mas que sem dúvida são muito
engraçadas de se conhecer. Esses códigos chegam ao nível de abstração que a
maioria deles nem tem compiladores formais para gerar um programa.
Befunge
Essa é uma linguagem escrita
bidimensionalmente. Como assim? Você vai indicando setas de instruções de
controle, passando da esquerda para a direita e de cima para baixo, e os laços
são construídos através do envio de controle de fluxo em um ciclo. Bizarro, não?!
O objetivo do Befunge
era criar uma linguagem que fosse difícil de se compilar. Imagina ter um código
que pode andar em 4 direções ao mesmo tempo? Bizarro! Isso sem falar que faz
parte da sua implementação que ele seja auto-modificado, o que exige que ele
seja interpretado e coisa e tal…
Olha como fica o “Hello
World” aqui:
Pelo que entendi o programa começa jogando
“olleH” pra pilha com os números ASCII. Ai na pilha ele opera em LIFO (last in,
first out) e sai o “Hello”. Dai ele adiciona o código ASCII para ‘espaço’, o
número 32 (multiplicando 4 por 8), seguido da palavra “World” e o caractere de
nova linha, número 10 no código ASCII e o fim do programa (caractere ‘@’).
Brainfuck
Alguns programadores
alegam que foi criada pra ser uma linguagem extremamente simples. Ela é tão
simples que só tem 8 comandos. A ideia era criar uma linguagem tão minimalista
que fosse compilada pelo menor compilador existente, o AMIGA OS 2.0, com 240
bytes de tamanho.
O bom e velho “Olá Mundo” fica assim:
O código é meio pirado
de entender. Os '[]' são um bloco de comando. Antes deles tem 10 '+' que
multiplica por 10 todos os valores dentro do bloco. Ai dentro do bloco vc tem
alguns ponteiros de array, '>', que tem algum valor numérico, os '+'. Depois
de colocar os números 80, 110, 156, 30, 80, 120, 110, 100, 110, 30 ele retorna
ao começo dos ponteiros e vai subtraindo o necessário pra formar a frase
"Ola Mundo" e imprimir o resultado.
Whitespace
Whitespace é uma
liguagem do capeta. Se você pegar um código impresso, escrito nessa linguagem, vai
parecer um erro de impressão! É tipo a desculpa perfeita de um aluno que não fez
o trabalho de programação. Whithespace é escrita completamente usando
"Tab" e "espaço".
O whitespace é uma
linguagem binária, que não tenho a menor ideia de como funciona, tudo que sei é
que o espaço vale 1 e o tab 0.
Olha o "Hello
World" como fica nessa imagem, onde os Espaços estão rosa e os Tab em
roxo:
LOLCode
LOLCode é a linguagem de
programação baseada nas memes da internet. 'Memes' são modismos, frases,
expressões e coisas assim que viram moda na internet. LOL, trollface, fover
alone não?!
Olha um "Hello
World" aqui:
Shakespeare
Skakespeare é uma das
linguagens esotéricas mais fodas que conheço e foi por causa dela que fiz esse
post. Ela é uma linguagem de programação que quer ser mais que uma linguagem de
programação.
Ora, então por que não
fazer uma linguagem de programação que pareça com uma peça de Shakespeare?!
O código começa com um
título, como todo título de peça. Depois entram os Atos e Cenas, que são
numerados, como numa peça e que funcionam como o comando GOTO, mais ou menos
como num código de Assembly. As variáveis por sua vez são nomes de personagens, como
ROMEU e JULIETA.
O segredo da linguagem é
que ela tem dezenas de palavras reservadas e que tem o mesmo significado, assim
você pode se dar o luxo de construir frases para representar declarações e relações.
Somando isso com mais algumas frases de comando como "Speak your
mind", que é pra imprimir o resultado da variável, e coisas assim, você
tem o arcabouço necessário pra construir interessantes códigos.
O código do "Hello
World" fornecido pelo próprio pessoal que criou o código:
se Lingua::Shakespeare;
The Infamous Hello World Program.
Romeo, a young man with a remarkable patience.
Juliet, a likewise young woman of remarkable grace.
Ophelia, a remarkable woman much in dispute with Hamlet.
Hamlet, the flatterer of Andersen Insulting A/S.
Act I: Hamlet's insults and flattery.
Scene I: The insulting of Romeo.
[Enter Hamlet and Romeo]
Hamlet:
You lying stupid fatherless big smelly half-witted coward!
You are as stupid as the difference between a handsome rich brave
hero and thyself! Speak your mind!
You are as brave as the sum of your fat little stuffed misused
dusty
old rotten codpiece and a beautiful fair warm peaceful sunny summer's
day. You are as healthy as the difference between the sum of the
sweetest reddest rose and my father and yourself! Speak your mind!
You are as cowardly as the sum of yourself and the difference
between a big mighty proud kingdom and a horse. Speak your mind.
Speak your mind!
[Exit Romeo]
Scene II: The praising of Juliet.
[Enter Juliet]
Hamlet:
Thou art as sweet as the sum of the sum of Romeo and his horse and his
black cat! Speak thy mind!
[Exit Juliet]
Scene III: The praising of Ophelia.
[Enter Ophelia]
Hamlet:
Thou art as lovely as the product of a large rural town and my amazing
bottomless embroidered purse. Speak thy mind!
Thou art as loving as the product of the bluest clearest sweetest
sky
and the sum of a squirrel and a white horse. Thou art as beautiful as
the difference between Juliet and thyself. Speak thy mind!
[Exeunt Ophelia and Hamlet]
Act II: Behind Hamlet's back.
Scene I: Romeo and Juliet's conversation.
[Enter Romeo and Juliet]
Romeo:
Speak your mind. You are as worried as the sum of yourself and the
difference between my small smooth hamster and my nose. Speak your
mind!
Juliet:
Speak YOUR mind! You are as bad as Hamlet! You are as small as the
difference between the square of the difference between my little pony
and your big hairy hound and the cube of your sorry little
codpiece. Speak your mind!
[Exit Romeo]
Scene II: Juliet and Ophelia's conversation.
[Enter Ophelia]
Juliet:
Thou art as good as the quotient between Romeo and the sum of a small
furry animal and a leech. Speak your mind!
Ophelia:
Thou art as disgusting as the quotient between Romeo and twice the
difference between a mistletoe and an oozing infected blister! Speak
your mind!
[Exeunt]
Um pouco grande, mas se vc entende de
programação vc vai perceber que dentro dessas frases tem comandos sendo
passados, e relações, e testes e comparações.
Malbolge
Malborge é a linguagenm
infernal. Seu nome foi dado por ser o mesmo do oitavo circulo do inferno,
segundo a obra, "A Divina Comédia" de Dante.
O fato é que ela foi criada pra ser a língua mais complexa das línguas de
programação. Essa língua é tão foda, mas tão foda, que depois de ter sido
criada demorou dois anos até que alguém conseguisse escrever um código pra ela
e, diga-se de passagem, que quem escreveu o código foi uma máquina e não um
humano.
Olha como fica o
"Hello World" nessa linguagem:
Sério, olha pra isso. Você, programador
profissional, programador de fim de semana ou meramente um curioso: O que você
vê quando olha o código acima? Pra mim alguém bateu a cabeça no teclado várias
vezes e saiu isso!
Bom gente é isso.
Existem muitas linguagens esotéricas interessantes, mas aqui falei de algumas
só para provocar a curiosidade de quem quiser estudar isso mais a fundo.
Um grande abraço a todos e bons estudos!