見出し画像

プログラマーの独り言 - アプリケーションに名前を残す

shot with SONY DSC-RX0
20220617_RX008551-3x2.JPG
WebInstagramFlickrTwitter


コンピューターのシステムエンジニアを足掛け30年やってました(途中けっこう写真関係に脱線してたのでw).

業務的な言語は最初Fortranから入って,COBOL,BASIC,C.そして4ビットと8ビットのアセンブラ.加えてshellスクリプトやDOSのバッチも.しかしオブジェクト指向系で挫折(笑).

ところでどんなプログラムを書くとしても,ソースコードの頭にはいつ誰が作成したかコメントを残します.このコメント,ドキュメントとしては有効ですが,コンパイルすれば排除されますよね.だからコンピューターのどこを探しても自分の名前が存在しません.

最近になって主記憶上(古い表現ですみませんw)に作者の名前等のクレジットを置くべきだと思うようになりました(もちろん著作権が本人にある場合の話).その場合こうすればどうでしょうか?

たとえばCで書いた場合,以下のように要素を宣言して静的変数に設定しておきます.

#define NAME				"ファイルリネームユーティリティ"
#define PROG				"renUTL.exe"
#define	AUTHOR				"Hara Kazuo"
#define VERSION				"9.2.0"
#define COPYRIGHT			"Copyright (c) Hara Kazuo"

static char name[]          = NAME; //Program Name
static char prog[]          = PROG; //Execute File Name
static char author[]        = AUTHOR; //Author
static char version[]       = VERSION; //Version
static char Copyright       = COPYRIGHT; //Copyright

そして適当な箇所でローカル変数にコピーを行います.

int main (){
    char *a;
    memcpy (a, name, strlen(NAME));
    return 0;
}

コンパイルを行ってexeファイルのダンプを見れば

--------|-0--1--2--3--4--5--6--7--8--9--A--B--C--D--E--F-|---0123456789ABCDEF
00007f20|00 00 00 00 00 00 00 00 83 74 83 40 83 43 83 8b |   ........ファイル
00007f30|83 8a 83 6c 81 5b 83 80 83 86 81 5b 83 65 83 42 |   リネームユーティ
00007f40|83 8a 83 65 83 42 00 72 65 6e 55 54 4c 2e 65 78 |   リティ.renUTL.ex
00007f50|65 00 48 61 72 61 20 4b 61 7a 75 6f 00 39 2e 32 |   e.Hara Kazuo.9.2
00007f60|2e 30 00 43 6f 70 79 72 69 67 68 74 20 28 63 29 |   .0.Copyright (c)
00007f70|20 48 61 72 61 20 4b 61 7a 75 6f 00 83 74 83 40 |    Hara Kazuo.ファ
00007f80|83 43 83 8b 83 8a 83 6c 81 5b 83 80 83 86 81 5b |   イルリネームユー
00007f90|83 65 83 42 83 8a 83 65 83 42 00 00 00 00 00 00 |   ティリティ......
--------|------------------------------------------------|-------------------

ちゃんと設定した文字列がすべてありました.本来ならばデバッガでメモリの中を覗いてみるべきでしょうが,まあ大丈夫だと思います.

自分の名前が実行中のPCのメモリ上にあるからどうだ?と言われたらそれまでですけど,なんとなくこの方が気持ち良いですね(笑).

この記事が気に入ったらサポートをしてみませんか?