Categorias

Você não vai acreditar! Clickbait virou linguagem de programação?!

Os especialistas estão perplexos! O que esse desenvolvedor fez desafia tudo que se sabia antes sobre programação! Eles disseram que era impossível, mas o que ele conseguiu vai te surpreender…

Todo mundo conhece (ou deveria conhecer) um clickbait só de bater o olho. São aquelas manchetes sensacionalistas que não revelam nada, prometem mais do que entregam e aguçam a curiosidade do leitor, induzindo ao clique e à visualização. A tática eticamente questionável é muito antiga e aparecia nas manchetes de tabloides que competiam pela atenção e pelo dinheiro do leitor nas bancas de jornais. O clickbait não é necessariamente uma fake news, mas uma chamada exagerada que muitas vezes não corresponde à expectativa de quem acaba lendo a notícia completa. Na era em que o faturamento da mídia digital depende do volume de tráfego para uma página, a prática encontrou um novo fôlego, se modernizou, virou arte.

E o que isso tem a ver com programação? Um desenvolvedor chamado Linus Lee encarou o desafio de criar uma linguagem funcional inspirada nos jargões exagerados dos clickbait. Nascia então The Tabloid Programming Language, uma linguagem pequena e simples, projetada em apenas seis horas, mas que o desenvolvedor segue dando suporte e expandindo. No momento, a linguagem suporta apenas números, strings e valores booleanos. Sua semântica corresponde ao JavaScript, uma vez que o JavaScript é usado para implementar o backend da linguagem. Apesar de sua simplicidade, a linguagem atende aos requisitos da completude de Turing.

Todo o interpretador está contido em um único arquivo JavaScript. Nele, existem quatro camadas, que incluem um tokenizador de passagem dupla que primeiro produz um fluxo de tokens de palavras (uma string literal é uma única palavra, as pontuações são tratadas separadamente) e, em seguida, um segundo tokenizador que tokeniza termos-chave que são compostos com várias palavras. O interpretador utiliza um avaliador tree-walk na árvore sintática para executar um programa.

Além de um interpretador online em JavaScript, Tabloid agora também tem uma implementação compatível com o Racket e até mesmo uma pequena biblioteca de funções auxiliares.

Lista completa dos termos chave de Tabloid (a última irá te surpreender!)

  • DISCOVER HOW TO …. WITH (“DESCUBRA COMO… COM”): declara uma função
  • RUMOR HAS IT (“DIZEM POR AÍ”): inicia um escopo de bloco
  • A OF B,C chama a função A com argumentos B, C
  • WHAT IF … LIES! (“E SE… MENTIRAS!”): uma expressão if-else
  • END OF STORY (“FIM DE HISTÓRIA”): termina um escopo de bloco
  • EXPERTS CLAIMS … TO BE (“ESPECIALISTAS ALEGAM… SER”): declara ou atribui a uma variável
  • YOU WON’T WANT TO MISS (“VOCÊ NÃO VAI QUERER PERDER”): saída de impressão
  • LATEST NEWS ON (“ÚLTIMAS NOTÍCIAS”): recebe entrada do usuário
  • TOTALLY RIGHT (“TOTALMENTE CERTO”): verdadeiro
  • COMPLETELY WRONG (“COMPLETAMENTE ERRADO”): falso
  • AND, OR e/ou operadores booleanos
  • PLUS, MINUS, TIMES, DIVIDED BY, MODULO as operações aritméticas óbvias
  • IS ACTUALLY (“É NA VERDADE”): é igual a
  • BEATS, SMALLER THAN (“VENCE, MENOR QUE”): maior que / menor que
  • SHOCKING DEVELOPMENT (“CONCLUSÃO CHOCANTE”): retorno de uma função
  • PLEASE LIKE AND SUBSCRIBE (“POR FAVOR DEIXE SEU LIKE E SE INSCREVA”): fim do programa

E, sim, como dita a norma dos clickbaits, tudo é escrito em caixa-alta, em letras garrafais mesmo para chamar a atenção, o que implica no fato de Tabloid ser uma linguagem de programação case-sensitive.

Role a página AGORA para ver Tabloid como você nunca viu antes!

E como tudo isso funciona na hora da onça beber água? O próprio Linus Lee, na página oficial do projeto, oferece dois exemplos do código em ação, com possibilidade do usuário editar o código fonte e rodar os resultados em tempo real.

O primeiro exemplo devolve os dez primeiros números da sequência de Fibonacci:

DISCOVER HOW TO fibonacci WITH a, b, n
RUMOR HAS IT
    WHAT IF n SMALLER THAN 1
        SHOCKING DEVELOPMENT b
    LIES! RUMOR HAS IT
        YOU WON'T WANT TO MISS b
        SHOCKING DEVELOPMENT
            fibonacci OF b, a PLUS b, n MINUS 1
    END OF STORY
END OF STORY

EXPERTS CLAIM limit TO BE 10
YOU WON'T WANT TO MISS 'First 10 Fibonacci numbers'
EXPERTS CLAIM nothing TO BE fibonacci OF 0, 1, limit

PLEASE LIKE AND SUBSCRIBE

Na saída, a string de texto sairá em caixa-alta também e cada um dos números fornecidos retornará com ponto de exclamação, para manter a proposta sensacionalista…

O segundo exemplo é fatorial:

YOU WON'T WANT TO MISS 'Hello, World!'

DISCOVER HOW TO factorial WITH n
RUMOR HAS IT
    WHAT IF n IS ACTUALLY 0
        SHOCKING DEVELOPMENT 1
    LIES!
        SHOCKING DEVELOPMENT
            n TIMES factorial OF n MINUS 1
END OF STORY

EXPERTS CLAIM result TO BE factorial OF 10
YOU WON'T WANT TO MISS 'Result is'
YOU WON'T WANT TO MISS result

PLEASE LIKE AND SUBSCRIBE

Sete detalhes chocantes jamais divulgados!

  1. Tabloid tem uma gramática baseada em expressões e carece de qualquer distinção entre expressões e declarações. Se não houver um retorno explícito de uma função, o valor da última expressão será retornado.
  2. Tabloid oferece suporte a operadores infixos binários para aritmética e lógica.
  3. No Tabloid, novas linhas não são significativas. Se você quiser, é possível deixar os especialistas boquiabertos e espremer todo o seu programa em uma única linha de código-fonte!
  4. O analisador não conhece a precedência do operador. Para encadear operadores infixos como 3 PLUS 2 TIMES 10, use parênteses, como 3 PLUS (2 TIMES 10).
  5. Não há uma construção de loop embutida, como um loop while.
  6. Não há relatórios de erros muito bons. Se houver um erro durante a análise ou no tempo de execução, o interpretador relatará um erro e o que deu errado, mas não informará onde houve confusão e revelará os detalhes da implementação do interpretador.
  7. Tabloid também não tem comentários e você NÃO vai acreditar no motivo! Linus Lee simplesmente se esqueceu de implementar durante a criação da linguagem. Segundo suas próprias palavras, “só lembrei umas 7 horas depois e fiquei com preguiça”.