教えて!gooなんかを見てると「プログラミングに向いてるタイプとは?」と言う質問が周期的に良く出てくる。
しかし、「向いてるタイプ」を定義するのは難しい。
一般的には「プログラミングに向いてるタイプは論理的な人間だ」とか言われるけど、プログラマって本当に論理的なのか、っつーと違うような気がしてる。
例えば「理論的に最強言語」があるとして、じゃあ、プログラマが全員それを「使う」ような選択をするのか、っつーとそれはほぼあり得ないだろう。
理学系の人間なら「新しく正しく速い」と何かに付いての計算法が見つかった、なんて話を聞くとほぼ全員それに鞍替えする。そう言う風に「理論屋」はすぐ決定するんだけど、生憎プログラマはそういう決定をしない。
例えばインテルと違う新しい「より良いCPU」が出たとしよう。でもプログラマはそれで動く何かをプログラミングする事を選ばないんだ(※1)。
プログラマの行動ってのは、「論理的に正しい/良い」に従うよりは「多数決」的な判断に従う事の方が多く、また「習慣に従う」率が高い。
つまり、彼らの行動自体は特に論理的でもないんだ。と言う事は必然的に「発想」も論理的ではない、と言う事になる。
いや、これはプログラマがどーの、と言うより「理学」の人間と「工学」の人間の違い、って言ってもいいだろう。工学の人間は実は「論理」に生きてはいない。と言うか生きられない。仮に貴方が「革新的な自動車を発明した」にしてもそれは採用されないんだ。「より良く正しい何かがある」よりも生産ラインがあるかどうか、とか、充分な部品が供給されるのか、とか、常に「論理」より「外部的な要因」に左右されるのが工学で、結果理学系の人間とはやっぱ発想が違う奴らが集うんだよ。むしろ性質的には「数学が出来る文系」と言った方が良いのが工学系の人間だ(※2)。
断っておくけど「全てのプログラマが論理的じゃない」とは言ってない。でもプログラマ=論理的、なんじゃなくってプログラマの中には論理的なヤツもいる、って程度なんじゃないかと思う。
余談だけど、以前別なトコにも書いたが、Lisperとしてはポール・グレアムは凄いんだけど、論理的かどうか、ってのは分からん、とか思ってる。「一回もMicrosoftのソフトを使った事がない」と言ってるポール・グレアムが何故に「Microsoftは信用出来ない」と言うのかサッパリ分からんからだ。言っちゃえば「論理が破綻してる」(笑)。と言うよりここにあるのはいわゆる「Microsoft嫌い」の典型的なステロタイプでしかない。そしてこういう発想はプログラマだと多かれ少なかれ良く見かけるんだよ。
まぁ、いずれにせよ「プログラミングが出来るか否か」と言うのと「論理性」はあまり関係ないと思ってる(※3)。そして一般に、「出来る」要因とか、外部から見て「こういうタイプはプログラミングが出来る」とか言うのはかなり難しいと思っている。
ところが、あくまで「教えて!goo」辺りで見てると、って話なんだけど、「こういうタイプはプログラミングが出来ない」と言う判別の方が簡単な気がしてる。「出来るタイプ」を定義するのはムズいんだけど「出来ないタイプ」を判別する方が簡単だ。
教えて!goo辺りで出てくる「これはプログラミングに向かないタイプだろう」と思うのは、パソコンのデスクトップ画面をスマホで撮影する人間だ。
あくまで「教えて!goo」の質問者に限った話だが、こういうタイプはプログラミングに向かないと思っている。
理由は2つある。
1. パソコンの使い方を知らない
例えば包丁の使い方を知らないのに料理人になりたい、とか、ハサミの使い方を知らんのに散髪屋になりたい、とか言う話があったとしたら「そりゃ無理ゲーじゃね?」って言うと思う。
同じ様に、「プログラミングをやりたい」と言っててもPCの使い方を知らん、ってのはお話にならんだろ、って思うわけだ。
どういうわけだか、Print Screenキーがキーボードに付いてる、ってのを知らん人間が一定数いるわけだが、これが結構驚きなんだ。別にプログラミングしない、って人は構わんが、プログラミングをしたい、と言う層。彼らはそもそも、パソコン購入時にマニュアルを読まないんだろうか?
いや、仮にマニュアル読むのが面倒くさい、ってのが是だとしても、せめてプログラミングを始める前に「500円でわかるウィンドウズ」程度は目を通しておくべきだと思う。「プログラミングをやりたい」と言うのなら。
プログラミングを始めると、シチュエーションに拠ってはOSとやり取りせなアカン局面がしばしば出てくる。WindowsだったらDOS窓やPowerShellで使う「コマンド」をプログラムで利用したりする事が出てくる。場合によっては「プログラムを書く」より「OSにさせた方が早い」なんて事もあるしな。
その辺は徐々に学んでいくにせよ、まず最初に「パソコンの基本的な機能」を押さえてない、ってのはどう考えても致命的だろ。デスクトップの撮影なんぞはその最たるものだ。
Windowsなんかだと、キーボードの右上方にあるPrint Screen(とかPrt Scr)と書かれてるキーを叩く。そしてペイントソフト上でペーストすると、画像情報が生成されるわけだ。それを好きなフォーマット(jpegとかpngとか)で保存すればデスクトップ画像の出来上がり、だ。スマホでモニタをわざわざ撮影するより手間はかからんし綺麗だ。
また、アクティヴウィンドウ(今中心に動いてるソフト)の画像を撮りたい場合はAltキーを押しながらPrint Screenキーを叩く。その後のペイントソフトにペーストして、ってのは同じ作業になる。
生憎Macは知らんが、似たような機能はあるだろう。なんせLinuxにもあるくらいだからな。
Linux、と言うかUbuntu系OSだとその名もそのまま「スクリーンショット」と言うソフトウェアが同梱されていて、デスクトップ撮影、アクティヴウィンドウの撮影、指定した範囲の撮影、の3種類が出来る。これは「アクティヴウィンドウ」で撮影したPythonのIDLEのケース。
2. 好奇心がない
これは別にプログラミングに限らないんだけど、これが少ない人間もプログラミングに向かないとは思う。
そもそも、仮にWindowsやパソコンの「使い方を知らん」事を是としよう。でも世の中にはデスクトップ写真、なんつーのは溢れてるわけだ。
そんな中で。「スマホで撮ったような汚い写真」じゃない写真を一体どうやって撮るのか、とか疑問に思わない、ってのも致命的だと思うんだよな。
それとも何らかの「特殊な機械が必要」(※4)とか思ってるんだろうか。
この辺「疑問に思わない」と言うのが不思議なんだ。仮に「特殊な機械が必要」だとしても、それを買うか買わないかはさておき、そういう存在を「検索」でもして確認しないだろうか。
そういう、なんつーの?好奇心が持てない、とかその辺の「推論」が出来ない、ってのは、あまりプログラミングに向いてないタイプなんじゃないか、と思う。
結局、プログラミングも「これってどうやってプログラムするんだ?」とか疑問を持って、「調べる」とかやり続けられないとダメなんだよな。そういう「性質」がデスクトップ写真一枚で分かるんだよ。「スマホで撮ってる」ってだけで、「あ〜、この人は大して探究心とかねぇんだろうな」とか個人的には結論づけてしまうわけだ(そしてついでに言うと「セキュリティ意識」が低い・・・画像に「自分」が写り込んだりして、それこそ専門のソフトで「顔バレ」する、と言う危険な事をやってるんだ、って自覚がない)。
まぁ、あくまで「教えて!gooを眺めてて」と言う話、なだけだし、個人的な意見なんだけどね。
少なくとも、「プログラミングを勉強しはじめる」と言うのは最低限、Print Screenの使い方を覚えてからなんじゃねぇの?と言うのを「教えて!goo」を見てて痛感している。
※1: これは実際、かつて起こっている。
1990年代に「より良いCPU」としてRISCが取り沙汰された時、結果的には殆どのプログラマはそれを使わなかった。と言うより使えなかった。
結局、ここでもプログラマが「良い決定」をするより、ハードウェアメーカーの「商売的な決定」がいろんな物事を左右するわけで、「論理的に考えて」これが良い、とかあれが良い、と言う決定は出来ないんだ。
※2: あと、意外に思うかもしれないが、「科学で使う方程式は絶対」と神格化して考えるのは工学の人間、一方、実は理学の人間はそんな事は考えない。何か科学的法則があるとして、「それが壊れるなら破綻するトコを見てみたい」と思うのが理学の人間なんだ。
この辺の「科学法則」に対するメンタリティと言うか、スタンスが理学者と工学者は実は全く違っていて、同じ「理系」の括りにならない。
これを見ても、いわゆる漫画だ何だで取り沙汰される「理系」ってのは明らかに工学の人間の方を指していて、真の理系である「理学系」の人間の事について触れてるわけじゃない。
※3: 論理性よか「より多いプログラミングの"パターン"を知る」事の方が重要なのでは、と思っている。要は殆どの「プログラミングが出来ない」人のケースだと単に練習量が足りないだけなんじゃないか。
ただし、無闇矢鱈に練習量が多ければいい、ってモンでもなく、良問としての「練習問題」がたくさんなければ話にならないわけで(そして解答の「美しさ」も必要だ)、そういう「良問」自体が市販書籍じゃ少ない、ってのが別の問題として浮上してくるわけだ。
そういう意味ではそもそも「教科書としての良書が少ない」ってのがプログラミング教育での問題じゃあるまいか。
※4: 過去はこの仮定は是だった。
わかりやすい例で言うと、ファミコン雑誌の「ゲーム画面」をどうやって撮影してたのか、と言う話。それは昔は大変で、総初期はホンマ、大真面目にテレビ画面を(フィルムの)カメラで写してたらしい。それが「ゲームプレイ画面をビデオに録画」して「ビデオプリンター」で印刷する、と言う方式に変わった(それでも前時代的だ)。
この辺の昔の苦労話は鈴木みその「あんたっちゃぶる」に詳しい。
いずれにせよ、今やもう「そういう時代ではない」んだ。