t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

プログラミング言語はコンピューター語ではなく人間のための言語

プログラミング言語とは何か。
初心者に向けて、よく次のような説明がなされる。

コンピューターは日本語や英語で指示しても理解できない。だからコンピューターが理解できる言葉、つまりプログラミング言語でコードを書く必要がある。

プログラミングを学び始める段階ならこの説明で何の支障もない。

と、以前までは思ってたんだけど最近は、初めからきちんと伝えておいたほうが良いんではないかという気がしてきたのでこの記事を書いた。

プログラミング言語は本当はコンピューター語ではなく、人間のための言語である。だから動けば何でも良いわけではなく、基本的には人が読むことを想定してコードを書くべきである。

プログラミングから実行までの流れ

人間がアイデアをプログラムコードに落とし込むと、コンパイラまたはインタープリタと呼ばれるソフトウェアがそれを機械語に翻訳し、最終的にコンピューターによって実行される。
f:id:t-hom:20180430104346p:plain
※ただし、間に中間言語が挟まったり、仮想マシン上の実行だったりと言語によってこの流れは必ずしも同じではない。

人間が機械語を効率よく読み書きできるなら、コンパイラインタープリタは要らない。
機械語とは、以下のようなコードになる。

0100101011110101011101010100001...
※イメージです。内容はデタラメ。

コンピューターは0と1しか処理できないのだ。

これを読んで理解しろというのは無理がある。
だから、コンピューターにもっと簡単に指示を出すために、人間が読めるプログラミング言語が設計され、翻訳者となるコンパイラインタープリタが作られた。

プログラミング言語が作られたワケ

人間が話す言葉(自然言語)は時と場合で意味が変わり、また表現も無数に存在するためにプログラミングに適さない。もしコンピュータが解釈を間違えたために飛行機が墜落したり、大事な取引の金額を間違えたりしたら洒落にならない。だから厳密に意味を定義され、それ以外に解釈できないような言語が必要だった。そして作られたのがプログラミング言語である。

このように形式的に意味が定義されている言語を形式言語という。
つまりプログラミング言語は人間のために設計された形式言語である。

主張

人間の人間による人間のためのコードを書くべし。
プログラミング言語は、そのために作られたのだから。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。