Linguagens Esotéricas

fish

Power Member
Toda esta informação é retirada da www.wikipedia.org

Linguagens Esotéricas
Lista de Linguagens

Linguagens Esotéricas são linguagens geralmente criadas para serem propositadamente estranhas, para testar conceitos ou simplesmente por piada. Todas as linguagens apresentadas a seguir são verdadeiras.

==============================

brainfuck

Linguagem criada em 1993 por Urban Müller com o objectivo de ser compilada pelo compilador mais pequeno possivel, alguns destes atingem 200 Bytes. Apesar de ter apenas oito instruções, é uma linguagem compatível com a máquina de Turing.

As 8 instruções:
> Increment the pointer.
< Decrement the pointer.
+ Increment the byte at the pointer.
- Decrement the byte at the pointer.
. Output the byte at the pointer.
, Input a byte and store it in the byte at the pointer.
[ Jump forward past the matching ] if the byte at the pointer is zero.
] Jump backward to the matching [ unless the byte at the pointer is zero.

A linguagem utiliza apenas um apontador (num array com 30.000 Bytes inicializados a zero) e duas streams (Input/Output).

Hello World:
++++++++++
[
>+++++++>++++++++++>+++>+<<<<-
] The initial loop to set up useful values in the array
>++. print 'H'
>+. print 'e'
+++++++. 'l'
. 'l'
+++. 'o'
>++. space
<<+++++++++++++++. 'W'
>. 'o'
+++. 'r'
------. 'l'
--------. 'd'
>+. '!'
>. newline

http://en.wikipedia.org/wiki/Brainfuck
http://www.muppetlabs.com/~breadbox/bf/

==============================

COW

A maior parte das linguagens modernas são feitas a pensar nos primatas. Sean Heber criou esta linguagem em 2003 a pensar nos bovinos. É uma variante da brainfuck, com mais três instruções.
Linguagem Turing completa. Todas as instruções são variantes de 'moo', à excepção de 'MMM', 'OOO' e 'oom'.

Sequência de Fibonacci:
MoO moO MoO mOo MOO OOM MMM moO moO
MMM mOo mOo moO MMM mOo MMM moO moO
MOO MOo mOo MoO moO moo mOo mOo moo

http://en.wikipedia.org/wiki/COW_programming_language
http://www.bigzaphod.org/cow/

==============================

Java2K

Java2K não tem nada a ver com Java. É uma linguagem probabilística, o que significa que, quando uma função é chamada, existe uma determinada probabilidade de ela fazer o que se pretende, mesmo para funções pré-definidas. Segundo o autor, esta linguagem é bastante mais fácil de implementar, pois é mais prático criar uma função que devolve o valor correcto em 90% das vezes do que tentar criar uma função que o faça em 99.999% das vezes. Acrescenta ainda que "Java sucks".

Hello World:
http://p-nand-q.com/humor/programming_languages/java2k/13.txt

http://en.wikipedia.org/wiki/Java2K
http://p-nand-q.com/humor/programming_languages/java2k.html

==============================

l33t

Linguagem criada por Stephen McGreal e Alex Mole, baseada em brainfuck. Composta por 10 instruções, cada uma delas com um código numérico atribuido. As palavras são separadas por espaços e têm o valor numérico da soma de todos os caracteres numéricos (0-9) na palavra. Palavras sem números são avaliadas a zero.
É possivel escrever código utilizando apenas números, embora esta prática seja altamente desencorajada. Por outro lado, a capitalização aleatória das letras é altamente recomendada.

Hello World:
// "Hello World" by Stephen McGreal.
// Note that the views expressed in this source code do not necessarily
// coincide with those of the author :o)

Gr34t l33tN3$$?
M3h...
iT 41n't s0 7rIckY.

l33t sP33k is U8er keWl 4nD eA5y wehn u 7hink 1t tHr0uGh.
1f u w4nn4be UB3R-l33t u d3f1n1t3lY w4nt in 0n a b4d4sS h4xX0r1ng s1tE!!! ;p
w4r3Z c0ll3cT10n2 r 7eh l3Et3r!

Qu4k3 cL4nS r 7eh bE5t tH1ng 1n teh 3nTIr3 w0rlD!!!
g4m3s wh3r3 u g3t to 5h00t ppl r 70tAl1_y w1cK1d!!
I'M teh fr4GM4stEr aN I'lL t0t41_1Ly wIpE teh phr34k1ng fL00r ***j3d1 5tYlE***
wItH y0uR h1dE!!!! L0L0L0L!
t3lEphR4gG1nG l4m3rs wit mY m8tes r34lLy k1kK$ A$$

l33t hAxX0r$ CrE4t3 u8er- k3wL 5tUff lIkE n34t pR0gR4mm1nG lAnguidGe$...
s0m3tIm3$ teh l4nGu4gES l00k jUst l1k3 rE41_ 0neS 7o mAkE ppl Th1nk th3y'r3
ju$t n0rMal lEE7 5pEEk but th3y're 5ecRetLy c0dE!!!!
n080DY unDer5tAnD$ l33t SpEaK 4p4rT fr0m j3d1!!!!!
50mE kId 0n A me$$4gEb04rD m1ghT 8E a r0xX0r1nG hAxX0r wH0 w4nT2 t0 bR34k
5tuFf, 0r mAyb3 ju5t sh0w 7eh wAy5 l33t ppl cAn 8E m0re lIkE y0d4!!!
hE i5 teh u8ER!!!!
1t m1ght 8E 5omE v1rus 0r a Pl4ySt4tI0n ch34t c0dE.
1t 3v3n MiTe jUs7 s4y "H3LL0 W0RLD!!!" u ju5t cAn'T gu3s5.
tH3r3's n3v3r anY p0iNt l00KiNg sC3pT1c4l c0s th4t, be1_1Ev3 iT 0r n0t, 1s
whAt th1s 1s!!!!!

5uxX0r5!!!L0L0L0L0L!!!!!!!

http://en.wikipedia.org/wiki/L33t_programming_language
http://electrod.ifreepages.com/l33t.htm

==============================

Spaghetti

Linguagem criada para produzir Código-Esparguete, em que a ordem das linhas de código pode ser aleatória sem afectar a execução do programa. Cada linha de código tem de terminar com um "GOTO" que aponta para qualquer linha, desde que não seja a seguinte. Conceitos como 'Sub-programas', 'Tipos de dados' ou 'Variáveis' tornam o código mais compreensível, e portanto não têm lugar nesta linguagem.

Hello World:
10[?100]11 'Hello World
9[?108]10
13[?101]2
12[?10]0
4[?111]5
8[?114]9
2[?108]3
11[?33]12
6[?87]7
3[?108]4
1[?48]13
5[?32]6
7[?111]8

http://en.wikipedia.org/wiki/Spaghetti_programming_language
http://lilly.csoft.net/~jeffryj/compilers/spaghetti/spaghett.txt

==============================

Shakespeare Programming Language (SPL)

À semelhança de l33t, esta é uma linguagem desenhada para fazer os programas parecerem outra coisa. Neste caso, peças de Shakespeare.
No principio do programa, é definida uma lista de personagens, em que cada personagem define uma pilha. Estas personagens têm de interagir entre si, cada uma manipulando a pilha da outra.

Hello World (apenas parte, a versão completa são várias páginas):

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]

