最近感じたことをいくつか

ここのところブログの存在をすっかり忘れてしまっていた。思いのほか新学期が始まるというのは忙しくなるものだ。今年はそれほど環境が変わらないかと思いきや、そうでもない。大きな、そして大事な変化は大学で学部専門授業が増えてきたという点だ。今までの中途半端な情報処理などではなく、これからはアルゴリズム設計を意識したきちんとしたプログラミングの演習が授業に組み込まれていく。それと同時に、今セメスターからは計算機学や人工知能の講義も取り始めた。ようやく目指したい分野の学問に近づいてきたといった様子だ。

ところで前回の投稿では「これからはJavaを頑張る」と宣言していたはずだが……有言不実行な結果となってしまった。(ところで有言不実行というのは造語であって、もともとは不言実行という四字熟語から派生した単語だと思うのだが、では有言不実行を言い表すきちんとした熟語・慣用句はなんだろうか? 存在しないとも思えないが、探し方すらわからない)

そういったわけで、今回の投稿の主な話題はプログラミング演習についてになる。4週間かけて連立1次方程式解法プログラムを作成しつつ演算回数などについての考察を深めていくのだが……一言で言うとだるい。何度もfor文を回したり、アルゴリズム内の操作を関数でモジュール化したりと面倒な作業ばかりである。しかも大学で授業に使うPCと普段自室で使うPCの環境が違うものだから面倒くささが跳ね上がっている。
大学ではSolaris、部屋ではWindowsないしubuntuを使ってソースコードを書いている。Windowsが一番やりづらいのはまぁ仕方ないことだからいいとして、問題はSolarisubuntuの間でも障害が発生した場合である。まだ大学と自宅間でデータのやりとりをしていないので確証はないのだが、どうも文字コードが異なっているようである。恐らくSolarisEUC-JPあたりを採用しているのではないかと思う。そうだとするとエンコード変換作業が加わってくるわけで、非常にめんどくさい。大学のPCルームにはあまり長居したくないので(飲食禁止であるし)出来る限り自宅で作業を続けたいのだが、レポートの提出はプリントアウトした印刷物の形でないといけない。そのためどうしても大学でプログラムを実行する必要がでてきてしまう。いっそ印刷も自宅ですればいいのだが、そんなことをしていたら最終的には相当量の枚数になってしまうので用紙代が惜しくなってしまうのが人情というところ。
まあ、あれこれ愚痴を言いつつなんとかプログラムを完成させるというのはいかにもSEっぽくていいかもしれない。多少の我慢はつきものだろう。

しかし実際、今回の演習は思いの外得るものが大きいと実感している。今までの授業で100行を越えるプログラムはそうそう書いてこなかったため、あまりモジュール化の必要性がなかったのだ。だが今回ざっと数えただけでも5つはモジュール化を行っている。現実的にモジュール化によってソースコードが短くなっているのかと言えば微妙なのだが、そうしなかったソースよりは格段に読みやすくなっている自信はある。
またいくつかの関数を作っている時に今まで意識していなかった点に目を向ける必要性に気がついた。関数の内外で変数名が被った時はどうするのか、void型手続きでポインタ・アドレス演算子のミス(よくやる)、関数の引数に配列は入るのか。
今のところどうしても解決できないエラーは出ていない。コンパイルエラー時には大体どのあたりが悪さをしているのか自分で当たりはついているので、ケアレスミスをチェックするかググるとなんとかなる。それよりもコンパイルが通った後、実行したプログラムが期待通りに動かない時の方が大変だ。下手にエラーが出ない分、何が悪いのかわかりづらい。失敗してそうなあたりの前後にprintで出力したり等、チェック要素を組み込むことでなんとかことなきを得た。この手法はかなり重要なものだと思う。

大学でC言語を扱い始めた時に「ソースは一気にコンパイルにかけるのではなく、こまめにコンパイルを試してどこが悪いのかを調べたほうがいい」と教えられた。
その時は「そんなめんどくさいことするよりエラー出力で出てくる番号の行を調べた方が速い」と思って従わなかった。C言語は覚え始めのころなんかはスペルミスなどのケアレスミスが多いというのと、ソースコードの構造を予想しながらのプログラミング作業は難易度が高いという二つの理由からそう思っていた。だが今ではケアレスミスも減り、プログラミングにも慣れてきて大体の構造は予想がつくようになった。そして今100行を越えそうなソースを書いているのだが、ここまで大きくなるとモジュールごと小分けにプログラムを組んだ方が良さそうだと気がついた。「困難は分割せよ」の精神である。なんだか本当にソフト設計とかSEみたいな仕事をしているようで気分も良い。

提出日である今週の金曜日までにプログラムは完成させたいと思っている。

(蛇足)
最近ブログなどで文章を書いていると自分の文章が支離滅裂で滅茶苦茶な日本語になっている気がして仕方がない。今までロクに文章を読み直すという作業をしてこなかったのだが、きっと他人からすれば読む気にもならないような酷い悪文を書いてきていたのかもしれない。非常にまずい。一刻も早くなんとかしたい。