勉強の前に

【数学とプログラミングの関係】高校でのプログラミング必修化の懸念

2022年度から高校では、共通必修履修科目としてプログラミングを含む「情報I」という科目が新設されることになっています。

10年先の状況すら予測することが難しい現代で、未来ある若者が身につけるべきはIT技術であるという時代の到来です。

プログラミングの必修化を行っても、実際に役立つ技術を身につけるには難しいのではないか?
質・量ともに十分な教員の確保は可能なのか?

といった懸念事項はありますが、ここではプログラミング必修化に対する私見を綴っていきたいと思います。

読み書きそろばんプログラミング

プログラミング必修化となった経緯は、次のような方針によるものだそうです。

安倍晋三首相は「AIやビッグデータなどのIT、情報処理の素養はこれからの時代の『読み書きそろばん』」とした上で、「大学入試において国語・数学・英語のような基礎的な科目として情報科目を追加し、文系・理系を問わず学習を促していく」と述べた。

https://www.nikkei.com/article/DGXMZO30644090X10C18A5EE8000/

マスマスターの思考回路

文系の生徒もプログラミング教育の対象となるのですね。

様々な分野が掛け合わされることによって新しい技術が産みされるということは往々にしてありますので、様々な分野に対する知見を持つ人材が今にも増して重宝されていくことでしょう。

文系だから数学をやらなくていいという時代も終わるかもしれませんし、もはや文系・理系という区分すらなくなるかもしれませんね。

4月入社の新入社員が研修を終え、各部署に配属された会社も多いと思います。近年、この時期に話題になるのが「メールやパソコンを使えない新人」です。デジタルネーティブ世代と呼ばれ、デジタル機器は使いこなして当然と思っていたら、日常的な連絡手段がLINEやツイッターなどで、スマホでの文字入力に慣れているため、キーボードの入力は経験がないということもあるようです。

https://otonanswer.jp/post/39023/

マスマスターの思考回路

プログラミング必修化は、プログラミング教育を受けた若者を将来雇用することになる企業側からすると、願ってもないことかもしれません。

高校でのプログラミング必修化に意味はない?

これからの時代、IT技術が重要な価値を産む場面はどんどん増えていくでしょう。

IT技術は文系理系問わず持っていた方がいいですし、高度な技術を身につけることができれば引く手数多であることもまた事実です。

しかし、私は、高校生の段階ではプログラムを学ぶ必要はないと考えています。

いえ、正確に言うと、プログラムもいいですがまず国語・数学・英語といった基礎的な科目をしっかり勉強しましょうということです。

プログラミングスキルはいつでも身につけることができます

私は、プログラムを書くことが業務内容の多くを占めるような生活を送っていますが、高校時代にはプログラミング教育は受けていません。

大学時代にはプログラムの授業がありましたが、在学中ずっとプログラムを書き続けるような状況だったわけでもなく、プログラムを書く機会は多くなかったため、たいしたスキルを身につけることができずに大学生活を終えました。

私にとって、プログラミングは業務上必要となったので身につけることとなった技術なのですが、それにも関わらずプログラミングを仕事にできています。

ということはつまり、プログラミングは社会に出て必要になってから身につければよい技術だということなのです。

マスマスターの思考回路

もちろん意欲的にプログラミングを学習したい方は、どんどん学習しましょう。

決して若いうちにプログラミングをしてはいけないという趣旨ではありません。

基礎科目の習得によりエンジンを強化しましょう

プログラミングは若いうちから学ばなくても、いつでも習得することが可能だと私は思っています。

それに反し、国語・数学・英語といった従来からある基礎的な教育科目を大人になってから身につけることは、プログラミングを習得するよりも難しいものと思われますし、しかもこれらはプログラミングを書くうえで欠かせない基礎となります。

車に例えると、従来からある基礎的な教育科目はエンジンであり、プログラミングはハンドルといったところでしょうか。

エンジンの動かない車にはハンドルが付いていても意味をなしません。
エンジンが動いてこそハンドルが付いていることに初めて意味が生まれるわけです。

学校の勉強をして何の意味があるの?と誰しも思ったことがあるかと思いますが、基礎的な科目を学習することはエンジンの強化に相当します。

エンジンをいくら高性能にしても、エンジン単体では何の役にも立たないことと同じように、学校の勉強には意味がないように感じられてしまうのでしょう。

しかし本当に重要なのはエンジンです。

マスマスターの思考回路

運転しようとしてもエンジンの馬力が足りなければ、車が全く動かないなんてことも・・・

読み書きそろばんができてからプログラミング

プログラミングでは論理的な思考ができることを大前提とし、従来の基礎的な科目で学習した総合的な力が要求されることとなります。

総合的な力は基礎的な力の集合ですので、プログラミングよりもまず国語・数学・英語をより重視すべきだと私は考えますし、各教科で身につけた力があってこそ初めてプログラミングを理解できるものと考えます。

各教科とプログラミングとの関係について見ていきましょう。

国語とプログラミング

国語では論理的な思考をするうえで欠かすことのできない「言語」を学びます。
言語があるからこそ論理を構成することも他者(コンピュータを含む)と共有することもできるわけであり、まずは母国語を用いて論理的な思考力を十分に強化することが大切です。

自然言語と同様にプログラミングにも何種類もの言語が存在し、各言語ならではの作法がルールとして決まっていますが、何種類ものプログラミング言語を扱えることに特段の利点はありません。

マスマスターの思考回路

もちろんなるべく多くのプログラミング言語を扱えた方が活躍の場が広がるのですが、実際に使用するかどうかわからないプログラミング言語をも学ぶというのは非効率的です。

