- ベストアンサー
プログラムの作り方、アルゴリズムのひらめき方
自分の経験のないスクリプトを作る時に、どういう風に考えて、何に気をつけて、どんな手順で作りますか? 最初は、紙に書きますか?それとも、いきなり作成しますか? 手法を聞いているので、PHPでも、Perlでも、その他でもOKです。 厳密ではなく、まぁ、動くかな程度でもいいし、if(○○な時){××を実行}、とかでもいいです。 もちろん、漠然とでもOKです。 自作済みなんですが、例えば、 「HPの定番のカウンタの数字を、ひらがなにして欲しい。」 「ひらがなは、”あ”から”ん”まで、46文字利用する。」 「カウント数は無限に増えていく。」 あえて書かない説明もありますが、その辺は適当にお任せと考えてください。 また、こうした方がおもしろいから、こういう機能もつける。等も教えてくださると嬉しいかな。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>やっぱり専門家(=プログラマーと想像しました。)は違いますねー。 ご想像のとおりプログラマやってます。 >最近Perlをいじったのですが、PHPとごちゃごちゃになっているのに気がつきました。 あ~これはありますね。 僕の場合、最近使っている言語は、C/C++/VB/VB.net/Perl/PHP/JavaScriptと7つもあるので、これはどう書くんだっけ?と調べることはあります。 >未だに辞書片手です。 これは別に構わないことですよ。 問題はアルゴリズム(=処理の流れ)がしっかりできているかどうかなので、それさえできていればあとは使用する言語に置き換えるだけです。 辞書片手でもプログラミング能力とは関係ないですよ。 >作成途中でもしくは、後で見返して別のアルゴリズムや作り方を思いつく事はないのでしょうか? 最近は大規模なプログラムを組むことが少なくなって着たのであまりないですけど、やはりソースファイルだけで数百個とかあったりすると、最初の方と最後の方では出来具合が違ったりします。 更に完成してからテスト段階で良いアルゴリズムを思いついたりすることもあるけど、ここまで来ると作り直すことは許されないのでショボいコードのまま納品、ということは良くあることです。
その他の回答 (4)
- system_down
- ベストアンサー率50% (10/20)
アルゴリズムに関しては、「珠玉のプログラミング」という本がオススメです。 プログラミングの本というよりも「考え方について」の本なので、質問者さんにはピッタリではないかと。
お礼
ちょっとおもしろそうな本ですね。 アルゴリズム辞典や、コンピューターの考え方(?)だったかな。 そういった本も積極的に読むようにしているんですが、なかなか。 感謝感謝♪
- 春原 なの(@ymda)
- ベストアンサー率37% (668/1777)
プログラム歴15年(=パソコン歴でもある)です。 今では、起きていると、何もつくれません;;。。。。 ですので、昼でも気にせず、寝ながら夢の中で作っています。 起きたら、水分とったり、何か食べたりしながら、こつこつキーボードを打っていきます。 これのおかげで、仕様エラー(=アルゴリズムの間違い)が全くなくなりました。 ちなみに、紙にも何もかいていないし、安く単価をすませるために コメントがほとんどありません。 ちなみに、昔、パチンコ&パチスロ打ちながらアルゴリズムを作って、帰ったらコツコツ組むなんてこともありました。 #あくまで、パチ=つまらないが、金稼ぐ道具として・・・
お礼
>今では、起きていると、何もつくれません;; なんか、分かります。 ボクの場合はモチベーションに左右されるんですが、マンガや小説を読んでいる時に、既存にはないアイディアを思いつき、マンガ、小説片手に紙に書いています。 ・・・が、私の違いは、エラーというかなんというか。 別のマンガや小説を読んでると、全く別の方法を思いついちゃうんですよね。 で、どちらが優秀か、分からなくなって。 できれば、サーバに負荷をかけたくないと思っているので、思いついたら検証せずにはいられなくって。 でも、一つのスクリプトを思いついて作成するのに、辞書片手に2,3日かかるので。 これさえなければ、多少は早く終わるんですが。 みなさんは、作成途中でもしくは、後で見返して別のアルゴリズムや作り方を思いつく事はないのでしょうか?
- ttyp03
- ベストアンサー率28% (277/960)
プログラム暦20年くらいですが、基本的には全て頭の中で考えますね。 処理の流れを頭の中で組み立てて、あとはキーボードを叩きながら考えていきます。 「この処理はどうしたらいいんだろう?」って感じで手が止まることは滅多にないです。
お礼
すごいですねー。 やっぱり専門家(=プログラマーと想像しました。)は違いますねー。 私は日頃使わないと、単語を忘れてしまって。 最近Perlをいじったのですが、PHPとごちゃごちゃになっているのに気がつきました。 Perlのつきあいも5,6年(とはいえ、作ったスクリプトは30数個くらいかな)で未だに辞書片手です。 そこまでなれるように、がんばるかなー。
- kernel_kazzz
- ベストアンサー率29% (895/2993)
ずっとSEやってた癖から、必ずフローチャートを書いて考えてしまいます。
お礼
フローチャートですかー。 JAVAを勉強した時に少しUML等を、読んだのですが、やはり独学。 適当にJAVAでも、紙に適当に書いてから作ってました。 JAVAは、本当の素人以下です。 PerlやPHPもきちんとできるか不安なので、サブルーチンを作ってテストしてできれば次ぎに進みます。 で、このサブルーチンができあがる直前くらいに、雷が落ちたように、同じ処理の別の方法が浮かぶのです。 こっちの方が処理として、きちんとしているような。 半分くらい後から思いついた方が優秀で、綺麗。 でも、一番最初には、思い浮かびません。 フローチャートを作っても、それは変わりそうにないかなー。 推敲が足りないのかな?(w
お礼
まぁ、プログラムといっても方言ですから、考え方さえ分かっていればなんとかなと、私も思ってます。 なにも知らないでJAVAに手を出した時は撃沈したけど、Perlを2年くらい勉強したら、JAVAも少しは分かりやすかったし。 やっぱり、プロの方でも同一ソフトの中のルーチンで出来不出来があるんですね。 「SEのフシギな職場」を読んでなんとなく、聖人、天才ばかりではないとは思っていたのですが。(w SE志望ではないのですが、人間関係がコミカルに描かれていておもしろいです。 とはいえ、最近の私は繰り返す所はサブルーチン化しているので、サブルーチンを変えればいいのですが、やはり引数等を変えるとちょっと面倒になってきて。 (基本的にグローバル関数は嫌いだし。) それに根底からくつがえるような、アイディアを思いついちゃうと。 最近のサーバは、スペックも高いしあまり考えなくてもいいのかなー、と思ったり。 まぁ、それを考えるのが楽しんですが。 とても参考になりました。