基礎知識
その2

2002/04/06 undo


「プログラミングの基礎と何か?」といったときに「CPUがどんな仕組みで動作しているか、レジスタの仕組みだとか、命令のスケジューリングとか、ちゃんと理解しておくことかな?」なんて言うプログラマがいたら、「あほぅ!」と言ってやりましょう。でも殴っちゃダメだよ。殴られても知らないけど :-p

アセンブリ言語でプログラミングしているならば、理解できなくもないけど、いまどき、アセンブリ言語を使わなければならないような場面そのものが非常にまれでしょうし、そんなプロジェクトにとりこまれたくもありません。サッサと辞めましょう(^^;;


なんで「あほぅ」かと言うと、そんなこと知らなくても、まともなプログラムが書けるからにほかなりません。もちろん、デバッグするためには、16進数くらい読めて、アドレス計算くらいできるほうがいいけど、それだって必須項目というわけじゃありません。反対にアドレス計算なんて知らなくても、ちゃんとプログラムが書けるプログラミング言語だってたくさんあります。

反対に、余計なことを知っているために、あほな書き方をするプログラマも腐るほどいます。私の少ない経験からすると、たとえば、元言語Cプログラマで、C++ではじめてオブジェクト指向に接したプログラマは、なかなかオブジェクト指向的なプログラムを書けません。おそらく言語Cの手続き的な処理で目的とするプログラムをすべて書けてしまうからでしょう。structの代りにclassと書いてある「言語C」のプログラムであり、どう見てもC++のプログラムになっていないものを何度見たことか!


じゃあ、何を知らなければいけないのかというと、それはプログラミングモデル以外のなにもでもありません。たとえば、「ループ」なんて概念が存在しないプログラミングモデルは腐るほどあります(^^;
そういうプログラミングモデルでは、どんなに同じようなことをたくさん繰り返しても、FOR文なんて要らないんですよ。

本当に知らなければならないのは、どういう概念の上にプログラムを記述しているかということです。どういうふうにプログラムが実現されているかではありません。あほなプログラマだと「スタックも知らないで、再帰的なプログラムが書けるか!」なんて言い出すわけです :-p


Q. アホなプログラマの見分け方を学べましたか?


今日の専門用語


戻る