プログラム

2012/01/11

うるう秒が廃止に?

1月11日付の朝日新聞によると、"うるう秒"が廃止される可能性があるらしいのです。現在、時刻は原子時計により定義されているのですが、これが地球の自転と合わなくなった時に"うるう秒"を入れることにより調整されるのです。1972年から始まり、26回実施されています。潮の干満や氷河の状況等々様々な影響により、地球の自転速度は不定期に変わります。そのため、必要に応じて実施されるので、"うるう年"のように定期的に行われるものではないのです。
ところが、この"うるう秒"がコンピュータの障害になるから、廃止しろとの意見があるそうです。1秒遅らせる場合、日本では8時59分59秒の次に8時59分60秒を入れるわけです。その1秒後が9時0分0秒です。だから、コンピュータに障害が出る可能性は十分にあります。例えば、8時59分60秒というタイムスタンプのファイルが出来てしまえば、エラーで処理されるかもしれません。
国連の専門機関である国際電気通信連合(ITU)の1月16日~20日の総会で廃止案の採決が行われるそうです。どうやら、廃止に賛成派が多数らしく、廃止される可能性がありそうです。
もし廃止して、そのまま放置しておくと、数年で何かが起こるというわけではありませんが、600~700年後には誤差が30分~1時間程度になり、遠い将来真夜中に太陽がさんさんと輝くことになるかもしれません。
もともと、1日というのは地球の自転により出来た概念であり、後になってより正確な定義のために原子時計が使われたものです。コンピュータの障害などの問題も、その後に出てきたわけです。後から出てきた機械(それもコンピュータだけ)のために、昔からある1日を基準とした時刻の概念が変えられてしまうということにはどうも違和感を覚えます。
私は逆に、障害が出ないコンピュータを作るのが人類の知恵ではないかと思うのです。

| | コメント (0) | トラックバック (1)

2004/12/09

プログラマは性悪説派になる

私は偉そうなことを言えるほどではありませんが、パソコンソフトのプログラミングをやっています。
どうも、最近プログラマは性悪説派になっていくような気がしてなりません。

最初は、趣味で自分で使うちょっとしたソフトを作っていました。
そのうち、会社で同じデスクの人間と共に業務に使うソフトを作りだしました。
その頃までは、性善説でいられたのです。
自分で使うにしろ、会社の同僚と仕事に使うにしろ、「ここには100までの数字を入力して」とか、「ここは、半角英数字で入力して」とか言っておけば済んだのです。
もし間違った操作をしても、「そんな操作してはいけないと言ったじゃないか!」で済んだのです。

その後、会社を退職する時にそのソフトを会社に買ってもらいました。
そして、その時のプログラムよりはずっと簡単なものですが、ネットで使う掲示板などを作りました。
例え簡単な掲示板程度のプログラムでも、不特定多数の人が使い出すとそうはいきません。
使う人はどんな操作をするかわかりません。
「半角英数で入力して下さい」と書いておいても、全角で入力してしまう人は沢山います。

その昔は、ソフトを使う人はしっかりと使用説明書を読んで使いました。
ソフトを使うために勉強し、使える人は誇りのようなものさえ持っていました。
しかし今そんなことは言っていられません。
誰もが、パソコンを使う時代になってきました。
そして、間違った入力でエラーが出ても、「プログラムが悪い」と言われるのです。
プログラムのことを何も知らないような人が、「ユーザに優しくないプログラムだ」なんて、ネットなんかで書くのです。
プログラマは、ユーザのミスを補うプログラムを沢山書かなければならなくなったのです。
先ほどの半角英数の入力を全角で入力された場合、プログラマが半角英数に変換するプログラムを書かなければならないのです。
勿論会社に売ったソフトも、私がいなくても誰でも使えるようにプログラムを書き直しました。

プログラムを書く時は常に「ユーザはここでこんなミスを犯しそうだ」ということを考え、ユーザに優しく知らせるか、ユーザの知らないところでミスを補う方法を考える必要があるのです。
人間は必ずミスを犯すものですから、ある範囲まではエラー処理は当然必要なのですが、たんにエラーを表示するだけでなく、こっそりとわからないうちに処理をしてあげるためのプログラムばかり増えているのじゃないかとも思うのです。
本当はもっと軽いプログラムを作りたいのに、益々重いプログラムになっていくのですね。
ますます性悪説派になっていくような気がするのです。

ベテランプログラマの方からは、今更何を言っているのだといわれそうですが。

| | コメント (0) | トラックバック (0)

2004/10/20

プログラムテスト

あるネット上の掲示板に書き込みをして、面白い現象を見つけました。
私が書き込んだ文章内には、複数のホームページアドレス(以後、URL)が含まれていました。
掲示板は、「http://」から始まるURLを書き込むと、ハイパーリンクが付けられ、青色の下線が引かれて、クリックするとそのホームページへ移動するタイプのものでした。
文章内に3つのURLを書きました。
ところが、ハイパーリンクが付いたのは最後のURLだけでした。
はじめの2つには、普通の文字列になっていました。
自分の書き込みが間違っているのかと、不安になりもう一度テストしてみたのですが、やはり最後のURLだけに付きます。
この掲示板は、あるレンタル掲示板提供会社の提供する無料レンタル掲示板でした。
個人の方が趣味で書いたプログラムではないのです。
このレンタル会社は有料の掲示板も提供しています。
有料掲示板のテストページに書き込んでみましたが、同じ現象が起きます。
別にハイパーリンクが付かないなら、付かないでいいのです。
付けるならいくつ書いても、全てに付けるべきでしょう。

ハイパーリンクを付けるプログラムは、"http://"で始まって、半角英数字で構成され、途中に".(ドット)"があって...という文字列を正規表現で探し出し、探し出した文字列にハイパーリンクのタグを書き出すわけです。
たいして難しいプログラムでもないのです。
みなさんも、掲示板やエディタソフトなどでよく見かけられるものでしょう。
私もプログラムを書きますが、この場合実際に自分で記事を書き込んでテストをするのは当然のことです。
多分この掲示板のプログラムを書いたプログラマもテストをされたでしょう。
でも、テストではハイパーリンクは一つしか書かなかったのでしょうね。
コンピュータプログラムにバグはつきものです。
バグのないプログラムなんて無いのかもしれません。
あらゆる状況でのテストを行うことは、確かに不可能なことです。
しかし、この程度のバグはちょっとまめにテストをすれば、すぐに見つけられるたぐいのものです。

今日は、自分に対しても、より慎重なバグ取りをするように教えられました。

| | コメント (0) | トラックバック (0)