ステップ数
プログラムの規模を測るときの目安だよ
ソースコードの行数だよ
気休め程度にしかならないよ
簡単に書くよ
ステップ数(読:ステップスウ 英:number of steps?)とは
プログラムの規模を測るときの目安となる指標のひとつ
です。
一般的には
人間語で書いたプログラムの元ネタ(ソースコード)の行数のこと
を指します。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として「ソースコード」について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
ソースコードは「人間語で書いたプログラムの元ネタ」です。
プログラムを作って動かすまでの一般的な流れは
1.人間語でプログラムの元ネタを書く
2.元ネタを人間語から機械語に翻訳する
3.翻訳された指示に従って、コンピュータさんが お仕事する
です。
コンピュータさんは人間語が分かりません。
人間様はコンピュータさんの言葉が分かりません。
プログラムは人間様が作るものです。
そこで最初は人間様が分かる言葉でプログラムを作ります。
コンピュータさんに対する「あれをやれ」「これをやれ」な命令を人間語で書くのです。
次に人間語で書いたプログラムの元ネタをコンピュータさんが分かる言葉に翻訳します。
実際に お仕事をするのは、コンピュータさんですからね。
コンピュータさんが分かる言葉に変換する必要があるのです。
コンピュータさんが分かる言葉に翻訳したので、コンピュータさんは命令の内容を理解できます。
指示に従って、お仕事をしてくれるでしょう。
かなり簡略化した説明ですけどね。
これがプログラムを作るときの流れです。
この話で登場した
人間語で書いたプログラムの元ネタ
を「ソースコード」と言います。
以上を踏まえて
ソースコードの行数
をカッコつけて言った表現が「ステップ数」です。
処理が何行書かれているかを示した数字です。
ステップ数はプログラムの規模を測るための指標です。
もしかしたらソースコードの行数以外を指標として使うことも あるかもしれませんけどね。
私は知りません。
私の経験上では
ステップ数=ソースコードの行数
です。
とはいえ、行数の数え方には いろいろなローカルルールがあります。
コメント行を除いたり、改行だけの行を除いたり、他にも独自の数え方があったりします。
例えば、そうですね。
以下の処理は6行です。
if($a == "1")
{
print "1だよ";
}else {
print "1じゃないよ";
}
これを単純に「6」と数える場合も あります。
あるいは、2行目の「{」を1行目に含まれると解釈して
if($a == "1"){
print "1だよ";
}else {
print "1じゃないよ";
}
のように読み替えることで「5」と数える場合も あります。
基準は結構あいまいです。
まぁ、そもそもの話として気休め程度にしかならない指標ですけどね。
処理の書き方は1つでは ありません。
同じ処理を書くのにも、いろいろな書き方があります。
例えば、PHPで書いた以下の3つは、すべて同じ処理です。
if($a == "1")
{
print "1だよ";
}else {
print "1じゃないよ";
}
if($a == "1"){print "1だよ";}else {print "1じゃないよ";}
print $a ==1 ? "1だよ" : "1じゃないよ";
1つ目の処理は6行で書かれています。
ステップ数は「6」です。
2つ目、3つ目の処理は1行で書かれています。
ステップ数は「1」です。
それでは、1つ目の処理は2つ目、3つ目の処理の6倍の規模なのでしょうか?
そんなことは、ありませんよね。
それにステップ数を増やすのは簡単です。
わざとらしくない範囲でも、いろいろできます。
例えば
if($a == "1")
{
print "1だよ";
}else {
print "1じゃないよ";
}
の処理ですが、ステップ数を増やしたければ以下のように書けます。
$MSG_OK = "1だよ";
$MSG_NG = "1じゃないよ";
$TARGET_NUM = 1;
if($a == TARGET_NUM)
{
print $MSG_OK;
}else {
print $MSG_NG;
}
これだって無駄に長い書き方とは言えません。
「メッセージや比較する数値が変更される際の修正コストを考慮して、定数化して外出しにしています。拡張性を重視しました!」とか適当なことを言っておけば怒られないはずです。
というか、固定の文言や値を変数にするのは普通です。
いかがでしょうか。
print $a ==1 ? "1だよ" : "1じゃないよ";
と
$MSG_OK = "1だよ";
$MSG_NG = "1じゃないよ";
$TARGET_NUM = 1;
if($a == TARGET_NUM)
{
print $MSG_OK;
}else {
print $MSG_NG;
}
は同じ処理ですよ。
他に指標にできそうな要素が少ないので仕方ない面もありますけどね。
いろいろと操作しやすいので実情に即しているとは言いにくい指標です。
個人的には、どんな数え方をするにしろ気休め以外の何物でもないと思っています。
一言でまとめるよ
まぁ「ステップ数」って単語が出てきたら「ソースコード
(人間語で書いたプログラムの元ネタ)の行数なんだな~」と お考えください。
おまけ
■訳してみるよ
「step(ステップ)」の意味は「一歩」とか「歩み」とか「(階段とかの)段」とか「階段」とか「段階」とかです。
「数」は日本語ですね。
何となく くっつけると
歩数
となります。






