Qual é a Linguagem de Programação Mais Difícil do Mundo?

A linguagem de programação considerada como a mais difícil do mundo se chama Malbolge em referência ao oitavo círculo do Inferno na Divina Comédia do autor Dante Alighieri. Foi desenvolvida em 1998 por Ben Olmstead com o objetivo de ser a pior linguagem de programação do mundo em especial por seu caráter esotérico.

Os desenvolvedores da Malbolge trabalharam muito para dificultar ao máximo o entendimento de programadores. Para criar os obstáculos os desenvolvedores usaram alguns truques que quando simplificados permitem a compreensão em algum nível da linguagem. Dessa forma o grau de dificuldade dessa linguagem depende da disposição do programador. Que tal conhecer um pouco mais sobre essa linguagem e sua complexidade?

O Que é Uma Linguagem de Programação Esotérica?

Linguagens de programação classificadas como esotéricas (ou esolang) são linguagens de programação pensadas para fazer testes de limites dos projetos de linguagem para computadores. Podem ser feitas como brincadeiras, seria mais ou menos como mostrar na prática o que não deve ser feito.

Vale dizer que essa classificação não é abordada por nenhum livro com foco científico. No entanto, vale mencionar que a INTERCAL aparece na lista da HOPL: an interactive Roster of Programming Languages, definida como uma piada bem elaborada. Em geral esse tipo de linguagem não é desenvolvida para um uso no mundo real. Inclusive linguagens como a Malbolge são criadas exatamente para que não possam ser usadas para realizar atividades simples.

As linguagens esotéricas objetivam gerar desafios para quem tenta usá-las, é uma brincadeira entre programadores, hackers gostam de usar essas linguagens como seus passatempos. A aplicação da palavra esotérica tem como função demonstrar que elas são diferentes de outras linguagens de uso comum no dia a dia. Usabilidade não é uma preocupação desse tipo de linguagem, justamente o contrário é o que se busca.

INTERCAL

A linguagem INTERCAL, mencionada acima, é o exemplo mais antigo de linguagem de programação esotérica tendo sido criada em 1972 por James Lyons e Don Woods. Eles desejavam criar uma linguagem que fosse distinta de tudo o que já havia sido feito. Essa linguagem abriu caminho para muitas outras do mesmo tipo.

Malbolge e Seus Fatos Importantes de Programação

Linguagem de Programação

Linguagem de Programação

O primeiro programa da linguagem Malbolge foi criado somente dois anos após ela ter sido desenvolvida tamanha a sua dificuldade. Aliás, esse programa foi desenvolvido por um algoritmo com base em LISP e não por um ser humano. No dia 24 de agosto de 2000, Anthony Youhas, declarou ter dominado a linguagem após ter conseguido desenvolver três programas que imprimiam frases diferentes.

A declaração não é descabida quando se sabe que poderiam levar anos para criar uma simples instrução de repetição em Malbolge. Para fazer com que o computador tivesse a frase “Hello World” na tela seria necessário o seguinte código de Malbolge:

(=<`:9876Z4321UT.-Q+*)M’&%$H”!~}|Bzy?=|{z]KwZY44Eq0/{mlk**

hKs_dG5[m_BA{?-Y;;Vb’rR5431M}/.zHGwEDCBA@98\6543W10/

Entendendo a Linguagem Complexa

O Malbolge usa três registradores que atuam como variáveis: a, c, d. Essas variarias começam com o valor zero. Cabe a c receber a instrução que deverá ser processada naquele momento e d recebe a informação de um endereço de memória específico para as operações realizadas.

A linguagem conta com 59049 locações de memórias virtuais que podem ser usadas para armazenar números com dez dígitos. O programa é recebido na primeira parte das locações e as restantes são preenchidas por dados de instrução conhecidos como Crazy Operation que ficam com os endereços anteriores: ([m] = crz [m – 2], [m – 1]).

São realizadas operações imediatas que repetem os endereços de memória 12 vezes uma vez que os dígitos individuais ternários são repetidos a cada três ou quatro endereços chegando então a um grupo de endereços que foram 12 vezes repetidos de forma igualitária.

As Instruções da Malbolge

Ao todo a Malbolge têm 8 instruções que funcionam a partir do valor atribuído no registrador c. Na sequência é acrescentado um valor conforto a instrução e subtraído 94 até o número chegar a um valor menor do que 94. Conforme o valor obtido o interpretador Malbolge dará a seguinte resposta:

4

O valor do endereço de memória d será assomado com um e nesse local será realizada a operação.

5

O valor ASCII é imprimido e guardado na variável a.

23

Nesse caso é acrescentado o código ASCII da tecla pressionada para executar o algoritmo em a.

39

Faz a rotação do valor que foi armazenado em d num dígito. Caso o número seja: 000111254 retornará como 400011125. O número será armazenado tanto em d quanto em a.

40

Faz a cópia do valor armazenado em d e o envia para d na forma de endereço de memória.

62

Faz a Crazy Operation (abaixo explicaremos melhor) usando o valor que está guardado no endereço de memória d e faz o armazenamento com a nos dois registradores.

68

Nada acontece.

81

Completa a execução do algoritmo.

Quando termina de executar o interpretador faz uma nova criptografia das instruções para que não realize a mesma função no futuro tornando a função de criar mais difícil.

Crazy Operation: O Que é?

Essa operação pega dois valores ternários com dez dígitos e faz com que retornem conforme a tabela ternária. Para que fique mais claro do que se trata daremos um exemplo prático a seguir:

Imagine que vamos executar a Crazy Operation crz 0001112220, 012012012, nesse caso iremos obter como retorno o seguinte valor: 1001022211. Na tabela: ///0 1 2 0 1 0 0 1 1 0 2 2 2 2 1.

Basicamente se deve fazer a comparação de cada dígito individualmente com o que está demonstrado na tabelado do Malbolge. No caso do crz 0001112220, 012012012 a comparação deve ser feita primeiro entre 0001112220 com 012012012.

A Encriptação

Quando a instrução é executada é feita a subtração de 94 do que foi guardado em c diversas vezes até que se chegue a uma resposta que seja menor do que 94. Na sequência a criptografia pode ser feita usando duas metodologias diferentes. Vamos falar um pouco mais sobre apenas um dos métodos porque o outro se baseia no uso de uma tabela gigantesca – não e atoa que essa é a linguagem de programação mais difícil do mundo.

Basicamente no método que explicaremos o trecho criptografado retorna a partir do valor ASCII que está armazenado em c. O código fica dessa forma:

0000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123

9m<.TVac`uY*MK’X~xDl}REokN:#?G”i@5z]&gqtyfr$(we4{WP)H-Zn,[%\3dL+Q;>U!pJS72FhOA1CB6v^=I_0/8|jsb

Gostou de conhecer mais sobre a complexa linguagem Malbolge? Curta e compartilhe!

Gostou? Curta e Compartilhe!

Categoria(s) do artigo:
Internet

Artigos Relacionados


Artigos populares

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Time limit is exhausted. Please reload CAPTCHA.