書いたとおりにしか動かないもの

みし

コーディング

 総当たり試験中の一時間の間は、お茶でも飲んでいれば良いし、ドキュメントを書いていても良い。別のデバッグ作業やコーディングを行っても良いだろう。とはいえ一分が惜しいときにやるのは最終手段である。本来コーディングを本来していない時間に実行するものだ……。

 それはともかく、想定と数字が 現在コーディングの修羅場である。明日が納品期限のプログラムがまだ完成していないのである。つまり今日中に仕上げて完成させないと行けないわけである。しかし、98%は想定内の動作をしているが残りの2%がおかしいのである。修正しては再試験するが1%ぐらいしか改善していない……気がする。逆に言えば98%は正しいが、残りの2%に確信が持てない訳のである……これが頭を悩ましていた。

 ここで、コーディングについて説明しよう。

 コーディングとは規則ルールに則り、コンピュータが理解出来る言語に置き換える作業である。無論、コーディングした言語はそのままコンピュータが理解出来る訳ではない。コンピュータの上で、コーディングしたプログラムをコンピュータに理解出来る様に変換するプログラムに、書いたコードを飲ませ、理解出来るように変換する必要がある。

 これを実行時に行うものをインタプリタ、実行前に終わらせるものをコンパイラと呼ぶがここではどちらでも良いだろう。例えて言えばインタプリタは通訳者、コンパイラは翻訳者と呼ぶべきだろうか?

 特にスクリプトと呼ばれる言語は実行時に行うのでインタプリタを使う事が多い。とはいえ現在のプログラミングの環境に於いてこの2つはかなり曖昧になっている。

 プログラムは書いたとおりにしか動かない。というのは、間違えて書けば間違えて動くという事である。これをバグと呼ぶ。

 バグの原因は自分の書いたコードが間違っているとは限らない。インタプリタやコンパイラにバグあったり、呼び出したライブラリ——あらかじめよく使う機能をまとめたもの——にバグがあったりと原因は様々である。

 さてそれはともかく現在修羅場である。仕様通りにコードが動いてくれないからである。つまりバグがあるのである。

 埒があかないので試しに想定しうる全てのパターン——約三億五千万通りである!——を試行するプログラムを書いて試すことにした。そうすると想定より少しズレた結果がでた。勿論、三億五千万通りの全てのパターンを人間の目でチェックするわけには行かないので統計学によるチェックの結果である。


 さて読者は約三億五千万通りの試行をさせるのにかなりの時間がかかるように思えるだろうか?


 計算させる処理ロジックによるが大して時間がかからないものである。今時のCPUは一秒数千万回のコマンドが実行できる。数千ぐらいの機械語レベルの命令コマンドを組み合わせた処理の総当たりなら精々三億。総当たりを行っても1時間もあれば終わるのである。

 三億の画像ファイルを処理するのは全然別だ。あれは一つのファイルが三億のロジックを実行している様なものである。1週間でも終わるか分からない一致していない……それは大問題である。

 バグになりそうなパターンをいくつか想定し、そのパターンをいくつか試行していく。

 ここは違う、ここも違うと正解を吐き出すパターンをいくつか排除すると1つの大きな間違いがみつかる。


 ——光明が見えた。


 原因が分かれば、今度はその場所を特定するだけだ。間違えたパターンからその部位はほぼ特定出来ている。間違えているロジックを探し出す。そのロジックは最初に書いたところだった……それが正しいと思い込んでいたのが原因だった。例外処理を一つ間違えていることが分かったので、その部分を修正し、再度実行。


 ……


 いくつかのパターンを試したところで、問題無いことが分かった。


 そこでもう一度、総当たりを実験してみる。その間に寝ておく。


 結果は完全一致。どうやら間に合ったようである。

 ほっと肩をなで下ろし、淹れ立ての紅茶を飲んで俺は胸をなで下ろした。

  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

書いたとおりにしか動かないもの みし @mi-si

★で称える

この小説が面白かったら★をつけてください。おすすめレビューも書けます。

カクヨムを、もっと楽しもう

この小説のおすすめレビューを見る

この小説のタグ