困った、困った

今秋から新たにプログラムの講義を聴講している。この担当教授は最初の授業で、C言語は他のコンピュータ言語と同様、高度なプログラムを作ることもできるが、一方、C言語は他のハードウエアとの関わりが強く、そのテクニックを理解することも重要と考え、主に後半の内容の講義をすると説明した。

私は、C言語と ハードウエアの関わりに関して知識が無いので、大変楽しみにしていた。自分でC言語でプログラムを作り、それを移植してマシーンを動作させるのである。これはやってみる価値があると考えた。

ところがいざ、授業が始まってみると、内容が難しく、毎回の授業で沢山の課題を与えられ、自宅で予習を余儀なくされる。予習と言っても、結局はプログラムを自作し、提出しなければならない。

そのプログラムというのも、いわゆるコンパイル処理が殆どで、作成したC言語のプログラムをアセンブリ言語に変換し、次いでリンクし、最終的にハードウエアが処理できる機械語(バイナリー言語)を作成し、それをエミュレートして、ハードウエアの動作を確かめるのである。

内容的には、一方向に処理を進めればよく簡単であるが、動作検証で上手くいかない場合の対策がとても大変である。というのは、C言語を使うのは最初のプログラムだけで、その後のコンパイル、アッセンブル、リンクは、何れも人には全く分からない記号である。だから、どこでミスが生じているのか、見当がつかないのである。

これまで10問程度処理したが、問題なく動作したプログラムは、半分ほど、残り半分のうちの半分は、大変な時間を使い何回もプログラムをチェックしてやっと動作した。そして最後の残りは、今なお、動作がうまくいかない。完全に行き詰っている。

今週、火曜日の講義で出された問題は、お手上げ状態である。一見簡単なのだが、コンパイル作業が上手く行かないのである。いわゆるコンパイル作業はブラックボックスの中に入っており、不良個所を突き止めることが出来ないのである。

処理は、上記したように一方向処理なので、入力時のCプログラムが正しく書かれてあれば、必ず正常な機械語を得られるのであるが、ただそれだけのことだが、これが大変難しいのである。C言語のプログラムをチェックするツールは沢山あるので、それを用いてチェックはしているが、それでも機械語が上手く生成できないのである。

只今、私はこういう状態で、少し、いや大いにノイローゼ気味である。気候はよくなり、外に出るのが楽しくなるはずなのに、そうしようと思うと、課題のプログラムの問題が後ろ髪を引き、思い切り楽しめないのである。

早くこの状態を脱しなければいけないのだが、そのためには、更にプログラミングの精度を高めなければいけない。大変なジレンマである。でも、こういった悩みは反面、頭を刺激して良いのかもと半分は喜んでいる。

今日はここまで。

Top