Shammer's Philosophy

My private adversaria

リンカの仕事

Cの場合は実行時に動的に決まる情報というのは決められるのだろうか。
これを考えるとJava の動的クラスロードって便利と改めて考えさせられる。
それがこのリンカについて考えたときの自分の結論。


Cの場合は、コンパイル時にリンカを呼び出して、
実際の処理をライブラリと結びつけ、動くときにはその
結びつけの完了しているガチガチのオブジェクトコードが実行される。
インタプリタとしての特性を持たないCの場合はこれが当たり前。
それに対して、Javaにはインタプリタとしての特性があり、
実行されるその瞬間にどのように動くか決まっていればよい情報がある。
これは実際にコーディングするときにコーディング量を減らすことに一役買いそうだ。
Cでは、プログラムがどう動くかをすべてソースコードに定義してやらなければならない。
それに対し、Javaでは実行するその瞬間にどう動くかを決めるようなことができる。
つまり、Cではコンパイラがガチガチに固定して決めるべき内容をJavaでは
一部インタプリタの仕事にすることができる。そのため、多少コーディングが楽になる。
これがJavaの長所でもあり短所でもある。ロジカルな思考能力がCほどに要求されないので、
プログラミング能力という面ではCの技術者にかなわないだろう。
が、開発に割く時間を削減することはできる。
頻繁に修正される必要のある社内システムなどに向く理由はここだ。
(短時間でできるといえばPHPなどもあるが、ここではCとJavaの話だけにする。)


Javaで当たり前に行っている動的クラスロードのようなことをCでやるにはどうすればいいのだろうか。
おそらくできないのではないかなぁ・・・