http://en.wikipedia.org/wiki/Shakespeare_programming_language
http://shakespearelang.sourceforge.net/

==============================

Whenever

Whenever é uma linguagem criada por David Morgan-Mar. Nesta linguagem não há sentido de urgência, por isso as instruções são (eventualmente) executadas quando o compilador quiser. O código funciona como uma lista de tarefas a cumprir. Não existem estruturas de controlo ou variáveis. Funciona apenas em interpretador, pois nunca ninguém quis fazer um compilador.

Hello World:
1 print("Hello world!");

Sequência de Fibonacci:
1 again (1) defer (3 || N(1)<=N(2) || N(7)>99) 2#N(1),3,7;
2 again (2) defer (3 || N(2)<=N(1) || N(7)>99) 1#N(2),3,7;
3 defer (5) print(N(1)+N(2));
4 defer (5) print("1");
5 4,-3,7;
6 defer (4) 3;
7 7;
8 defer (N(7)<100) -1#N(1),-2#N(2),-7#100;
9 defer (3 || 6) 1,3;

http://en.wikipedia.org/wiki/Whenever_programming_language
http://www.dangermouse.net/esoteric/whenever.html

==============================

Whitespace

A maior parte das linguagens ignora espaços em branco. A linguagem Whitespace ignora todos os caracteres que não forem um espaço, tabulação ou final de linha. Consequentemente, um programa escrito em Whitespace pode ser também válido noutra qualquer linguagem. De notar também que esta linguagem pode ser útil para propósitos de segurança, já que ao imprimir um programa escrito em Whitespace nunca ninguém vai desconfiar que aquela folha branca é, na verdade, código-fonte.

Hello World:
Whitespace_in_vim2.png

http://compsoc.dur.ac.uk/whitespace/hworld.ws

http://en.wikipedia.org/wiki/Whitespace_programming_language
http://compsoc.dur.ac.uk/whitespace/

==============================

Abraços [[]]
 
Já conhecia a maioria delas, e penso que a SPL ganha por originalidade (leiam a página oficial, está muito bem documentada) e a brainfuck - a clássica - por código mais marado. :)
 
Priceless :-D

Muito bom mesmo :x2:
Quero aprender a do Moo! :D:D:D parece deveras facil de programar :P

Java2K também parece fantástico:
Java2K não tem nada a ver com Java. É uma linguagem probabilística, o que significa que, quando uma função é chamada, existe uma determinada probabilidade de ela fazer o que se pretende, mesmo para funções pré-definidas.
:lol::lol::lol:
Cumprimentos!
 
fish disse:
Linguagens Esotéricas são linguagens geralmente criadas para serem propositadamente estranhas, para testar conceitos ou simplesmente por piada. Todas as linguagens apresentadas a seguir são verdadeiras.

Devo dizer que são realmente estranhas e ao mesmo tempo comicas :joker: gostei principalmente do COW:-D
 
Hum... a palavra "casa" também tem 2 significados. A de habitação e a do verbo casar.

L33t é mais um fenómeno que uma "forma de escrever um alfabeto" e o criador da linguagem de programação deu-lhe esse nome tendo como base a forma de escrever l33t.
 
Back
Topo