コンピュータに対して、してほしいことを伝えること。
こちらが使う言語が"プログラミング言語"であり、コンピュータが解する言語が"マシン語"である。
その間を取り持つ翻訳者が、"コンパイラ"、"アセンブラ"である。
普段我々が使う言語により近いものは、"高水準言語"と言われ、こちらのしたいことを簡単に(コンピュータのことをあまり考えずに)表記することができる。ただ欠点もあり、マシン語からはかなり遠い。なので翻訳を通すと、マシン語の表記量は膨大なものとなり、コンピュータの負担は増す。その逆も然りで、コンピュータの負担を減らそうとすれば、我々の負担が増えるのだ。現在は、コンピュータの高性能化が進み、コンピュータの負担もあまり考えなくて良くなってきているので、人間に優しい時代になってきていると言える。プログラミングの裾野も広がっているだろう。
プログラミングのためには何を学ぶべきなのか。
まず、プログラミング言語を学ぶことが必要なのはわかる。
これを知らなければコンピュータに意思を伝えることができない。この時、より人間の感覚に近い、高水準な言語から始めるのが楽だろう。現実の社会でも起きているが、翻訳者が優秀になり、意識しなくなれば、外国語(コンピュータの場合はマシン語)を習得しなくても問題はない。
他者との共同作業の場合は話が違ってくる。
プログラミング言語はコンピュータとのやりとり以外にも、人間とのやりとりにも使われるのだ。その時、皆が使っている言語を知らなければ協力はできないし、流行りの言語を勉強しなければならないかもしれない。もしくは昔広く使われていた言語を習得しなければならないかも。
コンピュータに何かしてほしい時に、コンピュータができることとできないことを知っておくのも重要だ。
空を飛べといってもコンピュータは飛べない(飛べるコンピュータもあるかもしれない)。その時にコンピュータのできることを知っているとより自由にコンピュータを操作できる。コンピュータの構成や設計、OSなどの仕組みを知っていると良いだろう。
データ構造とアルゴリズム
コンピュータに対するイディオムのようなもの。コンピュータの考え方に即したもの。だが、実際に人が考える時にも同じようにできるのかもしれない。未だ僕はこれをうまく捉えられていないのかもしれない。