リンカの作成
エディタができてプログラミング効率が上がってくると発生するのがファイルの巨大化だ。
コメントを入れるようになったし、機能も増えてきた。
しかしこれを一ファイルで取り扱うのはきつい。
エディタにこれまでなかった検索機能を入れたから多少はましになったけど、なにせ画面切り替えに二秒もかかるのだ。
一〇〇〇行とかあったら全部見るのに四六ページで九二秒もかかる。
できればシーケンスは分割したい。
「リンク情報を入れたファイルを実行ファイルとして、ローダーでくっつけるか」
普通コンパイラなどで実行ファイルを作るときは予めリンカで必要なファイルをくっつけておく。
実行時に必要に応じてくっつけるというか呼び出すことができるようなダイナミックリンクなる仕組みもあるが、今回は全部くっつけてロードすればいいだろう。
しかしこれまでの実行ファイルとリンク情報ファイルの二つを区別して読み込まないといけないのは面倒な気もする。
そうすると実行ファイルの拡張子とかも変えないといけないか?
.comと.exeとか?
「ちょっとめんどくさいな。実行ファイルがリンク情報だったら、その情報に従ってロード、そうでなかったらこれまで通りというふうにするか」
シーケンスは精霊語で書いているからインデックスは自国語で書いておけばいいだろう。
ファイル名も基本自国語だしな。
ローダーにリンクを処理するシーケンスを追加。
これまでの実行ファイルはそのままロードできる。
今後作る分割ファイルはリンクファイルを実行ファイルの拡張子にすればいい。
関数名とかで必要なシーケンスを切り取ってくっつけていくわけじゃないから簡単だな。
「関数名で思い出したけど、起動キーってグローバルなんだよなー」
普通向こうの世界のコンピュータは同じ関数を複数のプログラムにリンクできる。
基本、プログラムが独立しているからだ。
しかし精霊コンピュータは、魔導書内のシーケンスが一つのプログラムといっていい。
変数も関数もグローバルだから、名前がかち合わないようにしないといけないし、割り込み処理も気を使う。
「ローカル化か。何かいい手はないかな」
今はいいが、将来的に名前のバッティングは必ず起こる。
現在はシングルタスクなのでOSやBIOSとバッティングしない限り問題はないが、マルチタスクにしたとき組み合わせで動かなくなるやつが出てくる。
早めに解決しておかないとな。
この問題を解決しないと、これ以上の発展は望めない。
グローバル変数やグローバルラベルしかない言語仕様のコンパイラで、大規模プログラムを組むなどほぼ不可能だからだ。
「何かプレフィックスをつけるのが定番だが」
今も起動キーには頭に種別がわかるプレフィックスをつけている。
しかしこれが結構めんどくさい。
名前が長くなるからね。手書きだとことさらだ。
「そうか、ローダーにやらせればいい」
ローダーが読み込むのは実行ファイルだ。
今でもコメント部分を削除して読み込んでいるんだ。
プレフィックスだって入れられる。
「とはいえどこにプレフィックスを入れるかローダーに判断できるか?」
少なくとも起動キーや変数定義にはプレフィックスをつけなければならない。
しかし、つけてほしくないところもある。
「プレフィックスの位置は手動で指定するしかないな」
コメントのようになにかの記号を使って、その記号を見つけたらプレフィックスを付加するようにすればいけるはずだ。
今作っているやつには予めプレフィックスがつけてあるから、この部分を自動生成するように記号に変換、今後作るシーケンスにもこの記号を付加してリンカはそこにファイル名とかをくっつけて魔導書へ書き込む。
それなら各プログラムの独立性は保てるはずだ。
これまで手動で入れていたものが不要になるのだから手間が省ける。
「しばらくはこれでいいか。マルチタスクができるようになれば、同じファイルを複数起動できるから、少し手を入れないといけなくなるが」
同じ名前のシーケンスが起動してたらシーケンス番号でもつけておけばいいだろう。
うーん、シーケンスにシーケンス番号ではややこしいか。
これからは精霊語シーケンスのことをプログラムと呼ぼう。
人は人と繋がりたがるように、プログラムもプログラム同士やデータと繋がりたがります。
最初っから繋がりっぱなしなのがスタティックリンク、必要なときだけつながるのがダイナミックリンクです。
前者は恋人か夫婦、後者はせくともw
今ではコンピュータ同士も繋がりたがり、今やインターネットにつながっていないと、まともに使えない時代に。
うちのメインPC、CDドライブさえついていないため、USBメモリ経由かインターネット経由でもなければアプリもインストールできません。
昔はCD-ROMが主なプログラムの配布媒体でしたが、今やマイノリティの存在に。
ゲームでさえオンラインで買う時代。
エロゲのでっかいパッケージにはおまけなんかも入っていてコレクターズアイテムとしても楽しめたのですが、興味ない人から見ればかさばるし捨てるのにも気を使う負の遺産になっているのかもしれませんね。