プログラマー必修の「論理力」について
プラグラミングを学ぶ上では避けては通れない、習得必須の「論理力」について、今までの経験や読んだ本・メルマガから得た知識を1つの記事にまとめてみました。本1冊読み終えた後くらいの読了感を目指しますので、良ければ最後まで読んでください。
「論理」の対義語は「感情」
論理を語る上では、その逆の意味である「感情」から入るのが分かりやすいと思います。感情というのは僕たちが生まれてきてからすぐ身につけている”先天的な”能力で、誰しもが感情を持って世に誕生してきます。お腹が空いた時には「泣く」ことで両親にお腹が空いたことを知らせますし、いないいないばぁをされた時には「笑う」ことで嬉しいことを両親に知らせます。つまり、コミュネーションの手段として幼少期は感情語を使います。「嫌だから学校に行きたく無い」というように、行動の理由には感情を元にします。
徐々に成長していくに連れて、より論理を元にしたコミュニケーションを取るようになっていき、例えば「熱が出て気持ちが悪いから学校に行きたく無い」というように行動の理由が感情から論理に移行していきます。このように因果関係に基づいたコミュニケーションを論理語と言います。論理語を使えるようになるには、世の中のルールや日本語などの学習をしていく必要があるので、論理力というのは後天的な能力です。僕たちは、義務教育などの経験を経て論理力を身に付けることで、子供から大人へと成長していくのです。
もしも会社を休みたいとなった時に、「嫌だから休みたい」という理由は感情語なので通用しません(といっても今の時代は普通にあり得るのですが笑)。たとえ本来は嫌だからという理由であっても、大人ならば「熱38℃があり働ける状態ではないので休みたい」というようなもっともらしい理由を論理語で説明することが求められます。論理語が十分に使えない場合に、大人としての常識に欠けるという評価を受けてしまいます。
ここまでの話はプログラミング以前の論理の話なのですが、世間一般の論理という意味では、因果関係を説明できる能力、と言えると思います(ちなみにこの辺の話は全然本質の話では無いので、さらっと流していただければと思います)。
義務教育ではどのように論理力を学ぶのか
義務教育は日本人であれば皆が経験していることだと思うのですが、論理力を身に付けられる一番の学問は数学です。「今でしょ」の林先生も学問の中で一番大事なのは数学というくらい、数学というのは論理力を学ぶ上で重要な学問です。証明問題などは特にそうなのですが、ある仮説を元に正しいのか間違っているのかを説明する能力を身に付けることができるので、数学の勉強をすると論理力がつきます。僕は数学が得意だったので元々論理的思考が得意だったようなのですが、苦手だったという方は算数や数学などを勉強してみると、論理力が身につくのでプログラミングの学習もより捗るかもしれません。ちなみに算数という学問は、数学をする前に数の使い方を学ぶ学問なので、算数で躓いてしまうと数学で躓いてしまいます。数学が得意な人は、論理力が身についているので、他の学問も比較的得意になるようです。
僕は今だに役立ったと思っているのは、中学の時にたまたま図書室で見つけた「集合と論理」という本を1冊丸々写経したことです。その時に身につけた命題の知識やベン図の知識がプログラミングを学ぶ上で結構役立っていて、ド・モルガンの法則なんかは複雑な条件分岐を書く時に知っておくとすぐ使えるので、もし良ければググってみてください。
義務教育で身につけた論理力は、プログラミングでは全然通用しない
僕は元ガリ勉で偏差値70以上ある学校に行っていたので、義務教育内では論理力があるとされていて、勉強に関してはそこそこ自信があったのですが、プログラミングを学んでいて全然今の論理力が通用しないということを痛感しました。プログラミングを学ぶ上では論理力というのを突き詰めていかないといけないので、今まで説明した大人になるための論理や、数学を解くための論理とは比べ物にならないほど論理的思考力を身につけないといけないのです。正直東大に受かるよりも難しいのでは、と思っています。
プログラミングができる人とできない人の一番の違いは論理的思考能力で、その能力さえ身につけてしまえば後は自走できるようになります。その過程で今まで経験したことのないほど頭を使わないといけなくなるので、ずーっと脳トレをし続けている状態になり、ウィルパワーという考えるエネルギーを消費し続けるため、僕は疲れて人と喋れなくなることが何度もありました。
プログラミングを学ぶ意義は、「論理力」のプロになれるから
僕は独学をしながらアウトプットをしなければいけなかったので時間はかかりましたが、プログラマーとしてアウトプットが出来るようになると圧倒的に論理力がつきます。振り返ると、大人になるまでの論理や義務教育で身につけた論理というのはしょせんアマチュアの論理力だったということが分かります。プロスポーツ選手がアマチュアの選手よりも圧倒的に能力があるように、僕たちプログラマーは圧倒的に論理力が身につきます。
プログラミングを学び、プロの論理力を身につけた状態で、まだ身につけていない人と話すとどうなるか分かりますか?相対的に相手は”感情語”を使っているように感じるようになってしまいます。プログラマーの方なら分かってもらえると思うのですが、プログラマーではない人と話すと脳のプロトコルが違うので全く話が通じないと感じてしまうのです・・・。実際にはきちんとコミュニケーションを取る必要があるため、歩調を合わせるように論理力を下げて話す必要があります。
プログラミングを学んでいる方になら話せるような内容も、まだ学んでいない方には話せないことが多いので、プログラミングを学ぶということは新人類になるくらいの革命を起こすことができると思います。今何故こんなにもプログラミングが注目されているのかというと、稼げるからとか在宅でも働けるからというようなミニマムな理由ではなく、プロの論理力を身につけられるからだと僕は考えています。
論理力が身につく代わりに感情は薄れていく
ここまで読んでいただいている方は、「論理」と「感情」は対立の関係にあるということは理解していただけていると思うのですが、プログラマーとして論理をどんどん使うようになると、反対に感情はどんどん薄れていきます(もちろん例外はあると思いますが)。プログラマーの方が冷たいと感じることは多々あると思うですが、その理由は真面目に論理力を身につけ仕事をしているからだ、ということが自分がプログラマーになってようやっと分かりました。ちなみに僕はその辺のことも踏まえて、ちゃんと感情を出すべき時にはあえて感情を出すように意識しています笑(真面目にしようとすればするほど論理的で冷たい印象になってしまうのが悩みです・・・)。
プライベートは逆に感情の変化を楽しめる趣味を持とうと思っているので、お笑いやギャンブル(麻雀)を楽しんでいます。恋愛などもした方がいいらしいのですが、しばらく予定はなさそうです笑。
普段から論理力を付けられるおすすめの趣味
プログラミングをすることがダイレクトに論理力を身に付けることができる方法ではあるのですが、そればっかりというのはつらいものもあるかと思いますので、スポーツでいう筋トレのように論理トレーニングができる趣味をいくつか紹介します。
- ゲーム全般
- 数独
- 麻雀
- ボードゲーム全般
- 推理小説
- 脱出ゲーム
- ウミガメのスープ
今では無料でできるものも数多くあるので、素振りや筋トレ、ジョギングのような感覚で楽しみながら論理力を鍛えていくといつのまにかできることが増えると思うのでおすすめです。ちなみに僕はポケモンソード・シールドをやっているので、レーティングで上位を目指して頑張ろうと思います^^
学んでいる途中の辛い時期の捕らえ方
MENTAを利用されている多くの方はまだ学習したてで、論理力が思うように身に付かず辛い思いをしている方が多いと思うのですが、まず前提として今の時期は通過点であり、全プログラマが経験しているということを忘れないでください。僕は特にその時期が長かったので今だに鮮明に覚えています。
また、成長に伴う苦痛を乗り越えると、褒美が待っているということも忘れないでください。乗り越えた時には、あなたを一生守ってくれる「プロの論理力」という武器を手に入れることができます。ドラゴンボールで悟空が超神水を飲んでいる状態であり、耐え凌げば圧倒的に強くなれます。
NEXT KNOWLEDGE's HINT
次のナレッジ記事では、「ポモドーロ・テクニック」について解説しています。集中力を保つためにすぐ効き目のあるノウハウを書いていますので、お時間の許す方はぜひ次の記事も読んでみてください♪
MENTAで先輩から「論理力」を盗もう
最後に、MENTAで記事を書く場合は締めに自分のプランにつなげよう、というルールを自分に課しているので宣伝です笑
MENTAでは様々なサポートをメンターの方に依頼すると思うのですが、その時には今悩んでいる答えというよりもその答えに至るまでの論理に注目してください。その論理を盗んでしまえば、次に問題が起きた時には自分で解決できる訳ですから。
僕の論理力を月々1,000円で盗み放題というプランを下記に用意していますので、もし興味があればぜひご活用ください^^
https://menta.work/plan/3225/10983
ここまで読んでいただき、ありがとうございました!( ̄- ̄)ゞ