昔の疑問に自分で答えてみる | A PLACE

A PLACE

気にもとめなかったことがこの世界にはたくさん。
そのわずかでも拾うことができれば。

ネタ帳整理。

昔コンピュータシステムに携わっていたころにこんな疑問を持っていた。
「プログラムの構造を日本語で書いた設計書に意味はないんじゃない?」

結論としては「どうでもいい」というところに落ち着いた。

以下、その経緯なり、説明なり。

そもそも日本語はプログラムを書くための言語ではない。
そのためにコンピュータシステムのプログラム用言語が存在するのである。
日本語に限った話ではないので、プログラム言語に対して自然言語ということにする。

いわゆる「仕様書」というのは自然言語で書いて差し支えない。
これは人が理解しないといけない文書だからだ。
それに対して、プログラム構造はプログラマたちとコンピュータが理解できればいい話なので、一般人には理解できなくてもよい。
例えば
* コンピュータでキリのよい数字として 256 とか 1024 とかをよく使う。一般人にこれを理解させるためにはコンピュータの中身を勉強してもらう必要がある(実はよくツッコまれるところ)。
* 繰り返し処理はコンピュータの得意とするところだ。自然言語では実は表現しづらい。以上を繰り返し、とかいっても通じにくいし、よく範囲について誤解を生む。これが全体で何重にもなれば…
* 判断はこれまで蓄積した名前付きの記憶の組み合わせに基く。プログラム言語では見るべきところが決まっているのでそれを参照するだけ。人間は一般的にそんな細かいことは覚えていられないからそれを改めて掲示する必要があるが、そんなこと書いてたら日が暮れる。

もうこういう説明の時点でグダグダ。わたしゃコンピュータの調教師ではあっても一般人向けの教師ではない。

ここでなぜか上級 SE とかそんな人が出てきて顧客側にも理解させる必要があるから自然言語で書けという。
しかも顧客が理解したならそれが優先だから設計書の通りにプロフラムを書けという。

自然言語は論理構造が全く別物だから、設計書には結局プログラム構造を壊して書かなくてはならなくなる。それなのに、それに忠実にプログラム言語に翻訳するとどうなるか想像に難くないだろう。
あるいは、極力プログラムを壊さないように自然言語で書くなら、それは既に自然言語ではなく人には理解し難いものになる。

ここまでで、自然言語によるプログラム構造設計書に意味はない、と私は結論した。

相手にする会社が大きくなるにつれ、少し考えが変わった。
つまるところ、金になるのはその意味がない設計書だったのだ。
プログラム自体はそれこそ顧客には「どうでもいい」のだ。設計書に書いてありそうな動きをしてくれれば。
中抜き業者からしてみれば、意味なし設計書まで出してしまえばあとは「どうでもいい」のだ。
だからプログラマは仕様に立ち返ってプログラムを書く。プログラマは動くものを作るしかないからだ。意味なし設計書を盾に顧客が文句を言ってきてもこっちは「どうでもいい。」その処理は中抜き業者の管轄である。というかそれができないなら邪魔以外のなにものでもない。

結局のところ、そんなことを疑問に思うこと自体が「どうでもいい」のだ。蚊帳の外のことなのだ。

ちなみに設計書用に構造を絵に近い形で書くための様式が各種あるが、実際には使えない。
それを誤解なく理解できる人が顧客から中抜き業者からプログラマまで揃うことが滅多にないからだ。結局理解できない人に合わせて自然言語に翻訳せざるを得なくなる。

やっぱり自然言語というより日本語、あるいは日本企業の問題のような気がしてきた。
ま、いいや。もう世話になることないし。

自然言語で書かれていて誰もがアテにすべき「仕様書」がアテにならない、という話は検索でどうぞ。