2005年07月16日 12時52分04秒

printf と量子力学

テーマ:プログラミング
この関数を呼ぶと値がおかしくなる。バグである。参ったなぁ…と思って printf でデバッグしようとすると…。

おかしい…。

治った。

printf で画面に表示される文字列はどれも正常な値ばかり。変だと思って、デバッグ用に入れてた printf を削除するとやっぱり動作がおかしくなってしまう。

奇妙だ…。printf で画面に文字を表示させるとバグが治る…。

量子力学の考えでは、電子や光子などの微細な粒子は、観測する事でも影響を受け、状態が変わる事があるという。観測するまでは、2つの状態が重ね合わさった状態で、観測するといづれかの状態が決定する様な原理が成り立っている。これを重ね合わせの原理という。

えぇっ!!もしかして、オレ重ね合わせをエミュレートしちゃってるっ!?

このバグは超量子的な不具合で、printf をするまで、不正な値と正しい値が重ね合わさった状態で、printf すると正しい動作にしかならないという感じですか?

これはやっかいだ…。量子論に対抗できるようなコードが思いつかない。

シュレイディンガーさん助けて下さい。オレの猫はやっかいです。

…やった事ある人は分かると思いますが、こういう時って、キャストミスとか、バッファオーバーフローとかで、値を壊している時が多いです。C だと特に、アドレス渡し、値渡しとあって、データの代わりにアドレスが返ってくる事も、やってしまったりします。printf するとたまにアドレスのマッピングが良い感じに変更されて、値が出力される事があるようです。

&を一個取るのに3日かかりました。

AD
いいね!した人  |  コメント(1)  |  リブログ(0)
2005年01月20日 23時46分45秒

シーザー暗号解読ツールを自作する その2

テーマ:プログラミング
今日はあまり時間がなくて、文字カウンタのクラスを文字列へ対応させていたら、昼休みが終了してしまいました。この辺で設計をちゃんとしたいなぁと思い始めましたので、明日は設計について考えてみます。
AD
いいね!した人  |  コメント(0)  |  リブログ(0)
2005年01月19日 20時30分07秒

シーザー暗号解読ツールを自作する

テーマ:プログラミング
udpipさんのブログ「シーザー暗号なお話 その2」を見て少し触発されましたので、自分で作ってみる事にします。

ルールは (1)udpip さんのブログに載っている情報から推測して、プログラミングしてみる。(2)プログラムから答えが出せるまで答えを見ない。(3)設計とプログラミングは仕事の妨げにならないよう昼休み中に行う。

…って、本当に?できるかな…?

というわけでまず今日は必要そうなモジュールを作って見ました。何が必要なのかも分からないので、とりあえず作ってみてから考える方法で行きます。

(1) 解析に使う為の英単語データベースの作成ツール。
(2) 文章を入力すると、文字ごとの出現回数のカウントをするモジュール。
(3) 「暗号の文字」と「予測される文字」の置き換えを行うモジュール。
(4) 単語と思わしき文字列が、ほんとに英単語かどうかチェックするモジュール。

…と、ここまで作って昼休み終了。文字列の出現頻度とかをカウントするモジュールを作って、暗号の時点で単語と思わしき場所を見つけた方が、効率が良いような気がしてきました。明日はその辺の設計をまずはしてみようと思います。なんかますます出来ない様な気がしてきました。

AD
いいね!した人  |  コメント(2)  |  リブログ(0)
2004年11月17日 23時46分47秒

バグトラックの本

テーマ:プログラミング
最近開発作業よりもバグフィックス作業に追われています。

いろんな製品で共通のモジュールを使っていて、共通のバグがあるのですが、効果的な管理方法と展開方法が無い状態です。

バグ管理に着いて言及した本がありましたらコメントお願いします。

いいね!した人  |  コメント(0)  |  リブログ(0)
2004年11月15日 12時31分34秒

バグトラッキングツール

テーマ:プログラミング
2日連続で鍋料理の記事をエントリーし、読者ニーズに全く応えない羊雲です。申し訳ありませんでした。手前が何を食ったかなんて誰も興味ないですよね。でも、毎週、鍋料理のエントリーは欠かしません。負けません。(何に?)

というわけで、今日は仕事ネタでバグトラッキングツールの話でもしようと思います。

バグトラッキングツールというのは、

(1) あるソフトウェアで発生したバグ(不具合)を記録しておいて
(2) その内容に対して修正したり、仕様変更したら、その内容を記録しておく

ツールだと思います。突き詰めると「Ver.2.4 で発生したバグは、Ver.2.6 で直しましたよ」と記録するツールだと思っています。

ここまでが基本で、記録する情報としてバグを発見した人、日付、バグを直した人、修正した日付等の細かい内容と、更に、ソースコードとの関連付けとか、Web ブラウザからの閲覧とか、バグの発生率や依存性などの統計情報が見れたりする機能が付いていたりします。

ウチで使っているのは、つい最近まで Excel 表や Access を駆使して独自ツールを作っていたのですが、我らが Mozilla の Bugzilla を使う事になりました。

まず、最初の感想としては、

(1) なんか英語ばかりで分かりにくい?
(2) Web で見れるのはいいけれど、配置が気持ち悪い?
(3) バグが多すぎて、ブラウザの画面に収まりきらない?

とか、そんなネガティブな感じでした。使っていくうちになれていくのでしょうが、最初の印象がいまいちでした。この程度の事であれば、自分で CGI 書いた方がいいと…。Bugzilla の評判を聞くと、きっとそんなことは無い。もっとブレイクスルーをもたらしてくれるはずだ。とも思うのですが、ちょっと、余計に面倒臭くねぇ?という感じです。今のところ…。

