プログラミングは理系、難しいのか?

あなたは、プログラミングにどのようなイメージをお持ちでしょうか? 「難しそう」というイメージを少なからずお持ちなのではないでしょうか。では、なぜ「難しそう」と思うのでしょうか。ひょっとしたら、理系の大学を卒業した専門的な技能を持った人(プログラマー、システムエンジニア)があやつるものだと感じているのではないでしょうか。

たしかに、理系の大学には「情報工学」「データ数理」といったプログラミングと縁の深い学問領域があります。わたしも学生時代は電気工学科のなかで情報工学を勉強していました。

しかし、理系でないとプログラミングできないかというと、そんなことはないのです。むしろ、文系が得意とするようなスキルがプログラミングに必要な場面もあります

プログラミングとは、コンピューターと人間がおはなしすること

わかりやすい例として、Excelの関数で説明します。Excelの関数は、厳密にはプログラム言語ではないものの、プログラム言語に近い性質を持っています。

わたしは職業訓練の講師として、10代から70代まで、はじめてExcelをおぼえる大人に教えていたことがあります。そのときに授業のたびに伝えていたのが、「Excelの関数はコンピューターとおはなしすることなんですよ」ということです。

職業訓練には、コンピューターを「使いたい」「使えるようになりたい」訓練生が来ます。わたしは、コンピューターを「使う」という表現があまり好きではありません。コンピューターに「代わりに仕事をしてもらう」という表現をよく使います。なぜなら、ある分野においてはコンピューターは人間を遥かにしのぐ力を持っているからです。

Excelの関数を覚えたての人は、魔法のように望む結果が出てくることにおどろきます。それは、コンピューターが人間よりはるかに速く計算できるからです。しかし、関数の書式を間違えると望む結果は出てきません。人間がコンピューターに意思を伝えるには、書式にしたがわなくてはなりません。

プログラミングもExcel関数とおなじなのです。人間がコンピューターに、なにかやってほしいことがあって、それを伝える手段がプログラム言語なのです。

人間同士で使われる言語は「日本語」「英語」「スペイン語」など、自然言語と呼ばれます。人間とコンピューターの間で使われる言語が「プログラム言語」です。日本語にも英語にも文法があるように、プログラム言語にも文法があります。文法は、相手に意思を適切に伝えるために必要なものです。

もちろん、自然言語の文法は「あいまいさ」があります。融通もききます。一方、プログラム言語は、あいまいさは極力排除され、融通もききません。変人とはなしをしていると思えば、人間同士で会話しているのと変わりません。

さて、こう考えると「プログラミングは理系」とは思えなくなってきたのではないでしょうか。

高校の先生に聞いてみると

「コンピューターと会話するから、プログラミングは理系ではない」とは、いささか飛躍しすぎな気がします。もうすこし具体的な例をあげます。

知り合いに、高校の情報科目の先生がいます。その先生によると、「情報科目の模試をすると、理系より文系の学生の方が成績が良い」ということです。実は、1校だけではなくて、複数の学校でおなじような傾向が見られるそうです。

わたしも模試の問題を見させてもらったところ、「日本語で書かれた要求をプログラム言語に書き換える問題」でした。なるほど、適切に文意を読み取り、プログラム言語に変換しないと解けない問題です。「数学の文章題は国語力がないと解けない」というのも、よく似た例と言えます。

ちなみに模試は、2025年大学入学共通テスト対策の模試です。高校生が大学入試で求められるプログラミング言語は、文系のスキルが必須ということです。

現実世界で役立つプログラミングをするには

実は、社会人がプログラミングで求められるのは、「自然言語(日本語など)で示された要求をプログラム言語を使って、解決する手段にすること」です。いくら高度なプログラム言語のスキルを持っていても、課題を解決しなければ優秀とはいえません。

わたしがそうであったように、プログラミングを覚えたてのころは、プログラミングすることが楽しくて、課題解決を置いてけぼりにしがちです。学校を卒業して、社会人として何年か実務を経験したあとに、「課題解決」がいかに重要かがわかってきました。

そして課題解決のために、プログラミング以外の書籍をたくさん読みました。「課題解決」のためには、理系の知識や学問よりも、文系の知識や学問が必要な場面がたくさんあったからです。

もしあなたが、「自分は文系だから」という理由でプログラミングを敬遠しているとしたら、それはまったく気にする必要ないのです。