プログラム言語的に見る「プログラマの仕事」




Pictonic

Hello my name is Noma.

あってるかな?(笑

皆さんこんにちは、プロクラスの野間です。

今回はプログラムを書くときに使う言語に着目してみたいと思います。
プログラマが書いたプログラムを見たことがあるでしょうか?
なにやら英語が一杯書いてあるやつです。

実はあれ、色々種類があるんです。
似たものもあれば、全く似てないものまで色々あります。
マシン語、アセンブラ、C、FORTRAN、COBOL、PHP、Java、JavaScript・・・
凄くたくさんあります。
これらははじめからあったものではなく、後からどんどん増えてきたもので、
今でも増えています。

「そりゃぁ昨今コンピュータに出来る事が増えたから新しい言語を作らないと対応できない」
訳ではないですよ。
では何故新しい言語が増えるのか?
予想ですが、一言でいえば、おそらく「人間に都合が良いから」だと思います。

●原始時代

コンピュータが生まれて間もないころ、
プログラムで使える言語は数種類だったと思われます。
今も昔も、コンピュータが理解できる言語はマシン語だけです。
ところがこのマシン語は人間には非常に難解でした。
なにしろ、ただの「数字の羅列」だからです。
表現すると、足し算は「8」、引き算は「9」のように、命令に数字が割り当てられています。
これでプログラムを組んでみるとどうなるか想像してみましょう。

8 + 2 ⇒ 8 8 2
6 + 32 – 11 + 9 ⇒ 6 8 32 9 11 8 9

あなたはついていけますか?
※イメージです。実際はもっともっと複雑に変化します。

そこで、人間にわかりやすい言語が作られました。
足し算は「ADD」、引き算は「SUB」等、文字で表現しようとされました。
使用されているところを想像してみると・・・

8 + 2 ⇒ 8 ADD 2
6 + 32 – 11 + 9 ⇒ 8 ADD 32 SUB 11 ADD 9

「比べる」とこちらの方がわかりやすいですよね?
※あくまでイメージです。
もしこの2種類しかなかったら、あなたならどちらを使用しますか?

だからと言って、こう思いますよね「わかりにくい・・・」
こうして、もっとわかりやすく、使いやすい言語を目指して増えていく事になります。

●言葉が通じないときにやること

他国の方と会話したいけど、互いに相手の国の言葉を知らない時、通訳(or 翻訳)を頼みますよね。
ところが、少数部族の方と会話したい場合、両方の言葉を知る通訳の方が居られない場合があります。
そんな時、どうしますか?
そう、翻訳のバケツリレーです。

「日本語」を「英語」に通訳
「英語」を「現地語」に通訳

な感じでしょうか。
実はプログラムはこれと同じことをしています。

「日本語」を「C言語」に通訳
「C言語」を「マシン語」に通訳

ここでご理解いただけると思いますが、
間に挟まれる形になる「C言語」は別の何言語でも良い点です。
だからここは、より人間にわかりやすく、使いやすい言語が出てくるわけです。
ですが、最終的に「マシン語」に訳されますので、「出来る事」は変わりません。

●プログラマの仕事は翻訳

このような観点からみると、プログラマの仕事は翻訳である事がわかると思います。
プログラマは「こんなものがほしい」と思っている方から
日本語の形でやり取りします。
意訳が必要なため、事細かに聞く必要があります。
※実際には別の職業分類ですが、例として

この日本語をコンピュータの言語に翻訳します。
先の例では「C言語」ですね。
難しいのはプログラムは「書き物」だと言う点です。
目の前で身振り手振りを含めて対話するのと、
電話で対話するのと、メールで対話するのとを比べてください。
どんどん難易度が上がりますよね。
プログラムの面倒なところです・・・

このC言語をビルド(コンパイル?)してマシン語に変換します。
こうして晴れてコンピュータが理解できる言語に訳されるわけです。

出来上がった結果、依頼主から「思っていたものと違う」なんて言われることもありますが・・・

●言語の習熟

このように「訳」が仕事なわけですので、
実際のところ、言語の種類はそれほど重要ではありません。
大事なことは『A さんの「思い」 B さんに如何に伝えるか』です。
日本語から英語に訳す時、「難しい」事はあるでしょうが、
「その単語が無いから意思疎通できません」なんて事はないですよね?

プログラムも同じで、「その機能が無いからできません」とは限りません。
意訳して(⇒他の方法を用いて)、同じ結果になるように作れないか?が重要になります。

そのためには、最低1つは深く言語を習熟する事が良いと思いますよ。