読者です 読者をやめる 読者になる 読者になる

僕はプログラミングのどこに面白みを感じていたのか


どうも。ヒビ(@hiibii256)です。

プログラミングしてますか?ようやく、HTMLとCSSに手を出してみました。
今まで、Web系と呼ばれる言語の勉強はしてこなかったので、新鮮です。

でも、イマイチなところもあるんですよね^_^;
苦手というか、向いていないというか…

それはなぜか?と考えた時に、HTML・CSSによるプログラミングが、今までのプログラミングと大きく異なるものだということに気づきました。

順次・分岐・反復がある?


フローチャート - Wikipediaより引用

図は1〜10までの値の合計を求めるというものです。
変数nにて、1〜10の値を用意していきます。これは+1を繰り返せばよいわけですね。
その変数nを変数sに足し合わせていくことで1〜10の合計を変数sに求めることができます。 「n < 10」という条件を満たした場合、1〜10を足し合わせたことになり、ループを抜けます。

これには、以下の要素があります。

  • 変数の存在
  • 変数の値が動的に変化する
  • 上から処理する(順次)
  • 条件判定(分岐)
  • 繰り返し(反復)

これらのうち、HTML・CSSにも言えることは変数の存在くらいでしょうか。
一応、上から処理することも関係しているわけですが、それはデザイン上のお話。

これらの要素のうち、「順次」「分岐」「反復」というのはとりわけ大事。

大事な3要素のあるプログラミングを構造化プログラミングと呼びます。
そして、この構造化プログラミングであることに面白さを感じていたのです。

美しいプログラムは気持ちいい

構造化のされたプログラムを書くには、どういった順で書くべきなのか前もって考える必要があります。

もちろん、コンピュータで書いているわけですから、削除することも追加することもできます。それも、いとも簡単に。
しかし、そうやってテキトーに書いていると、あとから、必ず後悔します。
つぎはぎだらけのプログラムは美しくありません。また、読みにくいのです。

綺麗にプログラムを書くと意気込んで、書き終わったプログラムが美しいものだったときの、あの気持ち良さ。あれを求めてプログラミングしている、そう言っても過言ではありません。

より短く、でも読みやすく。そして、素早く

プログラムは同じ動作をするものでも、全然違うということがよくあります

同じ結果を出力しているのに、なぜこんなにも、長いプログラムなのか?
なぜ、読みにくいのか?なぜ、遅いのか?

「コードの長さ」「可読性」「処理時間」

これらは、トレードオフの関係にある場合と、そうでない場合があります。トレードオフの関係にある場合はともかく、そうでないにもかかわらず、処理が遅い、コードが長い、読みにくいというのは許されません。ここにプログラマーの差が出てしまうわけです。

この差に驚きや凄さを感じていたわけです。

まとめ

まとめてみるとこんな感じ。

  • 構造化プログラミングであること
  • アルゴリズムを考えること
  • 同じ動作でもコードが全く異なること
  • プログラマーの腕がプログラムにあらわれること

これらが、面白さに関わっていたのです。

おまけ・オブジェクト指向について

ここからは、より深掘りした話。専門用語のわかる人だけの話。

オブジェクト指向は厳密に言えば、構造化プログラミングとは別ものです。

しかし、オブジェクトという概念を持ち込んだだけであり、中身は構造化されたものです。
メソッドの中身はどうですか?構造化されていますよね?

オブジェクト指向も構造化プログラミングであるといえるのです。