いよいよ大学入試の共通テストで教科『情報』が入試に入ることが決まった。

2024年度の入試から出題される。
そのため、2022年度以降に高校に入学する方は学校の授業で「プログラミング」を学ぶことになる。

今までであれば「情報は受験に出ない」という理由で情報やプログラミングをちゃんと教えていない学校もあったかもしれない。だが、2022年度以降はちゃんと教えることになるだろう。

高校でプログラミングを学ぶ機会ができるいのはとても良いことだと考えている。

私は工業高校に通っていたのでプログラミングを高校で学んだことがある。当時の授業の内容はさておき、後から自主的にプログラミングを学びたくなった時にゼロスタートではなく、順次・分岐・繰り返しぐらいは理解したうえで挑戦できたのは、良かったと考えている。

さて、プログラミングには様々な「言語」がある。

教科「情報」の学校の教科書では主にPythonやJavaScript、そしてVBAなどが取り上げられている。また、複数の言語を併記している教科書やテキストプログラミングではなくビジュアルプログラミングのScratchを採用している教科書もある。

とにかく、教科書毎に採用しているプログラミング言語は異なる。

では、入試ではどの言語が登場するのか?

入試で出る言語が分かっているなら、その言語を授業で採用すれば有利になるのではないか?

実は、入試では学校で学んだ言語で有利不利がでないように「DNCL」という疑似言語が採用される。

DNCLという言語は本職のエンジニアでも聞いたことがない人の方が多いはずである。私も公教育の世界にかかわるまで全く知らなかった。

DNCLは入試のために作られた言語で、元々は「情報関係基礎」という入試科目で使われていたものになる。疑似言語といっても、仕様は公開されているし、既に、複数の処理系が開発されているので実際に動かすことも可能である。

ここからが本題である

DNCLをわざわざ勉強する必要があるのか?

学んだ言語による受験の有利不利をなくすために作られた言語を、受験のために学ぶ必要はあるのか。時間の無駄ではないのか? その分の時間を、PythonなりJavaScriptなり、世の中で使われていて教科書にも載っている言語を学んだ方が良いのではないか?

と、技術者的な視点では私も思うのだが、実際にはDNCLを受験のために学ぶ高校生や、それを支援する指導者や企業が出てくると私は考えている。

JavaScript言語に慣れているプログラマーがPython言語で書かれたプログラムを読むのに同じスピードでは読めない。簡単な文法でもちょっと手間取る。

慣れていない言語の文法を理解するためのオーバーヘッドが仮に20%だったとして、受験で有利をとるためにDNCLの文法をちょっと勉強すればオーバーヘッドは減らすことが出来る、また、そのための受験対策は行われるだろう、と私は予想する。

だが、この予想の正否に関わらず、教科書を無視して『最初からDNCLでプログラミング入門』させることは断固反対である。

最初に学ぶ言語は、学ぶ人にとって魅力的な言語であるべきだ。

DNCLはあくまで受験のための言語であり、なにか有益なものを生み出すことを目的として作られた言語ではない。

様々な目的に応じて様々なイケてる言語が跋扈するこの現代に、わざわざ、はじめて学ぶプログラミング言語としてDNCLを選ぶような指導者がいるとしたら私は良識を疑う。

そもそもDNCLには新指導要領や教科書で触れられている、グラフを描画する機能やWebAPIを呼び出す機能もないので、教科をちゃんと教えようとしたらDNCLでは無理である。

「受験のためにわざわざDNCLを勉強するのは必要悪だが、DNCLからプログラミング入門するのは絶対悪」

これが私の意見である。