2 pontos por GN⁺ 2024-04-22 | 1 comentários | Compartilhar no WhatsApp

Linguagem de programação Racket

  • Racket é uma linguagem de programação madura, prática, extensível, robusta e refinada
  • Racket é uma linguagem voltada à programação orientada a linguagens (Language-Oriented Programming), com as seguintes características:
    • suporte a higher-order occurrence typing
    • linguagem Scribble integrada para geração de documentação
    • suporte a programação lógica como Datalog
    • sistema de macros poderoso, com suporte desde macros pequenas até macros grandes, criação fácil de DSLs e suporte a toda a sintaxe
  • O ecossistema do Racket é composto por software, tutoriais e documentação, comunidade, livros, educação, brindes e mais
  • Racket já recebeu apoio de várias organizações e indivíduos, incluindo NSF, DARPA, FIPSE, Fundação Exxon, Microsoft, Mozilla e Google

Opinião do GN⁺

  • Uma das maiores vantagens do Racket é oferecer suporte à programação orientada a linguagens. Isso facilita a criação de linguagens específicas de domínio (DSLs), o que ajuda a aumentar a produtividade
  • No entanto, por ser uma linguagem da família Lisp, usa muitos parênteses, o que pode prejudicar a legibilidade para quem está tendo o primeiro contato. Seria interessante adotar uma sintaxe alternativa em vez de parênteses, como no Clojure
  • Os tutoriais e a documentação são bem estruturados, o que facilita o aprendizado. Também é bastante usado para fins educacionais
  • Pode ser usado como linguagem de programação de propósito geral, mas parece ter um foco mais especializado em criação de DSLs ou uso educacional, como no SICP. Para uso em ambientes reais de produção, ainda parece faltar bibliotecas e outros recursos
  • Recomendado para quem quer começar a aprender linguagens funcionais. Porém, para uso profissional, vale considerar Haskell, OCaml, F# e outras opções

1 comentários

 
GN⁺ 2024-04-22
Opinião do Hacker News

Resumo:

  • O Racket tem recursos centrais atraentes, como compilador, sistema de gerenciamento de pacotes, IDE com GUI e bindings para Emacs, mas há pouco interesse na parte de pesquisa em linguagens de programação conduzida por alguns professores de ciência da computação.
  • Diferente do Python, em que se escreve código no editor e se executa no shell, no Racket é preciso interagir com uma VM de longa duração e com o REPL, então é difícil se adaptar ao fluxo de trabalho.
  • Não está claro como integrar linguagens como typed/racket, racket/gui e scribble/base em uma única aplicação. Os capítulos de tutorial que explicam cada linguagem são tratados sem relação entre si, o que causa confusão.
  • O Racket é rápido e prático, tem uma base sólida e uma excelente história de concorrência. Seu ecossistema de pacotes integrado e seu ótimo sistema de documentação também são vantagens. Tem melhor compatibilidade retroativa que o Python.
  • Há casos de desenvolvimento, com Racket, de projetos práticos como um site de comércio eletrônico, apps para iOS/macOS, um cliente desktop para Apache Kafka e um #lang para Lua.
  • O Hacker News também foi escrito em Arc e roda em Racket.
  • O Racket é adequado para desenvolver binários com GUI incluída e para fazer parsing de JSON, XML etc.
  • O sistema de macros é diferente do Common Lisp e exige adaptação, mas é conveniente para metaprogramação.
  • A perspectiva acadêmica e pura de programação proposta pelas linguagens da família Lisp parece distante do desenvolvimento prático de aplicações.