2 pontos por GN⁺ 2023-12-07 | 1 comentários | Compartilhar no WhatsApp

Por que Jepsen foi escrito em Clojure?

  • Jepsen foi criado para testar sistemas concorrentes, principalmente bancos de dados.
  • As estruturas de dados imutáveis do Clojure e seu excelente suporte a concorrência facilitam escrever programas concorrentes corretos.
  • Era necessário oferecer suporte a vários clientes de banco de dados, e Clojure tem boa interoperabilidade com Java.

Escolha da linguagem para testes

  • Era necessária uma linguagem concisa e flexível, adequada para trabalho experimental de testes.
  • Clojure é concisa e oferece flexibilidade sintática por meio de seu sistema de macros.
  • Para testes que lidam com estruturas de dados complexas, as estruturas de dados do Clojure e as funções de sua biblioteca padrão são muito adequadas.

Desempenho e estabilidade

  • Era necessária uma linguagem com desempenho "bom o suficiente"; embora Clojure seja relativamente mais lento que Java, a diferença de desempenho pode ser resolvida.
  • As excelentes ferramentas de profiling da JVM funcionam bem com Clojure.
  • Clojure apresenta alta estabilidade tanto por ter a JVM como alvo quanto pela própria linguagem, com pouca deterioração rápida de bibliotecas.

Desvantagens e decisão

  • Clojure tem como desvantagens uma comunidade de engenharia pequena e a ausência de um sistema de tipos estáticos amplamente aceito.
  • Como Jepsen é mantido e usado por uma equipe pequena, essas desvantagens não se tornam um grande problema.
  • A decisão tomada após prototipar Jepsen em Clojure foi considerada um compromisso bastante bom.

A opinião do GN⁺

  • O motivo mais importante de Jepsen ter sido escrito em Clojure é que suas estruturas de dados imutáveis e seu forte suporte a concorrência o tornam adequado para testar sistemas complexos de bancos de dados concorrentes.
  • Este texto pode ser interessante para pessoas interessadas em engenharia de software, especialmente programação concorrente e sistemas de banco de dados, além de oferecer um exemplo prático de como a escolha de uma linguagem de programação específica pode impactar projetos reais.

1 comentários

 
GN⁺ 2023-12-07
Comentários no Hacker News
  • Um usuário que usou Clojure e ClojureScript por 10 anos destaca como vantagens do Clojure o benefício de escrever código de domínio em arquivos .cljc e compilá-lo tanto no servidor quanto no cliente, o desempenho e a reutilização de transducers, além da estabilidade e da compatibilidade com versões antigas da linguagem.
  • Como problemas do ecossistema Clojure, afirma que a acessibilidade e a usabilidade das ferramentas são extremamente polarizadas, e sugere que, se houvesse ferramentas ou frameworks mais fáceis, Clojure seria adotada mais amplamente.
  • Um desenvolvedor que usou apenas Clojure por 7 anos diz que sua principal reclamação é a ausência de um sistema de tipos forte, e considera que Clojure oferece mais poder para desenvolvedores que gostam de Ruby ou Python.
  • Uma equipe que desenvolve com Clojure e ClojureScript menciona as vantagens da acessibilidade do Clojure e do fluxo de trabalho com REPL, e diz que usar Babashka/nbb é útil para pequenos projetos ou tarefas.
  • Um iniciante em Clojure sente que os estados de erro das ferramentas são obscuros, valoriza as ideias inovadoras do ecossistema Clojure, mas menciona a necessidade de melhorar o uso de parênteses e o tratamento de nil.
  • Aponta-se que o desejo quase doutrinário da comunidade Clojure por combinar bibliotecas pode desacelerar o ritmo de trabalho de equipes reais de desenvolvimento web, mencionando a necessidade de frameworks web mais fáceis de usar.
  • Há quem veja como desvantagens a pequena comunidade de engenharia do Clojure e a ausência de um sistema de tipos estático, enquanto considera a interoperabilidade com Java como um ponto forte.
  • Um usuário de Clojure aponta as mensagens de erro da linguagem e a falta de type hints, e relata a dificuldade de refatorar código em larga escala.
  • Há um comentário recomendando um site de tutorial interativo para iniciantes em Clojure.
  • Um usuário diz que gosta de Clojure, mas aprendeu que, para aplicações modernas complexas, no fim das contas o ecossistema é o que importa.