進化計算班5回目終了

Share on:

中間発表の予稿が揃ったようなので、ちらほらチェックし始めています。基本的に全員分に目を通すようにしてるので、漏れがないように研究室へのリンク順に眺めています。こうすると、私の興味からは離れている研究室が連続してたりするのでなかなかモチベーションが続きにくいんですが、逆にこれを終盤に持ってくると投げ出しちゃいそうなのでこうしてます。ということで取りあえずアシャリフ研分は終わりました。毎日少しずつコメント書き始めるはず。

進化計算班は5回目を終了。今回のメインタスクはグループ毎に適用したい問題を1つに絞り、適用方法(コーディング、適応度評価、交叉、後処理など)についての確認と、開発を依頼するスタイルなのでその調整。早めに終わって20分ぐらいグループ間討論の時間を取ったぐらいで、残り時間はずっとプログラミング演習してました。

プログラミング演習(C言語)では、前回書いたマインスイーパなコード(全てをmain()に書き連ねただけの状態)をベースに、

  • 変数を介さずに直接値を書き込んでいた箇所を変数に置き換え。(そうしないと同じ意味で使ってる箇所を一度に変更することができない)
  • 配列使ってた所をポインタ+動的メモリ確保するように変更。(そうしないとフィールドサイズを変更できない)
  • グローバル変数はデフォルトで禁止。(そうしないとシステム規模が大きくなればなるほどデバッグで泣くことになる)
  • 機能単位で関数化。(そうしないとプログラム全体の見通しが悪い)
  • 一部の関数を別ファイルに分割+Makefile修正。(そうしないとシステム規模が大きくなった時に見通しが悪くなったり、コンパイル時に時間かかり過ぎて泣きたくなったり)
  • 動作確認用のコード(テスト)を書いて、プリプロセッサ対応。(ウマく使うとプログラム変更時の動作確認しやすくなったり、見通しを良くできたり)

みたいな一般的なリファクタリングをして、main()関数の全体像を眺めやすく&再利用する形にしてみました。いや、してみたというよりは、学生に「こうしてみて〜」という指示をしながら実際に手を動かさせていたという形ですが。それをプロジェクタで投影しながら皆で眺めつつ「そこはこうしたら」「そうじゃなくて」とか助け舟出しながら進めるというスタイル。

プリプロセッサとか今更知る必要があるのかと言われたら微妙な気がしなくもないですが、ま、一応。

再来週ぐらいからは実際の開発に入る予定なので、後1,2回は今のスタイルで進めて「開発前の準備」としてやっています。簡易設計→ユースケース記述→試し実装→リファクタリング、という流れ。次回は細かいリファクタリングするか、Testingか、デバッグあたりを想像していますが、どうしようかな。