僕と数学とプログラミング

僕は数学がどうも苦手なようだ。 趣味でプログラミングをやっているが、周りからはなんでプログラミングやってるのに数学できないの?と言われることがある。

僕がプログラミングを始めてからまだ2年しか経っていないが、ゲーム開発を除いて数学を使ったことはない。

ということで今回は数学とプログラミングについて書こうと思う。

まずプログラミングって何ができるのかについて書く。

puts "Hello,World"

これは画面にHello,Worldと出力するプログラムだ。 言語はRuby。 putsはこのあとに続くものを出力しろという命令だ。"(ダブルクォーテーション)にくくられたものは文字列となる。

分岐処理

num = 5

if num >= 5 then
    puts "5以上"
else
    puts "5未満"
end

これは分岐処理だ。 英語でifはもし〜ならという意味があったと思うが、それと同じようなものだと思ってもらって良い。
if num >= 5 then は「もし、numが5以上なら以下の処理を行う」という意味だ。
else は「そうじゃないなら以下の処理を行う」という意味。
ほかには elsif というものもあって、これは

num = 5

if num >= 5 then
    puts "5以上"
elsif num < 5 then
    puts "5未満"
end

こう使う。
elsif num < 5 then は「そうじゃなくて、もしnumが5未満なら以下の処理を行う」という意味になる。

ifで始まった文はendにぶつかるまで続く。 分岐がおわったらendを書く。

繰り返し処理

num = 0

while num < 5 do
   puts "こんにちは" 
   num = num+1
end

これが繰り返し処理。 whileも〜の間という意味があったと思う。

while num > 5 do は「numが5未満なら以下の処理を行う」という意味を持つ。 これはendにぶつかるまでの処理を繰り返す。 現時点ではnumは0なので延々とこの処理を行うことになる。

なので、どこかでnumを増やさないと無限ループとなる。
それを防ぐためにnum = num + 1 を使う。 こうすると1回処理を行うごとにnumが1増える。
すると5回目でnumは5になり、5未満という条件から外れて繰り返しがおわる。

まとめ

基本的な処理はこのくらいだが、数学の要素はあっただろうか。 ゲームの物理演算ならともかく、一般的な処理に数学の知識はほぼ必要ないように思える。 webエンジニアなどはサーバーから画像や文字をダウンロードして表示という処理を行うが、これも数学はいらないと思う。

もし数学が「物事の手順を考える」ことなら、プログラミングは数学と密接に関係があると認めざるを得ないが・・・。

何が言いたいのかというと、エンジニアの採用試験に数学は必要ないだろいいかげんにしろということだった。