最近、院に入って忙しくなっていたゼミも少しは慣れてきたので、そろそろプログラミングのほうもちゃんとやっていきたいかなと思ってます。物理とプログラミングを両立するのは大変ですが、頑張っていきたいところですね。
さて、今回も
- 作者: 和田卓人,Kevlin Henney,夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/12/18
- メディア: 単行本(ソフトカバー)
- 購入: 58人 クリック: 2,107回
- この商品を含むブログ (337件) を見る
22 1万時間の訓練 (ジョン・ジャガー, Jon Jagger)
日々の努力こそ、エキスパートへの道。
分かっていても、これが大変ですよね。ここでは、集中的訓練を1万時間という時間をかけて、はじめて専門家 ( エキスパート ) になれる、ということが書いてあります。
1万時間は毎日5時間やったとしても、5年以上かかる計算になりますね。普通の人は毎日5時間も自分を向上するための訓練を重ねられることは様々な理由で難しいと思いますから、5年と言わずかかることになりますね。
また、訓練は今の自分の能力より訓練後の自分の能力が上がっているようなものでないといけないので、常に今の自分にとって困難な問題であることが求められます。
私は今、物理とプログラミングの両方をしているので、どうしてもまとまった時間をプログラミングに費やせない現状がありますが、それでも少しずつ頑張っていきたいところです。
23 ドメイン特化言語 (マイケル・フンガー, Michael Hunger)
ドメイン特化言語 ( DSL ) というのは最近、良く聞きますね。
昔はかなり高レベルな技術という感じがしましたが、最近学んだRubyなどで随分身近な存在になった気がします。
ただこのエッセイで書かれているように、私が昔、見聞きしたDSLと、RubyでのDSLは少し様相が違う気がします。おそらく昔聞いていたのは外部DSLというもので、私が最近知ったのは内部DSLのほうだと思います。
DSLは特定の領域の問題に特化した言語で上手に扱うととても便利なものなので、特に簡単に作成できる内部DSLはすぐにでも活用したいところです。
外部DSLはどうしてもパーサやジェネレータを作るといった作業が必要になるため、完全に独自のものをつくるのは難しい気がします。ある程度ライブラリなどが存在するような外部DSLも少なくないので、外部DSLはその辺りを効果的に扱えるようになりたいですね。
24 変更を恐れない (マイク・ルイス, Mike Lewis)
プログラムは確かに悪くなれば、そのまま悪くなり続けることが多いですね。最初にちゃんとした処方で進めているとそれほどひどくはならないのでしょうが、そうはいっても企業などにいると元々ひどい状態で存在するプログラムが回ってくることも少なくないと思います。
こういうときには、改良、改善と言ったことが重要ですね。
企業やプロジェクトに残る“遺産”コード、すなわちレガシーコードはしっかりと改良して行くべきだと思います。
その改良にも注意が必要で、まずテストがなければ話にならないですね。修正が動作を変えていないかチェックしないというのはあり得ません。
次にテストを書いた上で、小さな改良を繰り返すことで改良して行くことが必要です。小さな改良ごとにテストを動かすのはもちろんですね。
この辺りをもっと詳しく説明してある本が
レガシーコード改善ガイド (Object Oriented SELECTION)
- 作者: マイケル・C・フェザーズ,ウルシステムズ株式会社,平澤章,越智典子,稲葉信之,田村友彦,小堀真義
- 出版社/メーカー: 翔泳社
- 発売日: 2009/07/14
- メディア: 大型本
- 購入: 45人 クリック: 673回
- この商品を含むブログ (147件) を見る
最後に
1万時間の訓練、というのは私にはまだまだ足りないと言わざる負えませんね。
残り2つのエッセイで出てきた、DSLやTDD、レガシーコードの改善と言ったことは訓練としてもよいかもしれません。まだまだ修行が足りない私ですが、少しでも上を目指して頑張っていきたいです。