Executando verificação de segurança...
1

Incrível guaracy! Muito obrigado pelos links, abriu muito minha mente sobre o assunto. Com certeza visar o valor do produto final antes da tech/arquitetura do código é o melhor pra garantir um projeto simples e eficiente. Mas ainda me parece um tanto vaga a ideia de simplicidade que o Carl tanto defendeu. Ele cita a abstração como um ponto, o que é uma boa prática bem consolidada hoje como ele mesmo disse no artigo de 2001, mas não entendi direito o que quis dizer com o segundo ponto.

Muitas vezes, uma lógica complexa para ser abstrata demanda um código extenso - que poderia ser "simplificado" se aproveitando de recursos da framework ou de uma lib. Até onde podemos dizer que isso é uma boa prática, ou seja, que segue o princípio da simplicidade e não culmina num eventual cenário B do artigo que você referenciou que usa a empresa de carros como exemplo?

Vamos considerar o ponto que o próprio Carl levantou sobre como linguagens como C++ e Java acabam complicando algo que o Rebol faz em uma linha. Se eu implemento como padrão na empresa esgotar todos os recursos das techs que utilizamos em prol de código menos verboso e repetitivo, acabo com códigos complexos que dificultam a manutenção e fazem estagiários e júniores novos serem incapazes de compreender o que lêm. Se eu implemento a desmotivação do uso extensivo de recursos externos à linguagem, acabo com projetos muito maiores do que poderiam ser e que, querendo ou não, não vão se adequar aos padrões do mercado - o que afasta cada vez mais minha empresa dos devs que tenho interesse em contratar.

Essa conversa toda não se resumiria em dois caminhos: complexidade no micro e simplicidade no macro (o que o Carl defendia), ou o inverso (o que parece ser a tendência do mercado)? Não vejo como pode haver simplicidade em ambos sem utilizar dos recursos mais modernos. Afinal, é como eu tinha dito, querendo ou não a internet e o desenvolvimento não são mais os mesmos de 15, 20, 30 anos atrás. As necessidades são outras. Ser de tech significa estar constantemente atualizado. Isso só não precisa significar ser dependente das techs que usa. Acho que é possível sim ser auto suficiente e independente de frameworks sem se tornar um ermitão.

Carregando publicação patrocinada...
2
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 e rule 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

1

O que é ser um ermitão?

Eremita ou ermitão é um indivíduo que vive em lugar deserto, isolado, geralmente por motivo de penitência, religiosidade, ou simples amor à natureza, e o local de sua morada é chamado de eremitério.

Peguei a definição do termo que usou GheistLycis. Mas, novamente vou ter que discordar.

Minha praia atualmente tem sido javascript e em alguns casos acredito que usar um framework tem seu mérito. Mas, são casos de extrema complexidade.

Só acho realmente válido usar um framework se for extremamente complexo desenvolver uma solução própria.

Acredito que desenvolver uma solução própria reduz a complexidade, almenta a compreensão, maximisa habilidades, melhora muito a produtividade e permite total controle sobre os aspectos relacionados ao desenvolvimento do software.

O que mais tem por ai são bases de códigos enormes e softwares mediocres desenvolvidos com frameworks que não agregaram valor algum durante ou após o desenvolvimento do software.

Esse negócio de que tem que observar do ponto de vista do negócio para então desenvolver uma arquitetura com os frameworks xyz é a maior besteira.

O que eu tenho visto é muita gente escolhendo ferramenta por afinidade.

Tá é todo mundo querendo tirar o corpo fora e procurando um framework para dispejar o sucesso e também o fracasso quando surge.

Acredito que as linguagens e os patterns estão ai e podem facilmente substituir os frameworks.