/**** 個人的な体験談がメインです ****/
自分がまだプログラミングを初めて間もないときはありとあらゆる関数を
ごちゃ混ぜ使って「別の関数名にしたら結果は同じなのか?」などと試した
記憶があります。
何度もやっていくと標準関数では満足できなくて
・何でキー入力は[Enter]が押されるまで待たされるの?
・文字に色つけるにはどうしたらいいの?
・決まった場所に文字を表示したいのにどうしたらいいの?
等、色々問題点が出てきては関数を作ったりして試してみました。
処理依存とわかっていても、自分のマシンを使いこなすこと(自己満足思考)
を最優先にとことん作っていきました。
そして、自分がプログラミングしていた当時は高速CPUが16bit時代
でしたから、「速い中にもさらに速く」するためのプログラムを考える
ようになりました。
・配列よりもポインタ変数を使った方がプログラムのしようではわずかに
速いらしい・・・。だからそうしてみよう。
・関数コールだと特に引数が多ければオーバーヘッドで足引っ張るから
マクロにしたらどうか・・・?
・switch文だと分岐判定が内部的に多くなりそうだし、ソースも長くなって
見づらい。なんかいい方法はないのか・・・?
#ちなみに、配列関数ポインタの手法を今でもよく使います。
等、C言語のウラ技みたいな手法を、文献を読みながら小さなプログラムを
ちまちま作っていきました。ただ、あまりに「高速化」にこだわりすぎて
特に長いプログラムがぐちゃぐちゃになって、修正も利きづらく、高校の時に
制作半ばで断念(卒業)した「デュアルプラットフォームスクリーンエディタ」が
あったりします。(MSX/16B(ベータ))
そんな失敗もあって、専門学校/大学を経てプログラムを従事する仕事に
携わっています。最近のプロセッサはかなり高速になっていますから、先ほど
あげた例だけだと「微々たる」程度でもなかなか感じないと思いますが、ちりも
積もれば山となるで今でも「やけくその高速手法」を所々使っていたりしてます。
今の時代とそぐわない私の体験談と思えるかもしれませんが、参考にして
いただけたらと思います。APIを覚えるのも自分のスキルを上げるため、
今の時代の技術をいち早く覚えたい、それぞれの意味も含めて良い方法だと
思います。もちろん、ここに回答しています皆さんの方法も良い方法です。
一番大切なのは「目的意識を持って望む」ことです。がんばってください。