で、ですね。こういう風に私がネガティブな意見を書いているのには、原因があってですね、この Bugzilla 、何の為に導入したのか良く分からないという所が原因なんですよ。少なくともなんらかの新規ツールなり、仕組みなりを組織に導入する際には、事前に「~という目的を持ってやりますんで、各自意識しといてくださいね」って説明があってしかるべきだと思うのです。そうすりゃ、「おっしゃ、分かった。その目的の為には、Bugzilla が持ってるらしいこの機能を使って、~という情報を~にまとめて~」なんて感じでモチベーションも上がるってもんだと思うのですよ。今回の件で言えば、「何か Bugzilla っていうバグトラッキングツールがはやってるらしいよ?ちょい使ってみる?」みたいな感じで導入されているような気がして、私的にかなりゲンナリなのです。しかもなんで、このタイミングで Bugzilla なんだと…。

海外開発拠点との連携とか、そういうのがあればいいのですけれど、今の私の仕事の場合全然そんなの無いですしね。大体、Bugzilla の項目が英語なのに(AuthorとかDateとか…)、中身が日本語なので、本当にこれでいいのかと…。そんな風に思うわけです。

いいね!した人  |  コメント(1)  |  リブログ(0)
2004年11月09日 02時51分44秒

プログラミングは文学か

テーマ:プログラミング
今日書こうと思っていたブログのテーマに近い内容の記事を見つけましたので、トラックバックしました。最近少し真面目になってきてしまいました。

悪態のプログラマ 「誰のためのコード?」

まず、私の普段の仕事から説明しないといけないのですが、私の仕事はカスタマイズというか、改造というか、亜種というか、他人とかチームで作った製品を顧客や案件に合わせて改造する、言わば人のふんどしで相撲をとる様な仕事で、かつ、基本的に1人で派生製品を仕上げているのですが、そういった点からほぼチームの全員のソースコードを目にする機会が多いのです。

プログラムはどうやら人の性格が出るものらしく、個人個人かなり個性的なプログラミングスタイルというのを持ってまして、基本的に「人のプログラムは読みづらい」と言われる中、それはもう全然読解できない場合とかもあるわけですよ。これはもう文学以外のなにものでも無いです。コードとコードの行間を読み、開発者が何を思ってこの処理を書いていたかを汲み取り、更に自分の目的に合う様に推敲を繰り返していく、果たしてこれがプログラミングでしょうか?

(※ 本当なら規約とかを作って癖の無いコーディングをするのですが、ウチの場合は自由主義というか新人に教える時間も無いので己の裁量にまかされているのです)

とりあえずの原因は、上の括弧内に書いているみたいに是正措置が無い事ですが、また、使用言語がCというところにも問題はあると思っています。どの辺が問題かというと言語としてサポートしている機能が少ないわりに、かつ、なんでも出来るように作られているので、動けば良いといったようなプログラムが簡単に書ける。言い換えると無理にでもゴリ押ししてしまえば、Cの場合は問題無く動く場合がある。といった点だと私は思っています。ゴリ押しした場合は、とりあえず目的の動作を行うことができますが、プログラムとして破綻します。こうなっているコードが如何に多い事か…って感じです。

で、ですね。C++という言語について最近勉強しているのですが、プログラミング言語 C++ の冒頭に、「このままではプログラミングは文学になってしまう。それを避けるためにC++という言語を作った」と書かれていて、痛く感動しました。もう、これだと。

まあ、言語を変えたからといって問題が解決するとは思っていませんが、少しでも改善すればいいかなぁと考えています。実はC++へシフトしようと思い始めたのが1年くらい前になります。C++で何を作るかという事と、設計に随分と随分と時間がかかってしまい、やっと最近になってC++による実装を始めました。まだ今まで通りの製品を全てC++で記述できるレベルに達していませんが、手ごたえの様なものは感じています。まだまだ先は長そうですが、頑張っていきたいと思います。
いいね!した人  |  コメント(3)  |  リブログ(0)
2004年09月29日 13時15分30秒

ソースコード管理ツールは何を使ってる?

テーマ:プログラミング
私の会社では、ソースコードの管理をするツールとして、プロジェクトによって様々ですが、Microsoft の Visual SourceSafe (VSS) と CVS を半々くらいで使っています。CVS はコマンドでも使えるし、GUI ツールも充実しているので使いやすですね。Linux ホスト上でも、Windows ホスト上でも違和感無く使えますし。但し、フリーの為か、細かい機能を見てみると、やっぱり VSS の方が使いやすいですね。

CVS では、コメントとか、バージョン毎の差分とかを見ようと思ったときに、結構手間取りました。あと、CVS サーバ上のコード ( チームみんなの共有ソースコード ) が更新されているかどうかとか、今のサーバ上のファイルを見たりする事ができないのが、ちょっと使いづらいのです。

やっぱり VSS かとも思いますが、Linux から使えないし、むやみに重いしでちょっといただけないのです。

この日記を読まれた方で、こんなのあるよ。使いやすいよ。というのがあれば教えてもらないですか?

……そんなの自分で調べろって感じですが…。

いいね!した人  |  コメント(0)  |  リブログ(0)

AD

ブログをはじめる

たくさんの芸能人・有名人が
書いているAmebaブログを
無料で簡単にはじめることができます。

公式トップブロガーへ応募

多くの方にご紹介したいブログを
執筆する方を「公式トップブロガー」
として認定しております。

芸能人・有名人ブログを開設

Amebaブログでは、芸能人・有名人ブログを
ご希望される著名人の方/事務所様を
随時募集しております。