物理LOC
ソースコードの行数だよ
ファイル内の行数を素直に数えるよ
簡単に書くよ
物理LOC(読:ブツリエルオーシー 英:physical lines of code)とは
人間語で書いたプログラムの元ネタ(ソースコード)の行数の数え方のひとつ
であり
何も気にしないで単純にファイル内の行数を数えるやり方
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として「ソースコード」と「LOC」について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
ソースコードは「人間語で書いたプログラムの元ネタ」です。
プログラムを作って動かすまでの一般的な流れは
1.人間語でプログラムの元ネタを書く
2.元ネタを人間語から機械語に翻訳する
3.翻訳された指示に従って、コンピュータさんが お仕事する
です。
コンピュータさんは人間語が分かりません。
人間様はコンピュータさんの言葉が分かりません。
プログラムは人間様が作るものです。
そこで最初は人間様が分かる言葉でプログラムを作ります。
コンピュータさんに対する「あれをやれ」「これをやれ」な命令を人間語で書くのです。
次に人間語で書いたプログラムの元ネタをコンピュータさんが分かる言葉に翻訳します。
実際に お仕事をするのは、コンピュータさんですからね。
コンピュータさんが分かる言葉に変換する必要があるのです。
コンピュータさんが分かる言葉に翻訳したので、コンピュータさんは命令の内容を理解できます。
指示に従って、お仕事をしてくれるでしょう。
かなり簡略化した説明ですけどね。
これがプログラムを作るときの流れです。
この話で登場した
人間語で書いたプログラムの元ネタ
を「ソースコード」と言います。
LOCは「ソースコードの行数」です。
処理が何行書かれているかを示した数字です。
以上を踏まえて、本題に入ります。
例えば、そうですね。
以下の処理を見てください。
print "1行目だよ";
print "3行目だよ";
この処理は何行でしょうか?
単純に数えれば3行です。
1.print "1行目だよ";
2.
3.print "3行目だよ";
ソースコードが書いてあるファイル(ソースファイル)の行数を数えたら3行になっていますよね。
一方、処理に注目して数えたら2行です。
1.print "1行目だよ";
2.print "3行目だよ";
2行目の空行は、あってもなくても同じですからね。
print "1行目だよ";
print "3行目だよ";
は
print "1行目だよ";
print "3行目だよ";
と書いたのと同じです。
実質的には2行しかないと考えられるでしょう。
この2つの数え方のうち、前者の数え方である
細かいことは気にしないで、単純にファイル内の行数を数えるやり方
が「物理LOC」です。
あと、ついでなので書いておくと、後者の
空行とかコメント行とかは無視して、実際の処理部分だけを数えるやり方
は「論理LOC」と言います。
気が向いたら、セットで覚えてあげてください。
物理LOC:単純にファイル内の行数を数える
論理LOC:実際の処理部分だけを抜き出して行数を数える
です。
個人的にはLOCという尺度自体が気休め程度の信憑性だと思っていますが、一応
物理LOCよりも論理LOCの方がマシ
ということになっています。
当然ですよね。
//ここはコメントです。
//うんちゃら
//かんちゃら
//げふんげふん
//眠いです
//眠いですお腹も空きました
print "1行目だよ";
みたいな処理の行数を数えると、物理LOCで数えると7行です。
論理LOCで数えると1行になります。
論理LOCでも行数の水増しは できますけどね。
物理LOCの方が水増ししやすいのです。
一言でまとめるよ
まぁ「物理LOC」って単語が出てきたら「ファイル内の行数を単純に数えた、ソースコード
(人間語で書いたプログラムの元ネタ)の行数なんだな~」と お考えください。
おまけ
■訳してみるよ
「物理」は日本語ですね。
「LOC」は「lines of code(ラインズ・オブ・コード)」の略です。
「lines(ラインズ)」は「line(ライン)」の複数形です。
「line(ライン)」の意味は「線」とか「行」とかです。
「of(オブ)」の意味は「~の」です。
「code(コード)」は今回は「source code(ソースコード)」の略です。
「source code(ソースコード)」はIT用語の「ソースコード」です。
「source(ソース)」の意味は「源」とか「起源」とか「根源」とかです。
「code(コード)」の意味は「記号」とか「暗号」とか「符号」とか「コード」とかです。
何となく くっつけると
物理「源の記号」の行
となります。






