[三流君] −−> [プログラマー業務の愚痴] −−> [バックナンバー一覧]
−−> No.017 アルゴリズムを知らない子供達?(プログラマー)

アルゴリズムを知らない子供達?(プログラマー)


本文(発行内容)


<アルゴリズムを知らない子供達?(プログラマー)>
目次
1.はじめの挨拶 
2.あるメールで気がついたこと
3.アルゴリズムを知らない子供達?(プログラマー)
4.最速ルーチン作り、確かにやってない
5.おわりの挨拶
----------------------------------------------------------------------------
/*
 * 1.こんにちは
*/
こんにちは、今週も一週間、始まりますね。
がんばってこ、、、。

今回、キツイ一言、いただいたので、載せます。
おいおい、たいして、キツクなかっただろ、、、、
あれくらい、さらっとかわさなきゃ、、

さて、どんな一言だったのでしょうか?続きをどうぞ。
*プログラム系の解説、今回も無いので、お暇な時間にどうぞ。 

/*
 * 2.あるメールで気がついたこと
*/
それは、一通のメールから始まった(考えさせられた)
------
>> (2)配列内の値を高速サーチしたい
>> ------
>> ><質問>
>> >アクセス97のVBAで、例えば下記の様な配列をセットしたとします。
>> >
>> >    Dim AryID(1 To 5) As String
>> >    AryID(1) = "10"
>> >    AryID(2) = "20"
>> >    AryID(3) = "30"
>> >    AryID(4) = "40"
>> >    AryID(5) = "50"
>> >
>> >で、例えば "30" という値が上記配列の何番目に格納されているかを
>> >一発でわかる方法をご存知ですか?
>> >今はとりあえず "Do - Loop" で回して聞いています。
>> >ですが、実際にはもっと大きな配列を使っているので、
>> >いちいち "Do" で回すより、一発でサーチ出来た方が楽だし早いのではと
>> >思っています。
>> >何か良い方法がありましたら、教えて下さい。
>> ------
>>    "Do - Loop" で回して、、でいいと思うけど、
>>    1000件も配列があったら、確かに時間がかかりそう。
>>    ムダかもしれないけど、Accessにテーブルを1つ作って、
>>    そこにデータを入れて(項目にはインデックスつけて)
>>    マスターデータを参照するようなイメージのほうが、
>>    自分で回すより、速いのかなぁ?
>>    研究課題?でなにか、考えてみますよ。
>>    読者のみなさんへ、、何か良い関数、方法あったら、
>>    得意げにKEN3までメールで送ってください。
>
>この手の探索問題って大抵のアルゴリズム入門書に載っていると思うのですが...
>たとえば、探索するデータがきちんと昇順または降順にならんでいるなら、
>二分探索が早いし、ハッシュを作るという方法もあります。
>
># やっぱり三流だな。
-----

来ましたね、キツイ一言。
そうですよね。これくらいさらっと答えられないと、、
まぁ、三流と呼ばれても、、、アタッテルのでなんとも言えないなぁ。

Accessにテーブル作って処理しようなんて、
アルゴリズム知らないって、
丸出しでしたね。

おいおい、三流なりのプライドは無いのあなた。。

ありますよ、少しは、
二分探索,ハッシュ、調べて(勉強して)、載せますよ。

なんて、少し、考えさせられました。

/*
 * 3.アルゴリズムを知らない子供達?(プログラマー)
*/
私を含め、アルゴリズムを知らない子供達?(プログラマー)、増えてます。
*勝手に言いきって、いいの?テメエだけだよって、またクレーム来るよ。

じゃ、私の個人的意見・思い込みですが、
昔、C言語をやってた時は、アセンブラを知らないCプログラマーと言われ、
VBAをやっる現在は、アルゴリズム・APIを知らない三流さんと言われ、、、
まぁ、インデックスのしくみを知らなくても、
Accessとかで、簡単に、DBのプログラムっぽく作れる時代ですから。

おいおい、そんな考えでいいの?
一つ前の処理/1コマンドで処理している内部処理の内容を想像して、
実際の動作は、どうなっているか、
とわかりながら、考えながら、作っている人との差は、大きいんじゃない?
全体的な処理速度とか、いろいろな面で。

でも動くからいいじゃん。

