paiza B001、B002の問題を解く
B001
B001:PV調査(レベル:中級) 回答時間:23分5秒 獲得ランク:C 得点:80点
大きなデータでNGが出たらしい。型をlong longにしておけば、回避できたかもなあ。
B002
B002:値の計算(レベル:中級) 回答時間:24分57秒 獲得ランク:C 得点:30点
double使わないで、整数だけでなんとかする方法を探った方が良かったか・・・
コードリーディング重要
新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 - Qiitaより。
コードを深追いする深さが、プログラマの成長限界をどこにしてしまうかという基本的なパラメータではないかと私は思っている。
業務中にコードを深追いして、なおかつハマっちゃって時間をかけてしまう事があるので、勇気づけれました。
業務だと、知ってる人にきいた方が良い、なるべくスピーディーに解決すべし、みたいな所があるんですよね。コードを深追いしたから周りの質問に答えられる側面もあるので、やっぱり読んで損はないのだけど。心苦しくなるのは、コードを読む行為が何かを生産していると言いがたいからなんだろうなあ。
振り返ってみると、以前にGCC、Gaucheを時間をかけてじっくり読んだのは自分のスキルアップに確実に繋がってるよなあ。
コード読む量を増やしたい!
Code Reading―オープンソースから学ぶソフトウェア開発技法
- 作者: トップスタジオ,まつもとゆきひろ,平林俊一,鵜飼文敏
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2004/06/01
- メディア: 単行本
- 購入: 18人 クリック: 550回
- この商品を含むブログ (214件) を見る
プログラミングについて
ソフトウェアエンジニアの目指す道 〜 ナレッジワーカーとしてのプログラマ | Social Change!
“まったく同じプログラムが大量にあっても意味はないのが、ソフトウェアの世界です。つまり、一品物を作っているのです。” / 部品化や、流用開発とかもあるので、建物を建てる行為に近いのかなあ。
リファクタリングはリフォーム。バージョンアップは増築。
でも作り直しはソフトの方がまだコストがかからない。
アーキテクチャとか、パターンって考え方は建築業界をヒントにしていると見聞きした記憶もあります。
MISRA C 2004
MISRA C 2004というC言語を安全に移植性が高くなる事を目指したコーディングガイドラインを守ろうという文化があるのだけど、守れているかのチェック・レビューが大変だ。ツールで自動化できると良いのだけど、ツールでは見れないので人力でやらないといけない所がある。それに妙に厳しい所があったりするし。
MISRA C 2012というのが最近出たばかり。日本語の情報が無いので、電子で原文を入手してみてはいる。最初の数ページを読んだ状態。MISRA C 2004よりプログラマに優しくなっているといいなあ。
組込み開発者におくるMISRA‐C:2004―C言語利用の高信頼化ガイド
- 作者: MISRA‐C研究会
- 出版社/メーカー: 日本規格協会
- 発売日: 2006/10
- メディア: 単行本
- クリック: 25回
- この商品を含むブログ (8件) を見る
ソフトの問題か、テスト環境の問題か
TDDだと初めにテストを作成して、NGが出る事の確認から始まります。ソフトの問題か、テスト環境の問題か切り分けるのに必要な事だとちょっと腑に落ちました。
ソフトをウチの会社で作っていて、テスト環境を得意先で作っている中で、テストが上手くいかない場合に、ソフトとテスト環境のどちらも疑わないといけない状況になったんですね。これが、どちらに原因があるか分かるだけで、調査の時間も半分以下になるし、ウチが悪いのかどうか不明瞭な居心地の悪い時間がなくなるだろうなと。
TDDの本を読んだりしていると、説明はあるのですが・・・勉強になったと思います。
paizaの問題を解く
ITプログラマー・エンジニア転職のpaizaより、Cランク(初級レベル)の問題を解いた。標準20分の問題で25分くらい。しばらく使っていなかった関数の確認の時間と、問題文の読み込みが甘くて途中で修正を加えたのが大きかったかな。
回答後の採点は早い。機械的に判定させているみたいなので、コードの分かり易さはあまり気にしない方が良いかも。といっても、提出したコードは残ってたし、コードを書くスピードと分かり易さ・キレイさのバランスを探った方が良さそう。
数テストパターンの内に1個境界値NGがあったそう。どんなテストパターンでNGだったか分かると嬉しいなあ。
毎日コーディングするようにして、成長する様にもっていきたい。