プログラマのはなし

「ミタムラさんって理系なんですねえ!」
「意外に頭いいんですね」
私がプログラマーだと知るとこうリアクションされる事が多いです。
意外にというのは余計ですがまあその通りに見えるだろうなと思うので腹も立ちません。
実際は文系で、特に理系科目は壊滅的にできない事を伝えると
「えっでも、なんで?プログラマーなのに?」
と、そりゃあこっちが聞きたいよと思う事を返されるところまでテンプレートになりつつあります。
プログラマー → コンピュータで小難しい事をやる仕事 → 頭良さそう → じゃあ理系。
というイメージは理解できますし、私もこの職についていなかったらそう考えたと思うので特段誤解を解きたい気持ちもないのですが、文系プログラマーの生態について紹介しておこうと思います。

プログラマってなに?

プログラムという文書を書いてお金をいただく職業のことです。
誤解を恐れずに言えば物書きの一種です。
本を書く作家と同じように例えば、
「子どもたちと熱血教師が事件を解決する感じ」
とか、そういう題目(仕様)を与えられて文書に落としていくわけです。
うまくしないと、
「この教師の熱血は思ってたのと違う」とか
「子どもたちって言ってるんだから10人は出してよ」などと言われて書き直しが必要になります。文書ですから破綻していてはいけないし、要求を満たしたものになっていないとお金にできないわけです。

「コンピュータ・プログラムと日本語の文書は違うでしょ」
と思われるかもしれません。確かにプログラムには”アルゴリズム”と呼ばれる論理的思考や、無駄を省いて効率化する考えが要求されますが、実はどちらも日本語文書において重要な部分だったりします。

ミステリで登場する密室トリックやミスリードを誘う叙述トリックなど、過去に発明されて現代でも使われ続ける”黄金パターン”が存在しますが、これが ”アルゴリズム” と言えます。材料を入力すると料理されて結果が出力される、それを頭の中で組み立てる作業は正にプログラミングです。

無駄を省く点については、
「私は空港に向かったが、とても4月とは思えない陽気で、私の服は汗でびっしょりになってしまった。」
という文書を
「空港に向かったが、4月とは思えない陽気で汗びっしょりになってしまった。」
とまとめる作業に似ています。人間が読む文書は感情描写や情景描写も必要なので短ければいいと言うものではないですが、コンピュータに読ませる場合は ”いかに短く意味が通るか、それでいて読みやすいか” という点のみが重要ですので、その意味においては簡単かもしれません。


コンピュータのためのものだが人間も読む

プログラム・コードはコンピュータが読み、解析し、実行するものです。
よって最低限文法が合っていればそれで良しとされます。
「動くプログラムが良いプログラム」と言うわけですね。
ただし、チームで動いている場合など、他人が読んで付け足したり、意味を補足する必要がある場合はその限りではありません。

「AはB県にあるC校を卒業し、D府にあるE社に就職したのだった。」
という文書があって、
「C校をF校と書き換えたいのだけど、意味は通るかな?」と聞かれたとして、どうでしょうか。わからないですね。情報が無さすぎて判断できません。やってみたら?責任は取れないけど、といった感じです。

これが
「佐々木は青森県にある青森西高校を卒業し、大阪府にある商社に就職したのだった。」であり、
「青森西高校を青森東高校と書き換えたいのだけど」であれば、恐らく問題がないということ、確認すべき点、影響の範囲がずっとわかりやすくなります。

この作業はプログラミングにおいて ”命名” と呼ばれるものであり、明らかに文系作業です。コンピュータにとっては ”A” でも ”佐々木” でも違いはありませんから動作に支障はありません。なので往々にして先程の例のような、他人が読んだら全くわからないし、自分も1ヶ月経ったらわからなくなるようなプログラムが量産されがちです。

述べてきたように ”書く” 作業においては文系の能力が問われます。
ただし密室トリックを思い付くような ”多角的な視点” が必要になる場面があることも事実で、これには理系の発想力が必要とされます。重要な点は発想力が必要なのであって、数IIIができないと話にならない訳ではないことです。式を与えて答えを出すのはコンピュータの仕事ですから、人間に必要なことは、”これはコンピュータで解けるはずだ” という発想です。
私が昔に教わって今でも大切にしている言葉に、
「日本語で破綻なく説明できるものは作れる。」というものがあります。
”日本語”の部分を他言語に置き換えてもよく、常用語で説明しきれるものはそのままプログラム・コードに落とせるということを表しています。
このように”日本語で破綻なく説明しきったもの” が仕様書と呼ばれます。
非常に乱暴に言えば、仕様書の日本語を1行1行プログラムに置き換えていけば完成するということです。

何を言いたいのかわからなくなってきたのでこの辺で終わりたいと思いますが、文系科目の人たちでも、プログラマになれないと言うことは全く無くて、むしろそのセンスが発揮されたコードは非常に洗練されていて気持ちの良いものになる可能性が高いので、もし数学がからきしなんだけどこういう業界に興味がある方は諦めずに進んでもらえたらと思います。

ちなみに私の数学力は本当に厳しいものがあり、コサインだかタンジェントだかで角度を出す問題を分度器で測って正解し、そのテストでの正当はそれだけだったという逸話を残していますので大丈夫です。


この記事が気に入ったらサポートをしてみませんか?