2 ポイント 投稿者 GN⁺ 2024-05-27 | 1件のコメント | WhatsAppで共有

Hurl、例外的な言語

概要

  • Hurlは、例外処理を唯一の制御フローとして使う言語を探究するために作られた言語。
  • この言語は、Nicole Tietz-Sokolskaya と Recurse Center の友人たちとの会話から始まった。
  • このサイトでは、Hurl の使用に関するドキュメント、サンプル、デバッグガイド、FAQ を提供している。

インストールと使い方

  • Hurl のソースコードは Hurl のリポジトリで提供されている。
  • バグや不具合を見つけた場合、メールでのパッチ提出は歓迎されるが、パッチに関するすべての権利を譲渡する必要がある。
  • これは再ライセンスおよび商用ライセンスを維持するため。

Hurl の文法と哲学

  • Hurl は例外処理を中心に据えた言語。
  • 制御フローは例外処理だけで実装される。

一般的なパターン

  • 例外処理を通じて制御フローを管理する。
  • 従来の制御構造(例: if、for)は使わない。

標準ライブラリ

  • Hurl は標準ライブラリを提供する。
  • 例外処理を基盤にしたさまざまな機能を含む。

サンプル

  • さまざまなサンプルコードが提供されている。
  • サンプルコードを通じて Hurl の使い方を簡単に理解できる。

デバッグとエラー

  • デバッグガイドが提供されている。
  • エラーを効果的に処理する方法を説明している。

FAQ

  • よくある質問への回答を提供している。
  • Hurl の利用時に発生しうる一般的な問題を扱っている。

Hurl への賛辞

  • Erika Rowland: 「この怪物は美しいし、絶対に触りたくない。自分の名前がこれと結び付けられるのは望まない。」
  • Nicole Tietz-Sokolskaya: 「この言語を現実のものにすると決めた。ごめんなさい。」
  • Mary McGrath: 「🤮」 (引用として使える?)
  • nate (@nmoo@mas.to): 「認定済みの異常™!」

ソースコード

  • Hurl とこのサイトのソースコードは Hurl のリポジトリで提供されている。
  • メールでのパッチ提出は歓迎されるが、すべての権利を譲渡する必要がある。

ライセンス

  • このプロジェクトは次の3つのライセンスのいずれかで利用可能:
    • AGPL-3.0
    • GAL-1.0 (Gay Agenda License)
    • 商用ライセンス
  • 3つのライセンスのうち1つを選んで利用できる。

GN⁺の意見

  • 例外処理中心の言語: Hurl は例外処理を制御フローの中心に据え、従来の制御構造を置き換える独特なアプローチを取っている。これは開発者に新しい考え方を求める。
  • 教育的価値: Hurl は例外処理の重要性と活用方法を深く理解する助けになる可能性がある。特に、例外処理を誤用した場合の問題点を明確に示している。
  • 実用性の問題: 実務で Hurl を使うのは挑戦的かもしれない。従来の制御構造に慣れた開発者にとっては大きな障壁になりうる。
  • コミュニティとの協力: Hurl のソースコードはオープンソースとして提供されており、コミュニティの参加を促している。これはプロジェクトの発展とバグ修正に前向きな影響を与える可能性がある。
  • ライセンスの選択: 複数のライセンスを提供することで、ユーザーの選択肢を広げている。これはプロジェクトの柔軟性向上に寄与する。

1件のコメント

 
GN⁺ 2024-05-27
Hacker Newsの意見

Hacker News コメントまとめ要約

  • プログラミング言語設計では、名前空間とインポートを強制することが重要

    • 名前空間とインポートを強制すると、コードの理解がしやすくなる。
    • トップレベルでの副作用は許可しないほうがよい。
  • 例外処理に関する意見

    • 例外処理は、呼び出し側と呼び出される側の契約を難しくする。
    • GoやRustのように、戻り値を通じて例外を処理するほうがよい。
    • IDEが未処理の例外をすべて動的に検出し、例外の発生箇所を簡単に見つけられるようにしてくれるとよさそうだ。
  • toss の使用例

    • toss は、関数から複数の値を返すときに主に使われる。
    • 即時に再開しないケースを除けば、有用ではない。
  • Hurl言語と条件システム

    • Hurlは、Smalltalk/CLの条件システムに似ている。
    • 条件システムは、複数の再開オプションを提供する。
  • .wtf ドメイン拡張子の使用

    • もっと多くのものが .wtf ドメイン拡張子を使えば、世界はよりよくなる気がする。
  • 代数的効果に似た言語

    • 弱い形の代数的効果に似ているが、それでも興味深い。
  • Hurl言語に対する複雑な感情

    • Hurl言語は嫌いだが、少しエレガントな面もある。
    • 再開可能な例外と再開不可能な例外を区別する構文があればよかった。
    • 標準ライブラリは、通常の値を返す関数で置き換えるべきではなかった。
  • tosshurl の違い

    • hurl は捕捉できるが、toss は捕捉できない。
    • Hurlをたくさん使うと、人々に tosser と呼ばれるのではないかと心配になる。
  • toss の言語構造

    • toss は、例外ハンドラーを見つけるためにスタックを探索し、何事もなかったかのように実行を再開する。
    • 実行時に追加の動作を注入できる。
    • オブジェクト指向コードでは、サービスコンストラクタを通じて依存性注入を行うが、toss は「toss ハンドラー」を使う。