Segunda parte (necessidades):
Eu não acredito que as necessidades sejam outras. Basicamente são as mesmas até de 60 anos atás ou mais. Tem um programa escrito em 1958 que estava rodando em 2015 (acredito que ainda está). O MOCAS do DoD dos EEUU. Na época dos mainframes as coisas eram mais backend/frontend. Se o backend funciona não existe necessidades de refazer tudo. Diferente de linguagens atuais (Python, por exemplo, que a versão 3 não executa os programas da versão 2) COBOL continua compilando programas escritos há décadas. Pascal também tem exemplos de programsa escritos na década de 90 que são compilados (tirando dependências de hardware). Hoje as coisas só estão mais rápidas (algumas como internet, processamento). Mas hoje existem processadores com múltiplos núcleos? Erlang trabalhava com isto há quase 40 anos. Segurança? Ada já tem mais de 40 anos. O pessoal fala "Não reinventar a roda". Todo o dia ela é reinventada com um pretexto diferente com as novas linguagens. Kotlin, Dart, Carbon, etc..
Em vez de ermitão, eu chamo de higlander. :D
Primeira parte (simplicidade e abstração):
Vamos considerar a linguagem que o Carl criou (REBOL).
Simplicidade e abstração andam de mãos dadas::
image: load %assets/images/icone.png
dados: load https://cdn.wsform.com/wp-content/uploads/2020/06/industry.csv
empregado: load https://docs.google.com/uc?export=download&id=1hIvdYeBd9NinV7CNcFjWXnBPpImKmYf3
Sem vírgula, parênteses, etc.. O espaço é o delimitador natural (como ler um livro). Simples.
Como abstração, load
irá ler e interpretar um conteúdo não interessando o local e o tipo. Nos dois últimos casos, os arquivos serão processados e será criada uma estrutura de dados para a linguagem utilizar diretamente. Apenas como complemento, a barra /
é usada para delimitar caminho e também é utilizada em variáveis (não é o termo utilizado por REBOL) como empregado/1/nome
.
>> dados: load https://cdn.wsform.com/wp-content/uploads/2020/06/industry.csv
== [["Industry"] ["Accounting/Finance"] ["Advertising/Public Relations"] ["Aerospace/Aviation"] ["Arts/Entertainment/Pub...
>> length? dados
== 44
>> empregado: load https://docs.google.com/uc?export=download&id=1hIvdYeBd9NinV7CNcFjWXnBPpImKmYf3
== [#(
id: 4051
name: "manoj"
email: "[email protected]"
password: "Test@123"
about: none
token: "...
>> length? empregado
== 55
DSL (na linguagem são chamados de dialetos) é outra característica que abstrai e simplifica a programação. REBOL já vem com três grandes dialetos.
-
VID - para a criação de janela e widgets
-
DRAW - para desenho (linhas, circulos, etc.)
-
PARSE - substitui ER com diversas vantagens
Usando Red que é a linguagem que pretende ser a continuação de REBOL, se eu quiser mostrar uma janela com um botão que, quando pressionado mostre uma mensagem:
view [
title: "titulo"
button "clique-me" [
alert "Hello"
]
]
Temos apenas os colchetes para delimitar os blocos. Fico me perguntando o motivo de flutter não ter uma sintaxe parecida. O pessoal de Clojure está tentando melhorar a sintaxe de Flutter mas não deverá adotada fora da linguagem.
page: read http://www.tabnews.com.br
rule: [thru <title> copy tit to </title>]
parse page rule
print tit
-
lê o conteúdo da página
-
especifica a regra : posiciona o ponteiro após (thru) a tag
<title>
, copia o conteúdo para a palavra tit até encontrar a tag</title>
-
parse aplica a regra na variável (poderia ser escrito tudo na mesma linha mas coloquei em
page
erule
para efeitos de legibilidade)
retorna TabNews: Conteúdos para quem trabalha com Programação e Tecnologia.
Na apresentação sobre JSON, pelo criador Douglas Crockford: The JSON Saga - YouTube, em 22:00 ele diz: "Rebol is a brillant language, and it's a shame it's not more popular, because it deserver to be.". Também não entendo o motivo de REBOL não ser mais popular e ter morrido. Talvez ser muito avançada para 1997?
Ficou meio longo. :D