アルゴリズム

東大の「産業総論」で露呈 日本人の知力崩壊が始まった

うーむ.
大筋自体に大きな反論があるわけではないし,立花さんは門外漢だから仕方ないと言えば仕方ないけれど,いろんな意味で困ると言えば困る.

コンピュータのプログラミングの要点は、いかにすれば複雑な計算を分解して単純な計算の集積に変えてしまうかを考えるところにある。

http://www.nikkeibp.co.jp/style/biz/feature/tachibana/media/070316_rotei/index2.html

ここまでは,まあ人にわかりやすく説明しようとして言っているのだろうな,と思いながら読んでいたのだけれど,

コンピュータはかけ算すら足し算の繰り返しとして計算する。そういう数学の基礎中の基礎をちゃんと理解しているかどうかが最も重要なのだ。いいかえれば小中学校時代に算数・数学の基礎をしっかりやらせるかどうかが決定的に重要なのだ。

http://www.nikkeibp.co.jp/style/biz/feature/tachibana/media/070316_rotei/index3.html

というのはちょっとひどいかなあ.
「コンピュータはかけ算すら足し算の繰り返しとして計算する」をどのような意味で言っておられるかは別として,次の文章への論理の飛躍がすごい.必要条件と十分条件をまさに混同しているかのような(下の記事参照).

ともかく,そういう「いかに単純な計算の集積に変えてしまうか」程度だと思っている人が多いから皆困っているのですよ.もう少し言うと,ACM/ICPCプログラミングコンテストは,その程度の理解の人には決して高得点を取れないようにできている.アルゴリズム設計にまず必要なのは,問題に内在する構造の本質を見ぬくことであって,決して計算の分解ではない.

まともな大学の情報系では「コンピュータのプログラミングの要点は、いかにすれば複雑な計算を分解して単純な計算の集積に変えてしまうかを考えるところにある。」にとどまってはいけない,と言う意味で「アルゴリズム論」「言語とオートマトンなどの科目を設けているはず.

で,(日本の?)プログラミング産業の何が問題かというと,「複雑な計算を分解して単純な計算の集積に変える」程度の理解のプログラマがわんさかいること.

極端な例を挙げると,1からn までの和を求めなさいという問題に対して,「単純な足し算の和に変える!」程度の理解でプログラムを組んで,forloopでぶん回すプログラムを書いてしまう人がいる.馬鹿みたいな話ですが,当然正しい答えは出る.しかも,n=100くらいだと一瞬で計算が終わるので,そんな馬鹿をやっていると周りは気付かなかったりする.というようなプログラマがわんさかいたりする現状を何とかするためには,小中の算数数学をきっちりやるというのは必要条件であっても十分条件からは程遠く(という意味で,小中で算数をしっかりやるのが「最も重要」などとはとても言えない),なんというか我田引水的な記事だなあと思う次第なのでした.