リンクフリーを近日中にとりやめる予定です

すでにリンクを貼っていただいている方、ご一報頂きたくお願い申し上げます。


ごく少数ですが、リンクをお断りする場合があります



ブログ内 風景光景カテゴリー

続編記事などをご希望の方は こちらへどうぞ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[未掲載分] 車輪の再発明 (1)

とある若手の方が眠い目をこすりながら、「今までに無い○○を作りあげました」と意気揚々。



側にいた熟練の方々がニヤニヤと・・・


お知らせ
活動休止にともない、この記事を事前に予約投稿してあります。
トップ記事の固定を目的としています


この題目は2012年暮れ頃に掲載しようと下書きし、諸事情により掲載却下とした分です。
当ブログにたびたびお越しいただいたブロガーさんの中で、プログラミング技術の向上を目指している方々もちらほらと。中でも、学生の方々、学業の合間をみて、向上しようという意欲に心を動かされるものがありました。
それらの方々の奮闘にエールを送りたいとの想いを込めて・・・


「Reinventing the wheel」という慣用句がある。日本語では「車輪の再発明」。

意味につての細かい説明は省きます。興味のある方は辞書をひくなり、ネットで検索してください。
以下に検索用のリンクを貼っておきます。
「車輪の再発明」検索へのリンク

さてさて、一見、無駄と思われるような行為、皮肉を込めて「車輪の再発明」と揶揄する場面で用いられるのが多い。
しかし、ドンキホーテ的に何かに猛進する姿、筆者は肯定する。
新しい技術や文化が創られる時、それまでとは異なる手法から派生してゆくものだ・・・

「車輪の再発明」に陥ってしまう要因としては
(1)「既存の (モノゴトの) 存在を知らない」
(2)「既存の (モノゴトの) 意味を誤解している」
が挙げられている。前者は経験不足や勉強不足、後者は学習過程において何らか誤ちが生じるのだ。
現実には、そのスジで詳しいヒトとコミュニケーションするなり、実戦で腕を磨くなり、原因が判ってしまえば解消の道はある。

まず、スムーズに進める、というよりも、手数を減らすためには、「既存の (モノゴトの)」を利用するのが常。
すでに「ライブラリ」や「ひな型」が存在するのであれば、それに従うのが賢明。
たいていの場合、「ライブラリ」や「ひな型」とは多くの先人たちに磨き上げられている。
逆に言えば、使い勝手の悪いモノや、不要なモノは淘汰、つまり排除、廃止されてゆくものだ・・・

ここから少々、冒頭に述べた「プログラミング技術の向上を目指す方々」に対して記します。
ただ漠然とプログラミングを語ってもキリが無いので、
利用環境を OS はWindows , CPU は Intel 製 (いわゆるウィンテル機)と仮定し、開発に用いる言語を C/C++ に絞り込めば、
ライブラリとして「MFC」(Microsoft Foundation Class) や 「ATL」が挙げられる。
また、それらライブラリの軽量化版として「WTL」(Windows Template Library) も有名。

たしかに、暗中模索することも力を養う糧となる。しかし、多くの場合、欲を満たすモノは、これらライブラリの中に含まれている。
(同じような工程を辿っている限りにおいては、同じような探し物をする傾向が強い。)

まずはライブラリをとことん漁り、最終的に見つからなかった段階に至ってから、「一から構築する」「ゼロから構築する」を決意すれば良いのだ。



さらに、話を狭めます。
PC のアプリ ( ソフトウェア ) の中で、利用している際にモタつきを感じる作品もある。利用者としてはストレスを感じる。

視点を替えて、アプリを作成する側に立ってみる。
同じアプリを実行した際、同じ処理に要する時間が短いほど、利用者からの評価が高まる。

同じ処理に要する時間を短縮することを「効果」として捉え、求められるのは効率を上げること。
例えば、何か製造に携わるならば、作業工程の「改善・改良」により、時間の短縮や同じ時間内でより多く生産できるように変わる。
とはいえ、時間短縮やコスト削減にこぎつけたとしても、生み出されるモノの質、精度が下がってしまうのは論外。



数年前まで、( 細かく言えば Pentium4 が主流の間は )「最適化」という言葉がもてはやされていた。
命令の実行順序を手動でチューニングするなどの手法で、ある程度の効果を得ることができた。

ところが、それまで提唱されていた最適化の手法、Core2 Duo , Core2 Quad の登場を境に効果が薄れてきた。
それまでは、プリフェッチ ( データの先読み、下調べ )や命令の実行順序を人間の手で修正することは速度向上、つまり、時間短縮につながった。

