Scratchをいくらやってもプログラミングができるようにはならない。

職業訓練校で1年、仕事として9カ月コーディングをして感じたことのひとつに、表題の件があります。

Scratchというのはプログラミング言語のひとつであり、プログラミング言語の構文を知らなくても簡単な開発ができるGUI環境でもあります。パズル感覚でゲームが作れたりするという売り文句で主に小学校中学年から高校生までを対象に作られたものです。今年度から小学校教育にプログラミング学習が必修化しましたが、授業の場でもやっぱりScratchのようなビジュアル言語が使われるようです。

自分も職業訓練校に行く前にScratchは触れたことがあったのですが、パズルゲームだなという感想をそのときは持ちました。実際にプログラミングを学んで業務で散々コードを書くようになっても印象は変わりませんでした。

以下はスクラッチのGUI画面です。

画像1

身も蓋もない言い方になりますが、Scratchをやって上達するのはScratchを扱う能力だけで、プログラミングをするために必要な能力は何一つ伸びません。じゃあそもそもプログラミングをするために必要な能力って何なんだとなりますよね。そういう話を次段落からします。

プログラミングには数学能力よりも国語能力のほうが重要

情報工学は理系分野ですが、プログラミング、またはコーディングと呼ばれる作業において数学能力は実は不要です。むしろ「プログラム言語」というだけあって必要なのは文章を読み書きする能力、つまり国語能力です。
なぜかというと、計算はコンピュータがやってくれるからです。当たり前ですね。

実際に数学能力が必要になってくるのは、東大に受かるようなAIを開発するとか、スペースシャトルを作るために重力計算などのシミュレーションをするソフトを作るとか、あるいはプログラム言語そのものを新たに作るような、非常に高度なレベルになってからです。そういうレベルになってくると数式は人間が作って調整する必要があるので、数学能力がないと話になりません。ですが、たとえばAmazonや楽天市場のようなECサイトを作るとか、TwitterやFacebookのようなSNSサイトを作るようなWebサービス、Webシステムを作る際には数式や数学が不要なのはプログラミングをしていない人でも想像がつくんじゃないでしょうか。

次に国語能力が必要な理由ですが、これはプログラムコードが命令文だからです。コンピュータに対して、どんな処理をするのか命令をするのがプログラミングなわけです。プログラミング言語にもいろいろありますが、言語それぞれには記述するためのルールがあります。英語だと「主語の次に述語が来る」ようなのと同じで、決まった書き方を覚えないといけません。単語なんかも定型のものは覚える必要があるので、やっぱり国語や英語に近いものになってきます。あと、これは業務などにおいて非常に重要になってくるのですが、ある程度長い、規模の大きいものを作ろうとすると、簡潔にプログラムを書く必要があります。なぜかというと、命令の組み立ては人間がするので手順を正しく把握していないと作られたプログラムも正しく動きません。矛盾や過不足ないプログラムを書くためには、人間(作り手)が読んでわかりやすいものであればあるほど良いわけです。わかりやすい文章を書くっていうのは大人でも難しい技術ですが、これもやっぱり国語能力になります。Scratchみたいなパズルやってる場合じゃないんですよ。

続いて、プログラミングに必要な能力その2です。

学習能力は何においても大事

こちらも身も蓋もないですが、プログラミング言語って不変じゃないんですよ。同じ言語でも書き方が変わったり新しく便利な書き方が追加されたりします。プログラミング学習に終わりはありません。なので、都度調べものをしたり、勉強をするための能力は最重要項目です。上述した調べものや物事を理解、記憶して、それを実践にまで持っていく技術、それさえあれば基本的なプログラミングはマスターしたも同然と言っても過言ではありません。

これに関しては基本にして奥義といったものなので自分も言えることはほとんどないです。勉強中です。読書猿さんの「独学大全」を読みましょう。

この話飽きてきた。

全体を通して、何が言いたかったかというと、小学校教育のプログラミングの必修化は完全に悪手だということです。私は英語ですらやるべきでないと思っていますが。上述した「わかりやすい文章を書く能力」とか明らかに教育できてないわけで、プログラミングよりも先にやるべきことがもっとあるよね。そんなに四方八方に手を伸ばしても一兎をも得られないよね。という、もう他所で何億回といわれた話に帰結するんですが、もし小学生のお子さんにプログラミングスクールに通させようとする親御さんがいたら止めてあげたいですね。はい終わり!

わかりづらいコードは悪いコードなのでバグが出ます。わかりづらいのでバグの原因が探しづらく、修正しづらいです。こういった悪循環ができるので、コードはきれいに書こう! 戒め! クソコード! 撲滅!

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
5
処理速度IQ76の軽度ADHD、プログラマー1年生です。構造について考えるのが好きで、5年くらい物語論をやって挫折したことがあります。趣味のゲームやその他メディア、勉強中のプログラミングやら英語の話と、日々意識している発達についての話を主にします。半ば備忘録です。