2007年9月27日木曜日

高齢の追憶(56)・C++

仕事が一段落した。
プログラミング言語はあたしが推薦してやまない、
世界的に有名な無償の開発環境Tcl/Tk。
泣く子も黙るTcl/Tk。
何でもできちゃうTcl/Tk。
C++プログラマが少なくなるなか、放医研ではTcl/Tk
による開発が標準になっているほどだからな。
ただ、オブジェクト指向タイプではないから、開発
規模は中規模まで。

これを使って、最近までに5,000行強を組み上げた。
依頼者側は開発費を回収すべく、これをパッケージ
化して売るんだと言う。
あたしに対してロイヤリティーを払うというから、
そのパッケージ化作業もあたしが手がけるハメにな
ったということ。

ところが、Tcl/Tkというのはインタープリタ言語で、
技術的ノウハウ(プログラムコード)がまる見え。
で、どこにどういうファイル名でインストールする
か智恵を絞った。
インストールしているときにファイル名を画面表示
しないこともひとつだが、困ったのがアイコンを始
めとする画像ファイル名で、これをモロにCD-ROMへ
記録するわけには行かない。
で、CD-ROM上の名前を変え、HDへコピーする時にコ
ッソリ元の名前に戻すことにした。

アイコ→icon.gif
キヌコ→silk_adr.gif
カナエ→marksize.gif(鼎の軽重(大小)を問う)

と言った具合。
この偽名変更はC言語でできるからいいが、アプリ
ケーションを起動するプログラムを別の場所に作成
する必要に迫られ、四年前に相棒が作成した起動プ
ログラムを手入れすることにした。

相棒さんが手がけたプログラムはC++で、実を言うと
あたしは、C言語のベテランであってもC++は全く組
めない。
相棒のテンゾーは四年前の記述を覚えていないそう
で、

 「2時間そこらではできない」

とぬかすのだった…。
ははあ…銭の問題だなと直観するところがあり、自
分でC++を改造することにした。やりたいことは簡単
で、

 wish C:/Tcl/lib/Tclap/_main.tcl

というコマンドを実行させるだけでおしまい。
"wish"というのはTcl/Tkの"window shell"のことだ。
たったこれだけの機能を"2時間そこらではできない"
とぬかすのは不思議でござろう、皆の衆。
還暦を過ぎたプログラマの記憶力減退を疑っていい
のかね?
信じられん!

で、その作業の中身。
まずアイコンを描き替えて、今回アプリのアイコン
にする。
これが32×32と、16×16の二種類を用意しなければ
ならない。
32×32を作っておけば、16×16の方はVisualC++の方
で勝手に作ってくれると思ったら大間違いで、自分
でプチプチ編集しなくちゃならんのだと。
次の壁が「名前空間」という概念で、どんな小規模
プログラムでもこの概念は必要なんだと言う。
泣けてきたね。

このハードルを飛び越えてヤレヤレと思っても、ダ
イヤログのキャンセルボタンが押されたときはどう
の、タスクバーに引っ込めたときはこうの、ダイヤ
ログをドラッグされたときはどう処理するの…とい
ちいちウルサイ。

 wish C:/Tcl/lib/Tclap/_main.tcl

だけ実行してくれればいいのに、なんだってあれこ
れ煩わしいことをやらなくちゃーいけんのかと腹が
グツグツ煮え立ってきた。
案の定一回目のコンパイルが通り、リンクもエラー
なしで通過しても、起動してみれば

"…がreadになれませんでした"

の有名なエラーが…。

???…で、第一日目は放棄。
第二日目の本日は、畑作業(土を掘り返して空気を
入れる)をしてリフレッシュしてから慎重に手をつ
けた。
不要と思われる記述部分を数行削除するたびにコン
パイル&リンクの冒険をし、3時間かけてスリム化し
た。
これを起動してみごとOKの"Congratulations!"だ。

どうやって達成したかって?
不要と思われる関数のbody部分を空にして、return
命令の返り値はすべてTRUEにしたのでござんす。
関数名を残したのは、名前空間を含めてがんじがら
めC++記述のウラをかくためでござる。

これで二度目の胃潰瘍にならずに済んだわけだ。
おめでたいことにてござんす。

0 件のコメント: