プログラミング言語 Crystal

安全でない (unsafe) コード

本言語において、以下は安全でない (unsafe) とされます。

「安全でない」というのは、メモリの破壊、セグメンテーション違反、そしてクラッシュの可能性があることを意味しています。例をあげます。

a = 1
ptr = pointerof(a)
ptr[100_000] = 2   # 定義されていない振る舞いであるため、おそらくセグメンテーション違反となる

ただ、通常のコードでポインタ操作や初期化しない変数を扱うことはないでしょう。また、C バインディングは、普通は、NULL ポインタやバウンドチェックを含むより安全なラッパーで包みます。

100% 安全な言語というのは存在しません。ローレベルな処理や、OS のインターフェース、そしてポインタの操作をどこかで必ず含みます。しかし、それらを抽象化し、より高いレベルでの操作を行い、さらに、(数学的な証明やテストを通して) 低いレベルの地盤が安全なことを確認すれば、自信を持ってコードベース全体が安全であると言えるでしょう。