クリプキクローネ日記帳

ある種の音楽と数学とランニングはミニマルなところが似ていると思う。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

モダンC言語プログラミング [花井志生(著)]

C言語はモダンになってもC言語だなと思いました。
いい意味で。



EclipseとJenkinsでC言語をオブジェクト指向でTDDしましょう。
という本です。

まずEclipseに関しては昔の重いイメージが残っていて若干敬遠気味なのですが、
拡張性もあって守備範囲の広い開発環境なので使いこなせた方がいいだろうなという気がします。
でもC言語はもっと軽い環境でサクサクやりたい気持ちです。

オブジェクト指向はCでもやりたいレベルとそこまでしたくないレベルがありますね。
オブジェクトを構造体にして関数にポインタを渡すことでメンバ関数を実現するのはC言語で開発する時にぜひやりたいです。
ですが、継承や仮想関数は読みにくくなるのであまりやりたいと思いません。
どちらにせよC++のコンパイラはだいたいこういう考えで動いているはずなのでおもしろかったです。

デザインパターンはそもそもJavaやC++でも分かりにくくなりがちなので、
Cでやると余計に読みにくくなりそうです。
ですが、デザインパターンに当てはめるところまでやらなくても、
だいたいこういう分離をしたい、というのはCでも充分実現可能ないい思想だろうと思いました。
「オブジェクトにtype idを持たせたくなったら黄信号」は正にその通りですね。

TDDはGoogle Testを用いた説明でした。
Cの場合、スタブの接続を関数ポインタかリンカかifdefの再ビルドでやるしかないので、
そこが常にネックなりそうな気がします。
関数ポインタは流れを追いかけづらいのであまり使いたくないです(C脳)。

テストは品質保証というよりケアレスミス防止だというのもいい言葉だと思います。
品質保証と捉えるとテストケースをガチガチに書いてしまって柔軟性が低下する、ということだそうです。

Jenkinsは執事のアイコンがいいですよね。
ビルドとテストを自動でやってくれるのは便利だけどそこまで設定するのが大変そうです。

メモリ破壊を検出するValgrindはすごくよさそうですが、
ヒープ領域しかチェックできないのは動的メモリ確保を行わない小さいプロジェクトでは意味ないですね。
テストの時だけmallocが動くようにするのもなんだか違う気がするし。

ビルドツールのSConsはmake的なファイルをPythonで書くのが使いやすそうです。

というわけでモダンなC言語でした。
ちゃんと読めばちゃんと分かる、というC言語の良さはモダンになっても同じでした。

開発環境まわりを整備するのはどうしても面倒に感じてしまうんですが、
今の時代はそういうことを言っていてはいけないんだろうなと思いました。
ある程度こなれてくるとすごく快適で最高なんだけど、
そこまで達するのに時間がかかることを考えると億劫になってしまう、
というのは家具のメンテナンスとか、スマホやパソコンの買い替えや自作と同じですね。
めんどくさがりなところ、どうにかしたいです。
  1. 2017/05/26(金) 23:43:20|
  2. | トラックバック:0
  3. | コメント:0
<<FPGAの原理と構成 [天野英晴(編)] | ホーム | 情報理論 [今井秀樹(著)]>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://myumbrella.blog42.fc2.com/tb.php/376-a662b426
この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。