- 22 名前:デフォルトの名無しさん mailto:sage [2021/06/20(日) 22:37:40.54 ID:X7PAuK/l.net]
- >>13
Rustのスライスは、ほぼPascal文字列だから、Cよりも古くから作法や 概念は存在している。 しかし、なぜCがPascal文字列ではなく0終端文字列にしたのかには 理由があって、文字列の途中(部分文字列)を扱わない場合においては効率が良いから。 0終端文字列の欠点は、部分文字列を扱おうとするととたんに面倒なことになること。 ただ、strcmpみたいなものを書いたり、字句解析を書いたりするときには、効率は良い。 字句解析では決定性オートマトンの理論がグラフ的(状態遷移図的)になっており、 Cの0終端文字列とはとても相性が良い。 そして、コンパイラの実行時間の大部分は、実測してみると、意外にも字句解析が占めている。 字句解析は単純ではあるが、量が多いので1クロックの差がものをいう世界である。 ただ、Pascal文字列(スライス)が字句解析でも有利に働く場面はあるにはあるが。 どちらの方式が一方的に優れているとはいえない。
|

|