えっと、30件しか無いマスターにインデックスを付けても効果が無いこと。
(逆にインデックス無しの方が速いとか)
知ってたほうがいいことあるよ。

でも、わからなくても、組めるんでしょ、システム。
それに、速度が遅いのは、マシーンやAccessの処理が遅いんでしょ。
メモリ増設して、CPU速くすれば、いいんでしょ。

そんなこと、言ってないって。わからないヤツだなぁ。。。







/*
 * 4.最速ルーチン作り、確かにやってない
*/
ベンチマークを取る、、まではいかなくても、
最近、最速ルーチン作り、確かにやってない。

チョットやっただけで、これは、Accessだから遅い、
これで動くからイイヤと処理の見直ししていない。

なので、質問で"Do - Loop" で回して、、、と来たとき、
それで良いんじゃない?なんて、簡単に答えてしまいました。

また、サーバーにDB置いて、OracelやSQLServerなら
速くなるキットなんて、自分の処理方法棚に上げて、言いそうだけど。
*基本的に遅いやりかたしていると、どのDBでも遅いんだよね。

それって、三流PG君に、
設計力(発想力・想像力)が無いってことじゃないの?
アルゴリズム知ってれば、いろいろ設計できるけど?なの?

まぁ、そんな感じかなぁ。
原因がわかったら、対策・処置でしょ。
アルゴリズム勉強するには、どうするの?って読者から質問きたら、どうする?

う〜ん、、、昔の人が苦労した、プログラムを読んで、勉強しましょう、、かな?

なんか、頼りないな。。今回も。
プログラミングの面白さって、このへんにあるんじゃないかなぁ?
人が10秒で検索したのを5秒で返すとか、
標準でできないことを、工夫してやるとか。
標準のコントロールを貼ってるだけじゃ、本当の面白さ、わからない?かな?
昔の感動を思い出しつつ、、、

/*
 * 5.おわりの挨拶
*/
今回も、話が、まとまっていないのですが、
言いたかったのは、
・自分も含め、内部の仕組みを知らないでプログラムを作っている人が多い
・プログラミングの面白さってなんだろう?
と、チョット思ったので、、、

次回から、テクニックを教えるだけじゃなく、
なぜこの考え方なのか、、、まで深く説明して、
一人でもプログラムの面白さをわかってくれるメルマガにしたいですね。

またまた、高い理想を、、、
今後も指摘メールでサポートしてください。
なんだ、一流読者任せかよ。
*よろしくお願いします。

自分も実力をあげないと、、と思いつつ、三流PGのKen3でした。


フィードバック

読者からの貴重なご意見

2008/02/11

コストは実装の問題じゃ?
例えば未ソート配列で,その配列からの探索を一度しか行わないなら,
ハッシュ作製もソートも絶対にO(n)以上のコストを食うわけだから,
ハッシュも二分木もO(n)は絶対下回らないわけで,
ループ使ったほうがO(n)で最速のはず.

DBを使うとさすがにオーバーヘッドするだろうけど,
でもそのセッション以降もデータが使いまわせるなら悪い選択じゃない.
下手にアルゴリズム使うよりバグも少なくてましって場合も.


ページフッター

ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、

リンクや広告など

項目別に本音?それとも建て前?的な記事をまとめました。

気になったジャンル↓を選択してください。
[ルーキー rookies]・・・ 新人さん達 初心者さんへ
[学ぶ study]・・・学習、技術の取得
[仕様書 doc]・・・仕様書・設計書関係の話
[共同作業 team]・・・チーム、グループ作業
[プログラムは心? spirit]・・・プログラマー 心・気質・魂

[掲示板デビューしようぜ bbs]・・・掲示板関係の話、質問者・回答者の気持ちほか
[昔はできた seo]・・・三流式の効果無しSEOとアフィリエイト
[仕事や作業、転職 job]・・・仕事や転職、評価、作業など
[その他 etc]・・・その他 分類外の記事

※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。
※※読んで、気分を悪くされたらスミマセン。

Blogとリンク:[三流君の作業日記]/ [愚痴(Bookmark)]/ [広告Blog(Bookmark)]



[三流君(TOP ken3.org へ戻る)] / [プログラマー業務の愚痴] / [バックナンバー 一覧]