見出し画像

#193 とりあえず,NaN とかなる.

「何」「難」「軟」と色々な「なん」がありますが、コンピュータのプログラムでも「NaN」があります。さてこのNaNとは、何でしょうか?

"Not a Number"

 数値計算をしていると、時々「数字」しか出てこないと予想しているところで、「数値以外」(Not a Number: NaN)が出てくることがあります。多くの場合は、計算プログラムにミス(バグ: bug)があったり、入力データが想定外の組み合わせや入力データの不完全さが原因だったりします。

「エラー」メッセージがないと大変

 プログラムを作成していて、「文法エラー」(syntax error) や「違法な命令」(illegal command)の「エラー」メッセージが出る時は、実はそれ「ラッキー」です。本当に困った状態というのは、「エラ〜メッセージが出ずに、固まった(freeze)した状態」です。画面には何も表示されないので、一見するとうまくいっているようですが、実はイケてません。困った状態であること、その原因、わかるまでにしばらく時間がかかります。(運が悪いと、わからないままということもあり得ます。)

NaNは”優しい”

 最近”Python”というプログラミング言語をよく使っています。この言語、エクセルから読み込んだ表形式のデータファイル、一部に”空白”があった場合、そこを数値計算すると”NaN”となります。これってすごい事で、「エラー」で実行が止まらずに、とりあえず”NaN”という文字に置き換えて、その続きを処理しつつづけることができるのは素晴らしいです。「1÷0=?」この計算は学校で「計算が許されていない書き方」と教わり、普通のプログラミグ言語では「エラー」となって、計算がそこで中断します。Pythonは”NaN”と表示して、次の計算をしてくれます。NaNが原因で次もNaNとなるなら、NaNという値が増えていきますが、、、。

マイコンの画面にも”nan”

  このNote記事の写真、センサの値から計算した値をマイコン画面に表示するプログラムを作成した時のNaNが表示された画面です。小文字の”nan”は見たことがなかったので、一瞬何が出たかわかりませんでしたが、”なぁーん(NaN)ダァ”とわかりました。これからプログラムの誤り修正の作業、いわゆる”虫取り”(bugとり, debugデバッグ)が始まります。

人生、至る所に”NaN”あり

 「1÷3=?」割り切れないこと、人生にはいろいろあります。コンピュータの計算でも、「記号処理」という扱いで「三分の一」という分数(1/3)で処理する方法があります。(例えば、Wolframalpha, sympyなど)

 仕事で与えられた内容が不完全だったり、もともと「解のない問題」であることを仕事を与えてくれた人自身も気づいていない、あるいは気づいていても「工夫をして問題を少し変更して現実的な解」を求めて欲しいと要求されていることが多分(?)あります。(仕事以外も、友人・家族などの人間関係も同様です。)

 そんな時には、「直ぐに答えはわからないけど、とりあえず次のことを考えてみよう」という軟らかい考え方・柔軟(じゅうNaN)な考え方で過ごしていきたいと改めて考えたマイコンと戯れた休日でした。