Linuxを中心とした話題を投稿予定。 使用ディストリビューションであるFedoraが中心になると思われます。http://oedipa.wiki.fc2.com/にてTips Wikiを公開してます。
なるほど、なるほど。
これまでプログラムを色々と作ろうとして、どーも納得できずに腑に落ちないでいることばかりだったのですが、その原因に割と最近になって気がついたり。
プログラムを組む際、大まかなプロットを考えます。で、いくつかのモジュールに分け、そのモジュールごとに構成する訳なんですが・・・、まず、全体のプロットを考える段階で先見性に欠けるというか、モジュールを作っていく度に仕様が変わってしまう。作りたいプログラム全体を俯瞰しているつもりだけれどその繋ぎ目を上手く把握できていない。また全体で必要な構成要素を把握し切れていない。なので仕様変更が増える。
どうにかこうにかモジュール群を構成し、組み合わせる。すると仕様変更のせいで最初の方に作ったモジュールと後の方に作ったモジュールが上手くかみ合ってくれなかったりする。
ってな感じでどうも初期段階からつまずく始末。なんで初期から失敗してんのかな~ということの原因を追及してこなかったためこうずるずると今の段階まで引きずってしまったのですが、最近になってようやく辿り着いた答えがあります。
早い話、私は「知らなすぎる」のだと。
プログラミングで実現したいコトについて、私が仕様を知らなすぎるんですな。言語の仕様も必要な部分についてはある程度理解した、IDEやデバッガなどのツールもある程度扱えるようになってきた、後は何が足りないんだろう、なんて考えていたけれど、根本的なところが足りてなかった・・・。
プログラムを組んで何かを実現しようとする際に、それがはっきり見えていなければそりゃ組めるわけもないわけで。プロット段階で必要な構成要素を把握できてない訳だよなぁ・・・。
プログラムを組んでいくうちに理解できるというか気付くことも多々あるけれど、やっぱりもっと大賞をよく知ることが大事だな、そう思いましたね。研究のプログラムであれば今はもうさらさらさらっと組めますし(効率や組み方にまだまだ難があり、すごく修正したいけれど)。それは単純に1年掛けて研究してきた内容だから頭に細部までたたき込まれているからだと思うのですよね。なので組んだプログラムに対してどこをどう修正すべきか、あるいは最初から書き直すならどういう方向で書き直すかなどは割とすっと浮かんできます。
けれど趣味で何か組みたいなと思っても何も浮かんでこなかったり。他のことを何も知らないからなんですよね。何かのフロントエンド程度ならあんまり考えることもないので組めますけれど・・・、1から組まないといけないモノについてはプロットすら浮かんでこない状態。
いろんなプログラムを組みたいと思ったらいろんなことを知らないといけないのだなと痛感。せっかく世の中にオープンソースプロジェクトがごろごろと転がっているんだし、やっぱり他人のプログラムを見て色々と得ることも大事なのかもな~。
まぁいきなり巨大なプログラムを読もうとしたって理解できないだろうから、適度な量のソース解析から入っていきたいモノだけれど。
そーいえば何だったかなぁ、雑誌かWebだったか忘れたけれど、数値解析の手法について勉強するためにgnuplotのソースコードを解析した、なんて話をどこかで読んだけれど、せっかくソースがあるんだからそれを使わない手はないってことなんだろうな。
時間は掛かるけれど、それを避けてちゃ成長できないだろうしなぁ・・・、自分にちょうどいいプロジェクト、見つけていこうかな。
関連記事
スポンサーサイト



コメント
この記事へのコメント
だいぶ昔の話ですが、大筋では「最良の手作業の手順をプログラムする」ことが良いプログラムの秘訣だ、と教わりました。素人なりに、あの頃は結構楽しかったなぁ・・・(遠い目^_^;)/
2006/09/04(Mon) 06:41 | URL  | narkejp #79D/WHSg[ 編集]
narkejpさんお久しぶりです^^
ほむほむ、なるほど最良の手作業の手順ですか、それは確かに。
手で実行すると時間が掛かったり手間だったりするからって言う作業を置き換えたのが計算機の始まりな訳ですし、基本に立ち返れと言うことなのかな? 心に留めておきます^^
私は全然他人のソースコードは見ていないんですよねぇ・・・。先人の知恵を勉強するのも大事ですよね、やっぱり。一念発起、頑張ってみるかな!
2006/09/04(Mon) 10:53 | URL  | code_air_edge #79D/WHSg[ 編集]
コメントを投稿
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック