萌えハッカーニュースリーダー

2025/03/21 16:34 The Jakt Programming Language

出典: https://github.com/SerenityOS/jakt
hakase
博士

ロボ子、新しいシステムプログラミング言語「Jakt」について聞いたかのじゃ?C++にトランスパイルされるらしいぞ。

roboko
ロボ子

はい、博士。メモリ安全に特化した言語のようですね。自動参照カウントや強力な型付け、境界チェックなどが特徴だと聞きました。

hakase
博士

そうじゃ、そうじゃ!安全モードではraw pointerが使えないのもポイントじゃな。ポインタの種類も`T`, `weak T`, `raw T`と分かれていて、安全性が高そうじゃ。

roboko
ロボ子

`Optional`でラップしない限りnull pointerは不可能とのことですが、これはどういうことでしょうか?

hakase
博士

ふむ、`Optional`でラップするということは、値が存在しない可能性があることを明示的に示すということじゃ。これによって、null pointer exceptionのようなエラーを未然に防ぐことができるのじゃ。

roboko
ロボ子

なるほど。数学的安全も特徴の一つで、整数オーバーフローがランタイムエラーになるとのことですね。数値の暗黙的な`int`への変換が行われず、明示的なキャストが必要なのも安全性を高めるためでしょうか。

hakase
博士

その通り!暗黙的な型変換は、予期せぬバグの温床になりやすいからの。Jaktは、そういった曖昧さを排除することで、より安全なコードを書けるようにしているのじゃ。

roboko
ロボ子

コードの可読性も重視されているようですね。デフォルトでimmutableだったり、呼び出し式での引数ラベルがあったり、Optional chainingがあったり。

hakase
博士

`foo?.bar?.baz`や`foo!.bar!.baz`は便利じゃな。OptionalのNone coalescing `foo ?? bar` も、コードを簡潔に書くのに役立ちそうじゃ。

roboko
ロボ子

モジュールシステムも柔軟性がありそうですね。`import a`、`import a { use_cool_things }`、`import fn()`など、様々なインポート方法が用意されている。

hakase
博士

特に`import fn()`はコンパイル時に計算可能というのが面白いのじゃ。コンパイル時に値を計算して、それをコードに埋め込むことができるということじゃな。

roboko
ロボ子

関数呼び出し時に引数の名前を指定する必要があるのは、少し面倒に感じるかもしれませんが、可読性を高めるためには良いかもしれませんね。

hakase
博士

確かに、引数が多い関数だと、引数の順番を間違えたりしがちじゃからな。名前を指定することで、そういったミスを減らすことができるのじゃ。

roboko
ロボ子

構造体とクラスの違いも明確ですね。`struct`は値セマンティクス、`class`は参照セマンティクスを持つ。

hakase
博士

そうじゃ。`struct`は常に一意のインスタンスを持ち、コピーはディープコピーになる。`class`はオブジェクトのコピーは参照をコピーする。この違いを理解しておくことは重要じゃ。

roboko
ロボ子

エラー処理も特徴的ですね。`throws`キーワードでエラーを返す可能性のある関数をマークし、`try`/`catch`構文でエラーをキャッチする。

hakase
博士

エラーが自動的にコールスタックをunwindしないのもポイントじゃ。エラーをより細かく制御できるということじゃな。

roboko
ロボ子

インラインC++もサポートされているんですね。既存のC++コードとの相互運用性も考慮されている。

hakase
博士

Jaktは、メモリ安全性を重視しつつ、コードの可読性や再利用性も高めるように設計された、意欲的な言語じゃな。C++に取って代わる存在になるかもしれないぞ!

roboko
ロボ子

そうですね、博士。私もJaktを学んで、より安全で信頼性の高いソフトウェアを開発できるようになりたいです。

hakase
博士

よし、ロボ子!Jaktで世界征服じゃ!…って、また冗談じゃぞ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search