「プログラミング的思考」から「プログラミング」へと変わる段階の解説

プログラミング的思考の基本は「繰り返し」部分を発見し、その役割を自動化するように場合分けする修正を行い、初めに考えた具体的な計画を達成させることでの論理的トレーニングだと言えます。

そんな論理的思考のトレーニングであるプログラミング的思考から実際にコードを書くプログラミングとその先の活用段階迄には少なくとも7段階程度が必要です。

【1】論理的思考は「非論理的思考」の繰り返しにより鍛えられる導入段階

論理的思考は、「非論理的」な思考を繰り返すことでトレーニングされますが、その方法は、上手くいかな部分を先ず取りだして、なぜ上手くいかないかを考えて、修正する繰り返しです。

このような繰り返しは大人の世界では常にありますので、その意味で「プログラミング的思考」は社会での仕事に直結する考え方が非常に有益です。

仕事は、繰り返しているうちに、3種類に大別 されます。

  • 単純に間違っている部分
  • 多すぎる部分(余分)
  • 足りない部分(不足)

先ずは、単純に間違っている部分(手順、言葉、形式、ルール)を探します。

次に余分な部分( 手順、言葉、形式、ルール )がないかを探し、単純な部分と余分な部分が無いことを十分に確認してから、次の段階に入ります。

【2】次に「場合分け」して考える段階

不足している部分を考える方法は「場合分け」して追加と補足を繰り返します

場合分けの1つめはAの方法、2つ目はBの方法、3つ目はCの方法という風に定義していくことをA関数、B関数、C関数といい、その「かたまり」がプログラミングです。

勿論、パターンにまとめられないものは個別数式で定義することになります。

【3】関数を定義する段階

「1+1=2」が何故そういえるのか

あたりまえすぎることですが、プログラミングする時は、このような当然と思える内容もしっかり定義していくことが大変重要です。

まず、この式のために必要な定義は、「1の定義」と「足し算“+”の定義」 「2の定義」 です。

このように部分に分割して1つ1つが正しく定義されて初めてな「1+1=2」と言えるわけです。

実際にはこの証明をするために本来は詳しい説明があるようですが、ここでは省略します。

ただ重要な事は、「1つ1つ定義することが必要です」という事です。

ややこしい話をすると、実は「1+1=3」と定義してもかまいませんが、数字の四則計算などは既にある算数や数学をそのまま利用します。また、プログラミングする際は、1対1の対応となるように定義することが大原則です。

概ね、中学2年生までの数学の理解でほぼ対応できるのがプログラミングです。

【4】間違って定義してしまう段階

「定義」は厳格にしておかないと、不都合があとで出てきます。簡単で代表的な駄目な定義の例を2種類記載します。

1)「Aを定義するためにBの定義が必要だが、Bの定義にAの定義が使われている」こういう内容を循環定義といいます。

簡単に書くと、「A=B+1と定義し、BをB=A+1と定義」した場合がそれにあたります。

但し、似ていてややこしいですが、プログラミングでは頻繁にこの循環命令を使います。

繰り返して同じ指示をする場合に「i=i+1」は頻繁に使います。

これは循環定義のように見えますが「=」の右側と左側の「i」は別ものであるように決めています。プログラミングで初めに戸惑うのはこの概念で、同じ計算を繰り返す場合のルールだと理解すると良いと思います。

その定義は、右側の「i+1」を左側の「i」に代入していくことで敢えて循環させるルールです。詳細はYAHOO知恵袋をご参照ください。

2) 「走ることができる動物のことを『犬』という」
と定義したとします。そうしたら「猫」も“犬”になってしまいます。

修正して「走ることのできる生き物を『哺乳類』という」とすると走る哺乳類以外の生き物はたくさんいます。

このように、1対1の対応にならない定義は避けるということが鉄則で、上手くプログラムが動かないのはほぼこの場合です。

コンピュターはたくさんの「1対1の命令(0か1)」の指示が全てといえます。

【5】HTML+CSS+Javascriptなどを一部の一般の人が理解しようとしている段階

WEB系でパソコン側の画面の 情報を閲覧するだけ のプログラミングである「HTML+CSS+Javascript」を3か月で一通りクリアーできれば、あとはどこまで自分がしたいかによって変わります。

サーバーサイドで使う言語や SEOの知識、及び CMS (content management system) の知識などどこまでも奥が深いのですが、将来はもっと簡単になるはずです。

但し、言語(Ruby,PHP,Javascript,C#など)ごとに書き方の文法が少し違いますが、関西弁と関東弁の違い程度はよくあります。

たまには、秋田弁ぐらいまではあるかもしれませんが、英語と日本語の違いのような差はありませんので、1つ理解できれば他の言語の理解は非常に早くできそうです。

【6】5年先の大学入試にプログラミングが出題され本格的な共有事項になる段階

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

今後は文部科学相が中心となり、2022年度に入学した生徒が受験する2024年度の大学入学共通テストを目安に情報科目の導入に向けた検討を進められています。

また、経済産業省の見解でも国内のIT人材は30年までに最大79万人不足する見込みで、「AIを理解し、戦略的に活用する人材が決定的に不足」する との認識が共有されています。

つまり、近い将来プログラミング言語は、現在の英語や国語という言語学習と同列に並ぶ言語と位置付けられます

【7】10年先の段階

2020年に導入される小学校からに「プログラミング的思考」の方針に基づいて、今までにない情報関連を専門に扱う高校などがどんどん増えてきています

文部省の方針では「プログラミング的思考」は「プログラミンング」自体を優先していませんが、今の小学1年生が高校生なる10年先の2030年には高校生がプログラミングコードが書けて当たりまえになっているはずです。

どんな会社や自営業であってもプログラミンングコードが書けたほうが良いに決まっている時代になるわけで、避けてはいけない部分だと考えます。

少し先の将来を考える、恐らく、プログラミングのできる20歳の新人に30代以上の大人が使われることが日常茶飯になるのではないかとさえ想像できてしまいますので、頑張らないといけないのは、むしろ今の20歳以上の世代かもしれません。