![見出し画像](https://assets.st-note.com/production/uploads/images/15436853/rectangle_large_type_2_058deebd612d3a296ca59027c5426046.png?width=800)
(第17回)「プログラミングやりたくない!」〜下から目線のコーディング武者修行〜
〜プログラミングの学習をやめてしまう理由は◯◯にあった?の巻〜
「これからはプログラミングが来るらしいぞ」
そのイキオイで始めたはいいけど、サッパリ続かなくてプログラミングをやめてしまう人がほとんどなのでは。
*そんな思いから、「下から目線」の学習ノートをアップしてみようと思った面もあるのでした(´∀`)
プログラミングが敬遠される理由も色々あります。
・プログラミング言語がワケワカラン
・ちゃんとやってもエラーが出まくる
・数学も必要だ
・学習が進んだら英語もやらなくてはいけない
…etc.
どれも理由としてはもっともなのですが、プログラミングの学習が続かない理由として思い当たるフシがあります。
それは、
「細分化」の発想に馴染めないから
じゃないかなーと。
世の中、「文系」「理系」というカテゴリー分けがあり、批判はありつつも、いまだに健在。
「こんなカテゴリー分けがいまだにあるのはなんでかなー?」と自分でもフシギに思っていたのですが、両方やってみて痛感しました。
文系と理系というカテゴリー分けがあるのは、「お互いが真逆のアプローチ」だから
つまり「文系」の学習ではBestなやり方も、「理系」の学習に当てはめるとWorstになってしまう。
同じように、「理系」の学習方法ではBestのアプローチが、「文系」に当てはめようとするとWorstのアプローチになってしまう。
それがあまりに極端なので、「文系/理系といった区分は無意味だと言われるけど、そう簡単なこっちゃないな…」と重みを噛みしめた格好です。
じゃあ「文系」「理系」の学び方にどんな違いがあるかというのをザックリ下にまとめてみました( ´ ▽ ` )ノ
[文系のアプローチ]
(1) 直感
(2) 連想
(3) 全体像をまず把握
[理系のアプローチ]
(1) 定義
(2) 集中
(3) 細分化して1つずつ
「文系」の方を説明すると、外国語学習なんかの場合、「直感的」に意味を掴んで、そこから「連想」を膨らませ、「この人は全体として何を言いたいか」を把握する、みたいな形。
一方の「理系」ならば、まず扱う対象を厳密に「定義」して、その上で定義したモンダイを「集中的」に扱い、「ステップを細分化した上で、順序に処理していく」イメージ。
もちろん、これは話を簡単にするための方便なので、文系だけど厳密に定義することもあれば、理系で直感が何より大事な局面もあるでしょう。
そんな風に、お互いが重なりあってる部分はいいんですが、キモになる部分となると、本当に真逆のアプローチが必要になるので「頭の切り替え」が大変。
その代表が、
「細分化して1つずつ」
じゃないかなーと。
で、この
「細分化して1つずつ」をより徹底させるのがプログラミング
という印象。
なので、プログラミング言語がどうしたこうした以前に、
細分化の発想になじめないので、プログラミングについていけない
という人が、実は一定数以上いるんじゃないかと。
そのことを感じさせてくれたのが、山本貴光さんの『世界が変わるプログラム入門』(ちくまプリマー新書』です。
この新書の骨子を言うと、
・プログラムは具体的な指示を順番に並べたもの
・指示が具体的であれば「日本語」(フツーの言葉)で書いてあってもOK!
・日本語を使って「◯✖️ゲーム」をプログラムにしてみよう
という内容。
日本語を使うなら自分にもできるかなと思って読み始めたのですが、実際に手に取ってみて腰を抜かしました。
コンピュータはXY座標を同時に処理できない!
(画像出典: https://ja.m.wikipedia.org/wiki/直交座標系)
XY座標なんて、言ってみれば平面上の「点」でしかない。X軸の3、Y軸の5だったら、(3, 5)とかって表記にしたり。
ところがコンピュータにそれをやらせてようとすると、まず「X軸で3」を教えてやり、次に「Y軸で5」を教えてやらないといけないーー
ただの「点Point」を、ここまで細かく記述しなきゃいけないの⁈
と大ショック。
(3, 5)の表記が自分にとって「これ以上、細分化はできないよ」だったのに、「もっと細分化して」と言われて、クラッとする、みたいな。
その時のミもフタもない感想は、
「うわー、プログラミングって想像以上にめんどくさい…」
でした。ホントにミもフタもないなー( ´ ▽ ` )ノ
*こういう「学習者側の心理」みたいな話は滅多に出てこないものの、実は同じように感じてる人多いのではと思い、書いてみました
プログラミングはコンピュータに何かをさせるための方法論ですが、そのためには日常生活とはまるで異なるロジック(考え方)を導入しなくてはいけない。
コンピュータさんは、「単純なことを」「高速で」処理できる反面、「フクザツなものごとを」「なんとなく」扱うことは超ニガテ。むしろ全くできないくらい。
以上を踏まえると、コンピュータに何かさせようという場合
日常生活では「なんとなく」で済ましていることも、メチャ細かいステップに置き換える必要が出てくる
ここのところで「プログラミングにザセツする」人がかなりの数でいるんじゃないでしょうか。
コンピュータさんは、
「てきとーに」「なんとなく」「たまたま」が全くできない
ので、
日常生活で「てきとーに」「なんとなく」「たまたま」を愛用してる人
にはハードル高くなる面があると思うのです(力説!)。
プログラミングをやると、コンピュータから、
あなたの言う「てきとーに」とは、どういう意味ですか?
と尋ねられる感じ。尋ねられた当人としては、
「そんなの考えたこともないよ!」
しか言うことないのですが、コンピュータさんは高倉健さん以上に「不器用ですから…」なので、決められたこと以外はできないという…。゚(゚´Д`゚)゚。
「てきとーに」「なんとなく」「たまたま」が一切使えなくなるので、これがプログラミング学習のハードルを高くしてるのではないかと思うのでした。
自分の場合、乗り掛かった船だし、という思いで山本さんの新書にかじりついていましたが、新書一冊読むのに丸々1ヶ月かかりました。
フツーの新書だったら、どんなに熱心に読み込んでも数時間、どう長く見積もっても1〜2日なのに、プログラミングの新書は30日以上! 読書スピードは15〜30分の1。
自分にとって異質なものを取り入れるのに、それくらいの労力が必要だったんだと思います。読んでる最中も、コンピュータのあまりの融通のきかなさに七転八倒(^∇^)
でもそこを乗り越えた後は、自分にも「細分化のアプローチ」が生まれました。今では、もともとの「全体像を直感的に掴む」に加えて、「細分化して考えるアプローチ」も手に入れた感じ。
この「頭の切り替え」さえできれば、プログラミングの学習も続くと思うんですが、ここがけっこうな難所。ドリフトキングの峠にアタックな感じ(*雑な想像)。
自分の「なんとなく」を、「細分化」できるかどうか
が、「プログラミング学習が続くかどうかの分かれ道」に思えるのですが、どうでしょうか。
自分の場合、外国語を身につける方面はあんま抵抗を感じずにせっせとやってきた分、この「なんとなくを細分化」できるようになるまでが長い長い。
一方で、「細分化は得意だけれど外国語を身につけるのが超シンドイ」という人も多いはず。
そういう人はきっと、「自分が細分化に馴染めなくて苦労したあの感覚」にウンウン唸ってるだろうなと想像する次第。
「全体像を把握」も「細分化して順番に」も、どっちも大切なのに、なかなかどうして「どっちも得意」とはいかないものダナーと、プログラミングを学んで思ったのでした。
この記事が気に入ったらサポートをしてみませんか?