2 puntos por GN⁺ 2024-05-27 | 1 comentarios | Compartir por WhatsApp

Hurl, un lenguaje extraordinario

Descripción general

  • Hurl es un lenguaje creado para explorar un lenguaje que usa el manejo de excepciones como su único flujo de control.
  • Este lenguaje comenzó a partir de una conversación entre Nicole Tietz-Sokolskaya y amistades de Recurse Center.
  • Este sitio ofrece documentación sobre el uso de Hurl, ejemplos, una guía de depuración y preguntas frecuentes.

Instalación y uso

  • El código fuente de Hurl está disponible en el repositorio de Hurl.
  • Si encuentras bugs o errores, aceptan parches por correo electrónico, pero debes ceder todos los derechos sobre esos parches.
  • Esto es para mantener la posibilidad de relicenciamiento y licencias comerciales.

Sintaxis y filosofía de Hurl

  • Hurl es un lenguaje centrado en el manejo de excepciones.
  • Implementa el flujo de control únicamente mediante manejo de excepciones.

Patrones comunes

  • Administra el flujo de control a través del manejo de excepciones.
  • No usa estructuras de control tradicionales (por ejemplo: if, for).

Biblioteca estándar

  • Hurl ofrece una biblioteca estándar.
  • Incluye varias funciones basadas en el manejo de excepciones.

Ejemplos

  • Se ofrecen diversos ejemplos de código.
  • Con el código de ejemplo se puede entender fácilmente cómo usar Hurl.

Depuración y errores

  • Se proporciona una guía de depuración.
  • Explica cómo manejar errores de forma efectiva.

FAQ

  • Ofrece respuestas a preguntas frecuentes.
  • Trata problemas comunes que pueden surgir al usar Hurl.

Elogios a Hurl

  • Erika Rowland: "Este monstruo es hermoso, y jamás querría tocarlo. No quiero que mi nombre quede asociado con esto."
  • Nicole Tietz-Sokolskaya: "Decidí hacer realidad este lenguaje. Lo siento."
  • Mary McGrath: "🤮" (¿es una cita utilizable?)
  • nate (@nmoo@mas.to): "¡Certified Deranged™!"

Código fuente

  • El código fuente de Hurl y de este sitio está disponible en el repositorio de Hurl.
  • Aceptan parches por correo electrónico, pero debes ceder todos los derechos.

Licencia

  • Este proyecto puede usarse bajo una de estas tres licencias:
    • AGPL-3.0
    • GAL-1.0 (Gay Agenda License)
    • licencia comercial
  • Puedes elegir una de las tres licencias para usarlo.

Opinión de GN⁺

  • Lenguaje centrado en excepciones: Hurl adopta un enfoque único al convertir el manejo de excepciones en el centro del flujo de control y reemplazar las estructuras de control tradicionales. Esto exige una nueva forma de pensar por parte de quienes desarrollan.
  • Valor educativo: Hurl puede ayudar a entender en profundidad la importancia del manejo de excepciones y cómo usarlo. En especial, muestra con claridad los problemas de usar mal las excepciones.
  • Problemas de practicidad: Usar Hurl en trabajo real puede ser un reto. Para desarrolladores acostumbrados a estructuras de control tradicionales, puede representar una barrera importante.
  • Colaboración con la comunidad: El código fuente de Hurl se ofrece como open source y fomenta la participación de la comunidad. Esto puede tener un impacto positivo en el avance del proyecto y la corrección de bugs.
  • Elección de licencias: Ofrece varias licencias, ampliando las opciones para quienes lo usan. Esto contribuye a una mayor flexibilidad del proyecto.

1 comentarios

 
GN⁺ 2024-05-27
Comentarios en Hacker News

Resumen de comentarios de Hacker News

  • Es importante exigir namespaces e imports al diseñar un lenguaje de programación

    • Exigir namespaces e imports facilita entender el código.
    • Es mejor no permitir efectos secundarios en el nivel superior.
  • Opiniones sobre el manejo de excepciones

    • El manejo de excepciones dificulta el contrato entre quien llama y quien es llamado.
    • Es mejor manejar las excepciones mediante valores de retorno, como en Go o Rust.
    • Estaría bien que el IDE pudiera detectar dinámicamente todas las excepciones no manejadas y facilitar encontrar dónde se originan.
  • Ejemplo de uso de toss

    • toss se usa principalmente cuando una función devuelve varios valores.
    • No parece útil salvo en casos donde no se reanuda de inmediato.
  • El lenguaje Hurl y el sistema de condiciones

    • Hurl es similar al sistema de condiciones de Smalltalk/CL.
    • El sistema de condiciones ofrece varias opciones de reinicio.
  • Uso del dominio .wtf

    • El mundo sería mejor si más cosas usaran la extensión de dominio .wtf.
  • Lenguajes similares a los efectos algebraicos

    • Se parece a una forma débil de efectos algebraicos, pero sigue siendo interesante.
  • Sentimientos encontrados sobre el lenguaje Hurl

    • No me gusta el lenguaje Hurl, pero tiene cierta elegancia.
    • Ojalá hubiera una sintaxis para distinguir entre excepciones reanudables y no reanudables.
    • La biblioteca estándar no debería haberse reemplazado por funciones normales que devuelven valores.
  • Diferencia entre toss y hurl

    • hurl se puede atrapar, pero toss no.
    • Me preocupa que, si uso mucho Hurl, la gente me empiece a llamar "tosser".
  • La estructura del lenguaje toss

    • toss recorre la pila para encontrar un manejador de excepciones y reanuda la ejecución como si nada hubiera pasado.
    • Puede inyectar comportamiento adicional en tiempo de ejecución.
    • En código orientado a objetos, la inyección de dependencias se hace mediante constructores de servicios, pero toss usa "manejadores de toss".