> 年配のCプログラマは、なぜ不要なキャストを多用しがちなのでしょうか?歴史的な理由が
> あれば教えてください。
昔はvoid *が存在せず。それに変わる汎用ポインタとしてchar *が使われていた。

例えば
foo *p = (foo *)malloc(sizeof(foo) * n);
とか

まぁ、10年後C99が普及したら何で年輩の人は
foo p[n];
と定義すればいいのに不要なmallocを使うんですか?
とか言われるかもしれない。