はじめに
こんにちは
システムチームのTです。
先週のチーム内MTGの中で、プログラムの何が面白いかという話がありました。
自分がプログラムのどこにひかれているのかをこのブログで考えてみようと思います。
大きく分けて2つあります。
①ロジックを考える面白さ
ここが一番大きいと個人的に考えています。
例えば、1~100歳までを対象とする年齢当てゲームを作るとします。
この機能を実装するなら、
いろいろと条件や仕様を無視して考えた場合、ロジックとしては、下記になると思います。
①50歳以上か以下かをはじめに見る。
②50歳以上なら、75歳以上か以下かを見て、
50歳以下なら、25歳以上か以下かを見る。
③以下同様に、範囲内の半分の数値以上か以下かを見ていく。
④最終的に、答えが1つになる。
という風に考えられます。
単純に総当たりすることもできますが、
上記の方法だと、7回で年齢を当てることができます。
つまり、最大で100回かかるものを7回にまで短縮することができるようになります。
このように、まるでパズルを解くかのような面白さがあります。
自分としては、それ以上に、美しい論理を考えることが楽しいです。
コードから考えるなら、
少ないコードであらゆる条件を網羅したものが書けた時がプログラムをしていて楽しい瞬間です。
②プログラムの世界観
見出しでは言葉が足りないので、少し補足すると、
記号的な操作にまつわるトピックスの興味深さ
が面白さだと考えています。
このことに気が付いたのは、ZENNのある記事を見たからです。
プログラムと、『論理哲学論考』の共通点について書いている記事です。
https://zenn.dev/purenium/articles/logisch-philosophische-abhandlung-weltanschauung
『論理哲学論考』の
物が事態のなかに現れることが可能であるなら、その可能性は物のなかにすでにあるのでなければならない
という記述を、
javascriptのtoUpperCase()メソッドを通じて理解するという内容です。
toUpperCaseメソッドは、呼び出す文字列の値を(文字列でない場合、文字列に変換して)大文字に変換して返します。
なので、数字(Number型)の場合は、エラーを吐きます。
つまり、Number型はtoUpperCaseメソッドで大文字になる可能性を持っていないということです。
逆に、文字列(String型)は、大文字になる可能性を持っています。
ここに、『論理哲学論考』の可能性は物のなかにすでにあるという記述との共通点を見出しています。
個人的には、すごく面白く読んだもので、かなり印象に残っています。
なので、自分はこういうかなり抽象的な話にプログラムの面白さを見出しているのではないかと思います。
以上2点が自分がプログラムに感じる面白さです。