Linguagens de programação esotéricas são linguagens minimalistas, criadas como prova de conceito e / ou desafio, tanto para programar a linguagem quanto para escrever para ela. Vamos ver uma revisão de alguns deles:
Brainfuck
É o mais conhecido e o mais popular, sua sintaxe é bastante simples:
+ + + + + + + + + + [ Loop para iniciar memórias (repete 10 vezes) >+ + + + + + +>+ + + + + + + + + +>+++++++++++>+ + +>+<<<<- 70 100 110 30 10 ] >++. 'H' (72) 1 >>+. 'ou' (111) 3 ---. 'l' (108) 3 <---. 'a' (97) 2 >>++. espaço (32) 4 <+. 'm' (109) 3 ++++++++. 'u' (117) 3 -------. 'n' (110) 3 <+ + +. 'd' (100) 2 >+. 'ou' (111) 3 >+. '!' (33) 4 >. '\ n' (10) 5
Para explicar sua sintaxe, é melhor recorrer a outras linguagens de programação. Então em sua página da Wikipedia forneça-nos esta tabela de equivalências, na qual ptr é equivalente a um unsigned char:
brainfuck | C | Perl |
---|---|---|
> | ++ ptr; | $ ponteiro ++; |
< | –Ptr; | $ ponteiro–; |
+ | ++ * ptr; | $ tape [$ pointer] ++; |
- | - * ptr; | $ tape [$ pointer] -; |
. | putchar (* ptr); | imprimir chr $ tape [$ pointer]; |
, | * ptr = getchar (); | $ tape [$ ponteiro] = ord (<>); |
[ | while (* ptr) { | while ($ tape [$ pointer]) { |
] | } | } |
Ook!
É baseado no anterior, mas usa a combinação de palavras ao invés Ok?, Certo! y Ook. É uma paródia do bibliotecário de Discworld, que se transforma em orangotango e só consegue pronunciar essas três palavras. Vejamos um trecho de código.
Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook.
Supostamente, o que esse "programa" faz é escrever o típico "hello world".
befunge
Na minha opinião a mais original de todas, sua estrutura de controle de fluxo é baseada em setas que indicam ao programa aonde ir. Além disso, torna muito mais fácil criar código mutante (código que se modifica):
vv << 2 ^ v <v13v4 ^ ^ >>?>?> 5 ^ vv v97v6 vv <8. >> ^ ^
O código acima é sobre um gerador de números aleatórios infinitos, que irá gerar um número entre 1 e 9. Muito mais legível do que os anteriores.
Malbolge
Aqui temos uma linguagem de programação criada para ser irritante e ilegível (não, não é C, e não, não é Perl) Se trata de Malbolge, cujo nome vem do 8º círculo do inferno em A Divina Comédia. Aqui está um "Olá, mundo" (ou é o que me disseram que é):
(=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**
hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<
Lolcat
Uma piada simples. Vamos ver seu código:
HAI CAN TEM ESTÁDIO? EU TENHO UM VAR IM IN YR LOOP UP VAR!!1 VISÍVEL VAR IZ VAR BIGGER THAN 10? KTHX IM FORA YR LOOP KTHXBYE
Como é muito mais legível do que as linguagens de programação anteriores, vou deixar você adivinhar o que deve fazer. 😉
INTERCALL
DO ,1 <- #13 POR FAVOR DO ,1 SUB #1 <- #238 DO ,1 SUB #2 <- #108 DO ,1 SUB #3 <- #112 DO ,1 SUB #4 <- #0 DO ,1 SUB #5 <- #64 DO ,1 SUB #6 <- #194 DO ,1 SUB #7 <- #48 POR FAVOR DO ,1 SUB #8 <- #22 DO ,1 SUB #9 <- #248 DO ,1 SUB #10 <- #168 DO ,1 SUB #11 <- #24 DO ,1 SUB #12 <- #16 DO ,1 SUB #13 <- #162 POR FAVOR LER OUT ,1 POR FAVOR DAR UP
Devo dizer que algumas dessas linguagens de programação são muito úteis para aprender alguns conceitos de computador. Por exemplo, Brainfuck é perfeito para aprender sobre ponteiros.
Eu quase prefiro código binário
Sim, definitivamente prefiro programar em binário ou em assembler diretamente, você pode fazer qualquer coisa (afinal, as linguagens de alto nível acabam rodando no processador), mas o interessante sobre as linguagens esotéricas é o desafio que representam. A propósito, roader (o autor deste artigo), você está me irritando. Como C e Perl são ilegíveis e irritantes? Que ofensa intolerável !! Que ultraje! Mas se C é maravilhoso, em perl eu não programei, mas tenho visto bons comentários sobre essa linguagem porque aparentemente ela é muito adequada para lidar com arquivos, strings e esses pods, por exemplo para exploits é muito bom, embora cy python em exploits trabalhe bem ...
Saludos!
Cara, o C e o perl eram uma piada, e sim, são linguagens bastante legíveis, muito práticas e "lindas" nas mãos certas. Claro que na CI vi que algumas pessoas acabam criando um emaranhado de código espaguete ininteligível, e sem manter registro. Quanto ao Perl, não só acontece o mesmo que com o C, mas, sendo extremamente flexível, você pode encontrar coisas que desafiam o bom senso. Devo dizer que não tenho experiência em programação em Perl, mas conheço sua sintaxe muito bem.
O primeiro é como escrever em código morse 😀
E o segundo é ser orangotango, e o quarto, causa enfartes cerebrais.
Muito bom o post.
sinto sua falta, piet
http://www.dangermouse.net/esoteric/piet.html
E chef, unlamda, whitespace e tink. Mas eu não queria tornar o artigo muito grande.
É HORA DO SHOW
FALE COM A MÃO «olá mundo»
VOCÊ FOI ENCERRADO
Hello World em ArnoldC
http://www.genbetadev.com/actualidad/arnoldc-el-lenguaje-basado-en-frases-de-arnold-schwarzenegger
Bem, ele não sabia disso, suponho que a ideia foi dada a ele pelo "terminador nulo"
A verdade é que essas linguagens de programação me fizeram rir. Boa.