2 points par GN⁺ 2024-05-27 | 1 commentaires | Partager sur WhatsApp

Hurl, un langage d’exception

Vue d’ensemble

  • Hurl est un langage créé pour explorer une approche où la gestion des exceptions est l’unique mécanisme de contrôle de flux.
  • Ce langage est né d’une conversation entre Nicole Tietz-Sokolskaya et des amis du Recurse Center.
  • Ce site fournit de la documentation sur l’utilisation de Hurl, des exemples, un guide de débogage et une FAQ.

Installation et utilisation

  • Le code source de Hurl est disponible dans le dépôt de Hurl.
  • Si vous trouvez un bug ou une erreur, les correctifs envoyés par e-mail sont les bienvenus, mais vous devez céder tous les droits sur le patch.
  • Cela vise à préserver la possibilité de relicencier le projet et de proposer une licence commerciale.

Syntaxe et philosophie de Hurl

  • Hurl est un langage centré sur la gestion des exceptions.
  • Le contrôle de flux y est implémenté uniquement via le traitement des exceptions.

Schémas courants

  • Le contrôle de flux est géré à travers le traitement des exceptions.
  • Les structures de contrôle traditionnelles (par ex. if, for) ne sont pas utilisées.

Bibliothèque standard

  • Hurl fournit une bibliothèque standard.
  • Elle inclut diverses fonctionnalités fondées sur la gestion des exceptions.

Exemples

  • Divers exemples de code sont fournis.
  • Ils permettent de comprendre facilement comment utiliser Hurl.

Débogage et erreurs

  • Un guide de débogage est fourni.
  • Il explique comment traiter efficacement les erreurs.

FAQ

  • Des réponses aux questions fréquemment posées sont proposées.
  • Elles couvrent les problèmes courants pouvant survenir lors de l’utilisation de Hurl.

Éloges à propos de Hurl

  • Erika Rowland: "Cette monstruosité est magnifique, et je ne veux surtout jamais y toucher. Je ne veux pas que mon nom y soit associé."
  • Nicole Tietz-Sokolskaya: "J’ai décidé de faire de ce langage une réalité. Désolée."
  • Mary McGrath: "🤮" (est-ce une citation exploitable ?)
  • nate (@nmoo@mas.to): "Anormal certifié™ !"

Code source

  • Le code source de Hurl et de ce site est disponible dans le dépôt de Hurl.
  • Les correctifs envoyés par e-mail sont les bienvenus, mais tous les droits doivent être cédés.

Licence

  • Ce projet peut être utilisé sous l’une des trois licences suivantes :
    • AGPL-3.0
    • GAL-1.0 (Gay Agenda License)
    • licence commerciale
  • Vous pouvez choisir librement l’une de ces trois licences.

L’avis de GN⁺

  • Un langage centré sur les exceptions : Hurl adopte une approche originale qui place la gestion des exceptions au cœur du contrôle de flux et remplace les structures de contrôle traditionnelles. Cela impose aux développeurs une manière de penser différente.
  • Valeur pédagogique : Hurl peut aider à comprendre en profondeur l’importance des exceptions et la manière de les utiliser. Il montre particulièrement bien les problèmes qui apparaissent lorsqu’on en fait mauvais usage.
  • Question de praticité : utiliser Hurl en production peut être difficile. Pour les développeurs habitués aux structures de contrôle classiques, la barrière à l’entrée peut être importante.
  • Collaboration avec la communauté : le code source de Hurl est proposé en open source et encourage la participation de la communauté. Cela peut avoir un effet positif sur l’évolution du projet et la correction des bugs.
  • Choix de licence : le fait de proposer plusieurs licences élargit les options offertes aux utilisateurs. Cela contribue à la flexibilité du projet.

1 commentaires

 
GN⁺ 2024-05-27
Avis sur Hacker News

Résumé des commentaires de Hacker News

  • Il est important d’imposer les espaces de noms et les imports lors de la conception d’un langage de programmation

    • Imposer les espaces de noms et les imports facilite la compréhension du code.
    • Il vaut mieux ne pas autoriser les effets de bord au niveau supérieur.
  • Avis sur la gestion des exceptions

    • La gestion des exceptions complique le contrat entre l’appelant et l’appelé.
    • Il est préférable de gérer les exceptions via des valeurs de retour, comme en Go ou en Rust.
    • Ce serait bien qu’un IDE puisse détecter dynamiquement toutes les exceptions non traitées et permettre de retrouver facilement leur point d’origine.
  • Exemple d’utilisation de toss

    • toss est principalement utilisé lorsqu’une fonction renvoie plusieurs valeurs.
    • Ce n’est pas vraiment utile, sauf dans les cas où l’exécution ne reprend pas immédiatement.
  • Le langage Hurl et le système de conditions

    • Hurl ressemble au système de conditions de Smalltalk/CL.
    • Le système de conditions propose plusieurs options de redémarrage.
  • Utilisation de l’extension de domaine .wtf

    • Le monde serait meilleur si davantage de choses utilisaient l’extension de domaine .wtf.
  • Un langage proche des effets algébriques

    • Cela ressemble à une forme faible d’effets algébriques, mais cela reste intéressant.
  • Sentiments mitigés à propos du langage Hurl

    • Je n’aime pas le langage Hurl, mais il a malgré tout un certain côté élégant.
    • J’aimerais qu’il existe une syntaxe distinguant les exceptions reprenables et non reprenables.
    • La bibliothèque standard n’aurait pas dû être remplacée par des fonctions ordinaires renvoyant des valeurs.
  • Différence entre toss et hurl

    • hurl peut être intercepté, mais toss ne le peut pas.
    • Je crains que, si j’utilise beaucoup Hurl, les gens se mettent à m’appeler un tosser.
  • La construction de langage toss

    • toss parcourt la pile pour trouver un gestionnaire d’exception, puis reprend l’exécution comme si de rien n’était.
    • Il permet d’injecter un comportement supplémentaire à l’exécution.
    • Dans le code orienté objet, on fait de l’injection de dépendances via les constructeurs de services, tandis que toss utilise des « gestionnaires de toss ».