2 puntos por GN⁺ 2024-04-22 | 1 comentarios | Compartir por WhatsApp

Lenguaje de programación Racket

  • Racket es un lenguaje de programación maduro, práctico, extensible, robusto y sofisticado
  • Racket es un lenguaje de programación orientado a lenguajes (Language-Oriented Programming), con características como:
    • compatibilidad con tipado de ocurrencia de orden superior (higher-order occurrence typing)
    • integración del lenguaje Scribble para generar documentación
    • compatibilidad con programación lógica como Datalog
    • un sistema de macros muy potente, con soporte desde macros pequeñas hasta macros grandes, creación sencilla de DSL y soporte para toda la sintaxis
  • El ecosistema de Racket está compuesto por software, tutoriales y documentación, comunidad, libros, educación, swag, etc.
  • Racket ha recibido apoyo de diversas organizaciones y personas, incluyendo NSF, DARPA, FIPSE, la Fundación Exxon, Microsoft, Mozilla y Google

Opinión de GN⁺

  • Una de las mayores fortalezas de Racket es que soporta la programación orientada a lenguajes. Gracias a esto, es fácil crear lenguajes específicos de dominio (DSL), lo que ayuda a mejorar la productividad
  • Sin embargo, por las características de los lenguajes de la familia Lisp, se usan muchos paréntesis, lo que puede hacer que la legibilidad sea menor para quienes lo conocen por primera vez. Sería bueno introducir otra sintaxis en lugar de paréntesis, como en Clojure
  • Los tutoriales y la documentación están muy bien preparados, por lo que es fácil aprenderlo. También se usa mucho con fines educativos
  • También puede usarse como lenguaje de propósito general, pero tiene un enfoque especialmente fuerte en la creación de DSL o en usos educativos como SICP. Para usarlo en un entorno real de producción, todavía parece que faltan bibliotecas y otros recursos
  • Se recomienda como lenguaje de aprendizaje para quienes quieran empezar con lenguajes funcionales. Sin embargo, en el trabajo práctico conviene considerar Haskell, OCaml, F#, etc.

1 comentarios

 
GN⁺ 2024-04-22
Opinión de Hacker News

Resumen:

  • Racket tiene funciones centrales atractivas, como compilador, sistema de gestión de paquetes, IDE con GUI y bindings para Emacs, pero hay poco interés en la parte de investigación de lenguajes de programación impulsada por algunos profesores de ciencias de la computación.
  • A diferencia de Python, donde escribes código en el editor y lo ejecutas en el shell, en Racket hay que interactuar con una VM y un REPL de larga ejecución, así que cuesta adaptarse al flujo de trabajo.
  • No está claro cómo integrar en una sola aplicación lenguajes de Racket como typed/racket, racket/gui y scribble/base. Los capítulos de los tutoriales que explican cada lenguaje se tratan sin relación entre sí, lo que genera confusión.
  • Racket es rápido y práctico, y tiene una base sólida junto con una excelente historia de concurrencia. Su ecosistema de paquetes integrado y su muy buen sistema de documentación también son ventajas. Tiene mejor compatibilidad hacia atrás que Python.
  • Hay casos de proyectos prácticos desarrollados con Racket, como un sitio de comercio electrónico, apps para iOS/macOS, un cliente de escritorio para Apache Kafka y un #lang para Lua.
  • Hacker News también fue escrito en Arc y corre sobre Racket.
  • Racket es adecuado para desarrollar binarios con GUI incluida o para parsear JSON, XML y otros formatos.
  • Su sistema de macros es distinto al de Common Lisp y requiere adaptación, pero es conveniente para metaprogramación.
  • La perspectiva académica y pura de la programación que proponen los lenguajes de la familia Lisp parece alejada del desarrollo práctico de aplicaciones.