2024年5月5日日曜日

息子のpython教科書が有能だった件 - 119.8kg

 娘が学校でpython入門の実習を取っていて、予習をさせないと絶対落ちこぼれると確信し、適当な教材を探していました。

最初は図書館で借りてきた本を使っていたのですが、ちょっと飽き気味。もっと扱いやすい物は無いかと模索していたら、既に我が家にある事に気づきました。息子の情報Ⅰの副教材として配布されている60ページ程度の冊子です。


この教科書の良い所は、まず薄い事。その気になれば1日でできる量に仕上がっているので、全体を通して勉強するハードルがとても低く、最初にやったことを後半で忘れてしまうという、あるあるパターンを回避できる事です。

また、取り上げる題材がif文を使ってロールプレイングゲームを作るとか、宝くじを作るといった遊び感覚で入れるものを採用しており、学習者、特に子供世代が興味を持って取り組みやすい工夫がされています。

内容は、簡単な関数呼び出しと、importによるライブラリ取り込み、ifによる条件分岐、ループなどの制御構造、リストを使ってプログラムを作る事が主で、最後に関数を自分で作る方法に触れるという感じで仕上がっています。

私自身はまともなプログラミングの教育というのは受けた事が無く、自力で資料を調べたりして身に付けて来ました。プログラミングを学ぶには、実際に作るのが一番で、自分からそこに入って行けない人はそもそも使い物にならないと考えています。とは言っても、作り始めるまでに何を最小限学んでおかなければならないかというと、この教科書に出てくる、基本的な関数呼び出しと制御構造、データ構造です。そして規模が大きくなった時に関数単位で機能を分割する必要が出てくるので、それらを知っておく事がスタートとなります。

そう考えると、この教科書は必要最低限の内容をしっかりと押さえているのです。確かにこのレベルの知識でプロとして活躍するのは無理ですが、入り口には立てる様になります。

良く出来ている教科書です。

娘に、これは良いからやってみな、と言って渡した時には面倒くさそうな感じで始めましたが、やってみると面白くなって来た様で、楽しみながら進めていました。

一人でやらせても大丈夫かなと思い、先日BOOKOFFで買った本を読んでいたら、

「エラーが出るんだけど」

と娘から呼び出しがありました。

教科書に書いてあるレベルだとpythonのバージョンの違いでエラーとなる事も無いだろうし、タイプミスかな?と思いエラーメッセージを読むと、input分に複数のパラメータを渡しているという内容でした。print分の感覚で、パラメータを「,」で区切って渡したためエラーになっていました。パラメータを「+」で文字列結合して渡したら、エラーが回避され正常に動作する様になりました。

娘の話では、教科書通りだとつまらないので、ちょっと内容をアレンジしてみたとの事。自分でちょっと変えてみるというのは、上達の近道で、娘にしては良いセンスの学習方法をしているなと感心してしまいました。

もう一歩進んで、エラーメッセージを読み、そのエラーメッセージをコピーしてgoogleに問い合わせて対策を考える所まで行ってくれれば、独り立ちまであと一歩となります。

頑張って貰えればなと思います。

ちなみに今回はエラーだったのでプログラムが動かなくなるので対処が必須でしたが、プログラムとしては動くもののワーニングが出た場合も対処しておくのが基本です。

以前引き継いだシステムで、VisualStudioのバージョンが上がり、関数の受け側の型指定が曖昧だとワーニングが出る様になり、コンパイルの度に大量のメッセージが流れ、正常にコンパイルされているのか分からない状態のシステムがありました。

前任者は、これ無視しても動くから大丈夫だとの事。また現在動いていて、これが止まると会社が不渡りを出しても不思議ではない金額を毎月決済しているシステムでもあり、そう簡単に手が出せませんでした。また運用は子会社に委託してあり、そこの会社の人が夜遅くまで働く人たちで、ワーニングを消したいからシステムを止めるとは言いずらい状況でもあり、結局そのままの状態を継続することになりました。

しかし、幸か不幸か私が退職する直前に法改正に伴うシステムの大改修が必要となり、この機を逃すまじとワーニング潰しをして静かにコンパイルが終わる様にしました。最初にこの作業をしていたので、bugを出しても直ぐにどこが間違えたかが分かる様になり、改修作業が捗りました。

環境の制約もあり、一部で問題がある事はあるのですが、そこそこ扱いやすい形で後任に引き継ぐことが出来、良かったです。

エラーやワーニングのメッセージは原因を調べて、出ないように対処する習慣を娘も身に付けて貰えると良いなと思っています。

0 件のコメント:

コメントを投稿