見出し画像

Retro-gaming and so on

高階関数を使う問題例


 
星田さんの記事を見る限り、とてもじゃないけど、書かれてるコードが「綺麗」たぁ言えないが(リスト操作でappendメソッドなんざ使うな、なんつーのは何度か書いている)、発想自体はいい。
と言うか、これも何度か指摘してるんだけど、数学は難しくても数学的スクリプトを書くのはプログラミングでは一番簡単な部類なんだ。
事実、大学の初年度なんかでは実用的には役に立たない(と思われてる)数学的スクリプト、例えば数値微分だ数値積分とかやらせたりしてる。
「ええ?難しくない?」と言うのは全然誤解で、これを良心的な教育機関の初年度で扱うネタにしてるのはむしろ、プログラミングとしては超簡単な部類だからなんだ。
そもそもコンピュータは計算機なんで、計算させるのは、エロゲを作る、とかエロ写真をネット上からダウンロードするスクリプトを書く、よりも簡単だ、ってのは当たり前の話だ。元々の目的に合致してる。
しかも、計算自体はコンピュータが行うんで、誰も貴方の計算能力なんざアテにしていない
ドラゴン桜なんかにも書いてるけど、人が数学を嫌いになるのは計算が遅いから、ってのが最大の原因なんだ。その「計算作業」から解放されれば、数学の問題を解いたりする難易度はメチャクチャ下がる。だって計算はコンピュータに丸投げすればいいんだもの。



翻ってみると、かつてパソコンがメチャクチャ高級品だった頃。
数学が出来るヤツは単に数学が出来て得意なヤツもいたんだが、親が金持ってる範疇だと「後天的に」数学が得意になるヤツがいたんだよな。
そう、「高級機」であるパソコンをポン、と買ってもらえた層だ。
自分でプログラムを書いて、数学やれちゃう層だ。
こういう層は「計算」を苦にしなかった。と言うか検算やら何やらをプログラミングに任せて、自分は教科書に「書いてる事を読む」事に集中する。
そうしてれば数学に苦手意識を持ちようがないんで、結果数学そのものを苦にせず、段々数学が好きになって得意になってくのだ(※1)。
まぁ、当たり前の話なんだよな。
大体、「数学自体をプログラムする」のは先にも書いたけど、難しくはない。高校数学ならなおさら、である。
こういう層はパソコンを利用して「手抜き」をしながら数学が得意になっていったんだ。

さて、数学スクリプトは簡単であるが故、色々プログラミング上の「実験」を組み込むにも良い媒体なんだよな。フツーのプログラミングだと、ただでさえ複雑な事をやってるのに、例えば高階関数みたいに「複雑に見えるモノ」(実際は組み込んだ方が簡単なんだけど)を組み込むのは敷居が高いように思われる。まぁ、人間心理としては当然だよな。
一方、数学的スクリプトは簡単な故、高階関数だ何だ、って機能を「実験」するには非常に良い遊び場なんだ。

っつーわけで教えて!gooで見かけた問題。
次の数式をプログラミングしろ。


もちろんfor文や再帰でも書けるけど、Lispなら高階関数、Pythonでも高階関数やリスト内包表記を使えばアッサリ書ける問題だ。
是非とも挑戦して欲しい。
以上。

※1: 余談だが、僕らの世代は「子供時代にはじめて電卓を見た」世代で、今なら100円ショップで100円で買える電卓も当時はウン万円もする高級品だった。
そう、パソコン以前に実は電卓自体がメチャクチャ高価だったんだ。
それで、僕らの世代で東大に進むような人たちがチラホラ話す話で共通してるエピソードで、

  • 子供時代に親が電卓を買ってくれた。
  • どうやって計算するのかが不思議で電卓を分解して壊してしまった。
  • 親に怒られた(笑)
と言うものがある。これは複数の人が全く同じ話をしたり書いたりしてるんで、異様な共通事項だろう。オチまで同じなのである(笑)。
まぁ子供側の「分解して知りたがる」程の知能の高さが共通してる、ってのはさておき、ここで注目したいのは「高級品である電卓を子供に買い与える」親の存在である。
当然東大に進むような子供の親も東大を出てて収入が良かった、って事はあるんだろう。しかし注目したいのは、僕らの親の世代ってのは「大学生時代にはじめてコンピュータに接した」世代でもあるって事だ(世界で初めてCPUを設計してインテルに持ち込んだ嶋正利氏はこの世代だ)。もちろん、大学進学率が低かった時代なんで、全員が全員、コンピュータに邂逅した、って事はないし、大学行ったからと言ってメインフレームがあったとは限らない、ただし、東大には「確実にあった」んだ。
そして思ったんだろう。「人間がいくら頑張ったトコで計算機には敵わない」と。だから「子供に電卓を買う」と言う判断が下せるんだ。「今からはこういう時代だろう」と身をもって分かってるからであり、「昔ながらに地道に計算能力を伸ばしたトコで限界がある」と。そしてそういう事を「即決出来る」と言うのが高教養の成せる業なんだ。
言い換えると、この電卓黎明期で「子供が電卓なんて使ったら計算能力が伸びなくなる」とか言う親はぶっちゃけ、教養が低い層であり、時代が読めなく、「竹槍で戦闘機を落とそう」とする層だったのだ(ちなみに、僕の親もこういうタイプで、だから収入が低く貧乏だったんだ)。重要なのは教養が低い層は常に根性論になるけど、何代も東大に行くような家の人は時代を読んで無駄を嫌うんだ。この辺の発想が決定的に違うし、そして子供の教育やそれに関する投資の判断基準が低教養層たぁ全く違う。
それがあからさまに出たのがこの「電卓黎明期」の電卓購入エピソードなんだと思う(全く同じエピソードが複数から出てる、ってのがだからこそ面白いんだ)。
そしてこういう頭の良い決断が出来る親の子供は当然頭が良くならざるを得ないだろう、と。後天的だろうと何だろうと、親がそういう「時代を読んで大胆に決断出来る人」なら子供も当然そういう影響は受けるよな、と、そう言う話である。
  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「プログラミング」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事