プログラミング学習の落とし穴/中高数学駆け込み寺 素数判定の巻

さっそく第三回のコンテンツを案内します. ミニ講座と銘打ったように, メインコンテンツは今回で終わりです. あと回しにせず, ぜひ積極的に受講してください.

復習: 速く大量に計算できると楽しい!

前回, 講座コンテンツの内容としてはプログラムの高速化を議論し, 学習のヒントとして早さ・速さと量の話をしました.

今回は早さ・速さが実際に量を生む様子を見てもらうのが目的です. 計算を高速化したので, 以前よりも大きな素数を高速に判定できるようになっています. 一つ一つの判定速度が大幅に上がったため, もっと大きな素数に簡単に辿りつけるようになりました.

純粋な数学ではあまり大きな問題にはならないものの, プログラミング, それも応用に近づけば近づくほど実際にどのくらい改善されるか, きちんと定量化する必要があります. これもきちんと議論しているので, ぜひコンテンツを眺めてみてください.

いろいろな「早く・速く, 大量に」

さて今回は「早く・速く, 大量に」のバリエーションを議論します.

日本語の「学ぶ」は「真似ぶ」に由来すると言われています. もちろんやたらめったら適当に真似をするよりも, 適切な例を取り上げて真似した方が効果的です.

適切な例や問題がたくさん載っている代表例はもちろん本です. プログラミングに関しても本はたくさんありますし, 世の中にはプログラムそれ自体も大量にあり, しかも無料で公開されているプログラムも大量にあります. 実際私もいろいろなプログラムを公開しています.

ぜひこれを有効活用してほしい, と言いたいところですが, なかなか難しい事情があります.

しかしプログラミングの勉強を楽しく, そして快適に続ける上でとても大事なことがあります. それが今回のテーマです.

「本の内容は間違っている」

以下の話, もしあなたが数学系ならショックを受けるかもしれません. もしあなたが中高生でもショックを受けるかもしれません.

何かというとごく単純で, 上記の本や世に公開されているプログラムは, あなたが実行しようとしてもまともに動かない可能性があります.

誤解を恐れずに言えば, 「間違ったプログラム」が本に載っていて, それが「正しいプログラム」として世に公開されています. 数学からすれば「間違った証明が平然と本に載っている」と言えばいいでしょうか?

プログラミング学習の難しさ

もちろんこれには事情があります. 中学・高校の古文では昔と今とで日本語は大きく変わっていて, もはや廃れた文法事項や単語があり, 昔と今で意味の違う単語があります.

実はプログラミング言語でも同じです. プログラムはもちろんプログラミング言語で書かれています. そして(適当な意味で)よりよくなるように, プログラミング言語も日々変わっています. その影響で, 古い本に書かれたプログラムを実行しようとしても動かない場合があります. 現代日本語の感覚で平安時代の文章を読もうとしても読めないのと同じです.

状況は古文よりひどいです. たった一年前の本に書かれたプログラムでさえ, 同じように動かない可能性があるからです. 私がプログラミング系のコンテンツを体系的に作ってこなかった理由もここにあります. がんばって作ってもすぐに動かなくなってしまうからです.

今回, プログラミングのコンテンツとして素数判定を選んだ理由もここに関係があります. まず変わらない, 変わったとしてもすぐに修正できるような, ごく基本的な項目だけでプログラムが書けるからです.

こんな本がある, こんなコンテンツがある, こんなプログラムがあるとたくさん紹介したいのは山々ですが, 非常に難しいのです. それでも今後の勉強の指針として具体的なモノを挙げないわけにもいきません.

中高数学の学び直しからの視点

さらに特にいろいろな理由から中高数学の学び直しをしようとしている大人, 特に文系プログラマー陣には, 中高数学をきちんと議論したコンテンツが望まれています. 今回のミニ講座も作ると宣言しただけで多くの反響をもらいました. ぜひ作ってほしい, とても楽しみにしていると.

実際の中高数学で必要なプログラミングはもっと大変です.

いろいろな要望があるのもわかっています. 何より中高生だった頃の自分がほしかったコンテンツを作る野望もあります. そしてこれに大きな需要があるのもわかっています.

理工系の博士にとっても重要

私は理工系の修士・博士持ちの人達と統計学の勉強会をやっていて, いろいろな数学系プログラミングの話もしています. その中でグラフの「お絵描き」が想像以上に面白く, しかも既に理論的に知っていたことであっても, 実際にお絵描きして確認してみるとまた違う趣があると皆が言うのです.

もちろん私自身も思った以上に面白かったので, 中高数学のプログラミングや, そこで出てくる関数のグラフ書きやアニメーション作りのサンプルはたくさん紹介したいと思っています. 自分自身改めてやってみて, そしていろいろな人の反応も見て, 思った以上に大事な深い実感があります.

次回予告: 深掘りコンテンツの案内

次回は私自身が勉強してきた結果をまとめつつ, 勉強会でも使ってブラッシュアップしてきたコンテンツを案内します.

プログラムをゴリゴリ書いている以上, 放置しているとそれらは動かなくなってしまいます. メンテナンスは全くもって楽ではありません. しかしきちんと時間を取って修正し, 動くようにメンテナンスを続けながら提供しています.

市販の本やコンテンツの多くは, いったん作ったら作りっぱなしで, 作成時点での指定のバージョンでしか動作を保証しません. しかし次回案内するコンテンツは, 提供を続ける限り, 私自身がきちんとプログラムのメンテナンスを続けます.

いろいろな工夫を凝らしたコンテンツなので, ぜひ楽しみにお待ちください.

最後にコンテンツ再案内

最後にここまでの三回分のコンテンツをまとめます. 後回しにせず積極的に挑んでください.

アンケートにご協力ください

何かご意見や感想があれば次の読者アンケートまでお願いします.

回答は確約できませんが, 直接返事をご希望ならこのメールへの返信でも構いません.

またメールします.