※ PC に詳しくないヒト向けに補足。Pentium4 や Core2 Duo と記しているのは CPU の名称。自動車に例えると、CPU はエンジンに相当する。

おおざっぱな言い方をすれば、
Core2 Duo , Quad やそれ以降に登場したCore i7シリーズなどは機械内部である程度の最適化を代行する。
それまで必要だった、「作業効率を向上させるため細々とした指示」を省くことにつながる。
例えば、Hardware prefetcher が強化されたことで、プリフェッチ用のコードを手動で追加しなくとも、先読みしてくれる。
ほかにも、命令の実行順序も機械内部で適切に並び替えて実行する仕組みを備わっている。少し雑に命令の実行順序を与えたとしても遅延が発生する割合が減る。

もちろん、Core2 Duo やそれ以降に登場した CPU においても「最適化済み」のプログラムを実行できる。しかし、「最適化されていない」と「最適化済み」との差が体感できない事例も増えている。

Pentium4 全盛時代にテッパンとされていた最適化手法が、それ以降に登場した CPU では足かせとなることもある。
むしろ、速度向上のための複雑な手法が速度低下をもたらす事例もある・・・

※ Pentium4 シリーズにおいても、終焉近い頃、機能強化されたモデルが発表された。しかし、同時期にCore2 Duo が登場したことにより役割を終えた。



何もかも最適化、効率化すべきか?
答えはノー。頻繁に使われ、時間がかかる部分に絞って最適化すれば、たいてい流れがスムーズになる。

仮に
・プログラミングの学習や
・趣味でのプログラミング
であれば積極的にチャレンジすべきである。
私的な観点で申せば、「最適化作業に要する時間」、言い換えれば、「効率を上げるための準備期間」と、「最適化によって短縮できる時間」を天秤に掛けて決めるのが賢明。

実戦の場、とくに複数人でひとつのアプリを開発する場合は闇雲に最適化すべきではない。
個人で理解している事項が、集団全体、作業に関わる全員に受け入れられないかもしれない。
また、一般的に最適化することは、独自色が濃くなる。
時代を超えて誰かが引き継ぐことを頭に浮かべてみよう。後任者にとっては読解不能になるかもしれない。もしくは、その時点とは異なる効率的な手法が編み出されている可能性もある。

複数で製作に携わる場合、目指すべきは、着実に動くこと。当ブログでは何度も述べてきたことだが、安全と速度は背反二律。新しいモノを取り入れたために、途中で止まってしまう、完走しない等に陥るのは避けたいものだ。

それでも、最適化による改良を施したいのであれば、上長 ( プロジェクトのリーダー )と相談した上での採否が重要・・・

・・・と今回はこの辺までの予定でしたがもう少々。・・・



2013年2月8日分の記事「プログラミングのA・B・C」で述べたように、プログラミング言語は多数ある。

速度を求めるとJava言語 や Basic言語は期待できない。

速度重視で有望な選択肢は機械語、つまりアセンブラ言語。
ただし、64ビットの Windows 環境ではアセンブラ言語を直接扱えない。
それに加え、よほど精通したヒトでない限り、ちょっとしたバグ、不具合を見つけにくい。
( プログラミング時に多かれ少なかれバグ混入は避けられない )

次の候補となるのは C/C++ 言語である。
アセンブラに比べ、32ビット、64ビット間の移植に関しても少し修正を加えるだけで済む。

長くなりましたので続きはまた後日・・・

本日も最後までご覧いただきありがとうございます。

「つまらなかった」「判り辛った」という方もご遠慮なくコメント欄へどうぞ

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

検索サイトからお越しの方へ
検索サイトからお越しの方は、ブラウザのアドレス欄vitalaboloveおよび、fc2.comが含まれているかご確認ください。
含まれていない場合、偽サイトを閲覧なされている可能性があります。

偽サイトは、当ブログの文字部分や画像部分が有害サイトへのバナーと置き換わっているようです。
プロフィール

Author:Vitalabolove
ご訪問ありがとうございます。
店長を任されておりますVitalaboloveです。

コメントはお気軽に。
今のところリンクフリーですが、あと数日でとりやめます。

画像データ、文言の引用は事前連絡くださるようお願い申し上げます。事前連絡の際は、左下、メールフォームを経由をご利用ください。

最新記事
カレンダー
04 | 2017/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
カテゴリ
ランキング
いつも応援いただきありがとうございました。ただいま休養中につきランキングへ参加していません・・・

フリーエリア
内緒話などはおきてがみをご利用ください。
月別アーカイブ
メールフォーム
掲載された記事について、ご不明な点はここからお問い合わせください

名前:
メール:
件名:
本文:

最新コメント
最新トラックバック
スパムと思われるトラックバックは削除しました
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。