昨夜は緊急のバグ対応で、てんやわんやでした。
バグの原因は、文字列の処理の不具合、コンピュータは文字処理が苦手ですからね。
コンピュータは「電子計算機」ですから、数字の演算や論理演算は得意ですが
文字列のを扱う場合、特別なルールをいろいろ設けないと、全然動作できません。
現在のほとんどのコンピュータでは、「A」=65、「B」=66というように
一文字一文字を数字に置き換えて、文字の連結・削除・切出などを行います。
その文字に与えらた数字(コード)が、皆さんも一度は耳にされた事がある
JISコードやシフトJISコードと呼ばれるものです。
コンピュータの場合、「1」という記述がプログラムに書かれていても
これが数字の「1」なのか、文字の「1」なのか判別できません。
数字の「1」と文字の「1」!? 「1」は数字に決まってるだろう!と
思われるかもしれませんが、数字の「1」はコードにしても「1」
文字の「1」は、コードにしたら「49」となります。 ややっこしいでしょ
たとえば「1234*5678=」の場合は、「123・・・678」を数字として演算させると
電子計算機として驚異的なスピードで計算ができます。
もちろん全部を文字の数字として、計算する事も可能ですが
その場合、電子計算機としての驚異的なパワーを利用できません。
その一方「次のレポートの提出は、5月31日に2番窓口へ」など
文字列の間に挟まれた数字文字だけを、一々数字として扱うより、
「次の・・・窓口へ」全体を全部文字として扱った方が、何かと都合がいい。
それで、5、31、2などは数字として扱うのではなく、文字として扱います。
ところがこれが困ったトラブルの一因になる事がよくあります。
複数の人でプログラムを分割して作成している場合によく起こります。
即ち、Aさんは「1」を数字だと思っている、(数字の「1」はコードでも1)
とこがBさんは「1」を文字だと思っている、(「1」のコードは49という数字)
つまり「1」をめぐって、方や数字あつかい、方や文字扱いで
コンピュータが処理するコードでは、全然別の代物扱いです。
これでは、コンピュータは誤作動を起こしてしまいます。
コンピュータの世界ではこのように、私達の日常の常識が通用しない点があり
そこはプログラムを書く人が頭を切り替え、あるいはよく考えて
プログラムを書かねばなりません。
今回の私のバグも、上記でご紹介したようなバグと似た様状況のバグでした。
こういうのは、よほど集中していないとついつい見逃してしまうんですよね。
今日目に付いた記事:
・社会保障・住基一体カード 厚労・総務省が発行を検討
くそー、俺達はモルモットじゃないぞ!
今日の気持ちステータス:
今日の一言
吉兆転じて凶兆
バグの原因は、文字列の処理の不具合、コンピュータは文字処理が苦手ですからね。
コンピュータは「電子計算機」ですから、数字の演算や論理演算は得意ですが
文字列のを扱う場合、特別なルールをいろいろ設けないと、全然動作できません。
現在のほとんどのコンピュータでは、「A」=65、「B」=66というように
一文字一文字を数字に置き換えて、文字の連結・削除・切出などを行います。
その文字に与えらた数字(コード)が、皆さんも一度は耳にされた事がある
JISコードやシフトJISコードと呼ばれるものです。
コンピュータの場合、「1」という記述がプログラムに書かれていても
これが数字の「1」なのか、文字の「1」なのか判別できません。
数字の「1」と文字の「1」!? 「1」は数字に決まってるだろう!と
思われるかもしれませんが、数字の「1」はコードにしても「1」
文字の「1」は、コードにしたら「49」となります。 ややっこしいでしょ
たとえば「1234*5678=」の場合は、「123・・・678」を数字として演算させると
電子計算機として驚異的なスピードで計算ができます。
もちろん全部を文字の数字として、計算する事も可能ですが
その場合、電子計算機としての驚異的なパワーを利用できません。
その一方「次のレポートの提出は、5月31日に2番窓口へ」など
文字列の間に挟まれた数字文字だけを、一々数字として扱うより、
「次の・・・窓口へ」全体を全部文字として扱った方が、何かと都合がいい。
それで、5、31、2などは数字として扱うのではなく、文字として扱います。
ところがこれが困ったトラブルの一因になる事がよくあります。
複数の人でプログラムを分割して作成している場合によく起こります。
即ち、Aさんは「1」を数字だと思っている、(数字の「1」はコードでも1)
とこがBさんは「1」を文字だと思っている、(「1」のコードは49という数字)
つまり「1」をめぐって、方や数字あつかい、方や文字扱いで
コンピュータが処理するコードでは、全然別の代物扱いです。
これでは、コンピュータは誤作動を起こしてしまいます。
コンピュータの世界ではこのように、私達の日常の常識が通用しない点があり
そこはプログラムを書く人が頭を切り替え、あるいはよく考えて
プログラムを書かねばなりません。
今回の私のバグも、上記でご紹介したようなバグと似た様状況のバグでした。
こういうのは、よほど集中していないとついつい見逃してしまうんですよね。
今日目に付いた記事:
・社会保障・住基一体カード 厚労・総務省が発行を検討
くそー、俺達はモルモットじゃないぞ!
今日の気持ちステータス:
今日の一言
吉兆転じて凶兆