1つのプログラミング言語を扱うことができる能力があれば他のプログラミング言語の習得は容易ですので、必要に応じて習得すれば良いでしょう。

国語を用いて自分の考えを他人に説明することは、プログラミング言語を用いてコンピュータを動かすこととさほどの違いがありません。

まずは母国語である国語を正しく使いこなせるようになりましょう。

それは言葉遣いが綺麗だとか、尊敬語・謙譲語の使い方に間違いがないかといったようなものではなく、自分の頭にある考えを論理的に言葉で表現できるかどうかという意味においてのことです。

それがプログラミング言語を用いてコンピュータと論理を共有するための基礎となるでしょう。

数学とプログラミング

数学では「言語」と並び、論理活動の基礎となる「数字」を扱います。

基礎的な計算力がなければ、数字を扱うプログラムを作成することが難しいことは想像に難くないでしょう。

また、数学で学習する関数や数列に関する知識は、それほど高度でないプログラムでも必要となる機会は少なくありません。

当ブログの特性上、数学についてはプログラミングとどのように関連するか、以降でもう少し深く掘り下げたいと思います。

英語とプログラミング

プログラムは基本的には日本語ではなく、英語を用いて記述します。

また、プログラミングに関する技術情報には英語のものしか存在しないような場合もありますので、これに対応するには相応の英語力が必要となります。

よって、プログラミング自体は得意でスラスラ書けるような実力を身につけたとしても、英語が読めなければ問題を解決できないということが起こり得るわけです。

マスマスターの思考回路

このように、プログラムを書く際には、様々な知識を総動員する必要があるのです。

どれか一つでも欠けてしまうとプログラムを正常に動かすことができず、投げ出してしまうという自体が危惧されます。

それだけにプログラムよりもまず、基礎的な科目をしっかり勉強することが大切だと私は考えます。

数学とプログラミングの関係をより詳しく

実のところ、業務にもよりますが、高度な数学的知識が要求されるようなプログラムを開発する機会というのは多くありません。

マスマスターの思考回路

一般の仕事において、学校で習った知識そのものを使う機会が多くないであろうことと同じです。

数学そのものに関する知識が必要となることももちろんありますが、数学においてプログラミングに本当に役立つのは、思考力や忍耐力であると考えています。

プログラミングでは、一行ずつ地道に動作を確認していく姿勢が要求され、それには強い忍耐力が必要となります。

また、どこも間違っているであろう箇所が見当たらないにも関わらず、正常に動作しない場合もあり、原因の特定には深い思考力が要求されます。

マスマスターの思考回路

正常に動作しないのですから、どこかに必ず原因があるはずです。

同じ動作が期待される別の記述に変えてみようとか、無関係に見える部分を削除してプログラム全体を簡易化するとか、状況に応じてとるべき対処方法は、忍耐強く思考することによって見えてきます。

これは数学の問題で行き詰まったときに、別の解法を試してみようとすることと全く同じです。

数学の問題での試行錯誤の経験は、プログラミングにおいても必ず活かされるでしょう。

また、プログラミングには同じ動作をするプログラムでも、書き方の良し悪しというものがあります。

数学の記述式回答においては論理的な構成となっているか、説明に過不足がないかといったように、その書き方自体も重要となります。

そのような回答を書き上げる訓練が、良いプログラムを書く実力を身につけることに直結するでしょう。

マスマスターの思考回路

数学そのものの知識よりも、数学において培う論理性がプログラムを書くうえでの一番の基礎になります。

さて、ここまでは数学的知識自体が深く要求されない場合においての数学とプログラムの関係についての話となったのですが、冒頭の引用にある通り、政府はAIやビッグデータを扱える技術者の育成を目指しています。

この領域になるとプログラムを書けるということでなく、高度な統計学、数学、計算科学といった知識が必要とされるのです。

マスマスターの思考回路

プログラムは人間が考えたことをコンピュータに理解させ実行させるための手段に過ぎず、プログラムを用いて何を書くかが重要なのであり、プログラム自体が重要なのではありません。

本当に必要なのはプログラムを書ける能力でなく、高度な学問の知識をもった人材です。

マスマスターの思考回路

普通の座学を大学(大学院)にわたるまで高度にこなし続けなければAIもビッグデータも扱えるようにはなりませんが、プログラム自体はいつでも身につけられます。

だから今までにも増して、普通の座学をしっかり勉強すべきだと私は思います。

読み書きそろばんしながらプログラミング

さて、プログラミング必修化は決定事項なので、高校生の皆さんはプログラミングの教育を受けなければなりません。

これからの時代、IT技術は今にも増して普及し、同時にIT技術者の需要も増え続けます。

しかし、IT技術はそれを使いこなすための基礎的な力があってこそのものなのです。

履修教科が増えることにより必然的に負担が増えると思われますが、決して基礎教科の学習がおろそかなものとならないことを願い、プログラミングにも親しんでもらえると良いかと思います。

プロフィール

-このサイトの記事を書いている人-

某国立大工学部卒のwebエンジニアです。
学生時代に塾講師として勤務していた際、生徒さんから「解説を聞けば理解できるけど、なぜその解き方を思いつくのかがわからない」という声を多くいただきました。
授業という限られた時間の中ではこの声に応えることは難しく、ある程度の理解度までに留めつつ、繰り返しの復習で覚えてもらうという方法を採らざるを得ないこともありました。
本ブログでは「数学の問題を解くための思考回路」に重点を置いています。
それらを通じて自らの力で問題を解決する力が身につくお手伝いができれば幸いです。

検索