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

Borgoプログラミング言語の紹介

  • Goより表現力が高く、Rustほど複雑ではないアプリケーション記述言語を目指している
    • Goはシンプルで直感的だが、より強い型安全性が欲しくなることがある
    • Rustは扱いやすい言語ではあるものの(少なくともシングルスレッドのコードでは)、あまりにも広範で複雑であり、ときには苦痛に感じられる
  • BorgoはGoへトランスパイルされる新しい言語で、既存のGoパッケージと完全に互換性がある
  • Borgoの構文は、セミコロンが任意であるRustに似ている

主な機能

  • 代数的データ型とパターンマッチング
  • nil の代わりに Option を使用
  • 複数戻り値の代わりに Result を使用
  • ? 演算子を使ったエラー処理

ローカルで実行する

  • BorgoはRustで書かれているため、cargoが必要
  • 現在のフォルダ内のすべての .brg ファイルをコンパイルするには:
    • $ cargo run -- build
  • コンパイラは .go ファイルを生成し、それを通常どおり実行できる

GN⁺の意見

  • Rustは強力な言語だが学習曲線が急で導入のハードルも高めであり、BorgoはRustの利点をGoのエコシステムで活用できる興味深い試みに見える。ただし、まだ初期段階のためエコシステムは不足していると予想される
  • OptionResult によって nil やエラー処理を改善している点、? 演算子でエラーハンドリングを簡潔にしている点などは、Go開発者がしばしば不便に感じていた部分を解消してくれそうだ
  • 既存のGoライブラリをそのまま使える点は大きな強み。ただし、Rustの構文を取り入れているぶん、Go開発者が慣れるまでには時間がかかる可能性がある
  • トランスパイル方式である以上、デバッグやランタイム性能などでネイティブのGoコードに比べて不利になる可能性がある。大規模な本番コードに適用するにはまだ早い印象がある
  • KotlinがJVMエコシステムで存在感を高めていったように、BorgoもGoの有力な選択肢になるには、コード品質、開発生産性、学習曲線など多方面で継続的な改善が必要に見える。今後発展していけば、Go陣営における魅力的な代替案になることが期待される

1件のコメント

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

要約:

  • Go言語の物足りない点を補ったBorgo言語に対する好意的な反応
    • Enum、Optional型など、Goで惜しいと感じられていた機能が追加されている
    • Go開発者が望んでいた機能の大半が含まれている
  • Borgoの一部の設計判断は、Goの特徴というよりRustに近い印象
    • implを使ったメソッド定義、チャネルとゴルーチンの構文、zeroValue()組み込み関数など
    • それでもGoよりBorgoで開発したいと思われる
  • 似た試みを行っていた他のプロジェクトの紹介
    • braid、have、oden など、Goへトランスパイルされる言語を作ろうとする試みがあった
  • Rustの長所の一つであるBorrow Checkerを除けば、型システムやエラーハンドリングなどの利点を取り入れているようだ
  • 動的型付けと静的型付けの長短を両方備えた言語があればよい、という意見
    • 初期開発ではPythonのような動的型付けの利点を活かし、その後は段階的に静的型付けへ移行できるとよい
  • Goのランタイムとツールのエコシステムの強みに、RustのEnumのような型安全性が加わった印象
  • Structのフィールド可視性を大文字・小文字で区別するGoの方式の代わりに、pub/privateキーワードを導入した点も好意的
  • Gleam言語に似た、型安全性と複雑さの間の折衷案を見つけたように見えるが、ErlangやJSではなくGoにコンパイルされる点は性能面で有利
    • ただし、コンパイルエラーメッセージがRustやGleamほど親切かどうかは疑問