Borgoプログラミング言語の紹介
- Goより表現力が高く、Rustほど複雑ではないアプリケーション記述言語を目指している
- Goはシンプルで直感的だが、より強い型安全性が欲しくなることがある
- Rustは扱いやすい言語ではあるものの(少なくともシングルスレッドのコードでは)、あまりにも広範で複雑であり、ときには苦痛に感じられる
- BorgoはGoへトランスパイルされる新しい言語で、既存のGoパッケージと完全に互換性がある
- Borgoの構文は、セミコロンが任意であるRustに似ている
主な機能
- 代数的データ型とパターンマッチング
nil の代わりに Option を使用
- 複数戻り値の代わりに
Result を使用
? 演算子を使ったエラー処理
ローカルで実行する
- BorgoはRustで書かれているため、cargoが必要
- 現在のフォルダ内のすべての
.brg ファイルをコンパイルするには:
- コンパイラは
.go ファイルを生成し、それを通常どおり実行できる
GN⁺の意見
- Rustは強力な言語だが学習曲線が急で導入のハードルも高めであり、BorgoはRustの利点をGoのエコシステムで活用できる興味深い試みに見える。ただし、まだ初期段階のためエコシステムは不足していると予想される
Option と Result によって nil やエラー処理を改善している点、? 演算子でエラーハンドリングを簡潔にしている点などは、Go開発者がしばしば不便に感じていた部分を解消してくれそうだ
- 既存のGoライブラリをそのまま使える点は大きな強み。ただし、Rustの構文を取り入れているぶん、Go開発者が慣れるまでには時間がかかる可能性がある
- トランスパイル方式である以上、デバッグやランタイム性能などでネイティブのGoコードに比べて不利になる可能性がある。大規模な本番コードに適用するにはまだ早い印象がある
- KotlinがJVMエコシステムで存在感を高めていったように、BorgoもGoの有力な選択肢になるには、コード品質、開発生産性、学習曲線など多方面で継続的な改善が必要に見える。今後発展していけば、Go陣営における魅力的な代替案になることが期待される
1件のコメント
Hacker Newsの意見
要約:
implを使ったメソッド定義、チャネルとゴルーチンの構文、zeroValue()組み込み関数などpub/privateキーワードを導入した点も好意的