C言語

printf(“Hello, World!”);の必要性

Boltzmanです.
さて今回は「printf(“Hello, World!);の必要性」という題です. プログラムに精通した人でなくても, プログラムを触ったことのある人間なら, この題に首をかしげるかもしれません. printfはプログラミングを始めた多くの人間が一番初めに知るであろう関数であり, 基本中の基本です. 疑うべきもなく必要である, と多くの人は考えることでしょう. 実際その通りです. なので, この記事はプログラミングを触ったことがある人に対してではなく, プログラミングを触ったこともない人に向けてのものになります.

私がプログラミングの世界に, それこそ”Hello, World!”と入っていく前, 私はとにかくprintf(“Hello, World!”)の王道を嫌いました。それは, その時の自分がprintfの重要性を理解していなかったからだと思います. 人間, 年を経るごとに, 物事をそのまま受け止めるということができなくなっていくように思います. 私がプログラミングを学んだのは高校3年の受験後で, まあ相当ひねくれていました. しかし, 今振り返ってみると, printfは初めに習う関数たちの中で最も重要であるように思われます.

さて, printfという関数は、端的に言えば表示のための関数です. 一番初めの、printfだけのプログラムだとパッと見てあまり気づかないかもしれませんが, printf(“”);の中に書かないことは, どれだけプログラムに書いてあっても表示されません. 現に, “Hello, World!”のプログラムも, 実行結果には”Hello, World!”としか表示されませんが, 他にも#include だとか, int main(void)だとかいろいろ書いてあると思います. これらは”おまじない”だから表示されないのではなく, printfされていないから表示されないのです.
ここからプログラムをいろいろと自分で書くようになっていって, 例えば足し算をするプログラムや, 素数を自動生成するプログラムや, 最小二乗法によって直線の式を導出するプログラムを書いても, 結果をprintfしなければ, プログラムを実行しても何も起こりません. より正確には, パソコンは足し算したり素数を生成したり直線の式を導出したりして入るのですが, その結果を我々に教えてくれません. つまり, 少なくとも初期のプログラムでは, printfしなければ何をプログラムしても意味がないといえます.
ではprintfの意義は結果の表示だけかといえばそれも違います. これも初期の短いプログラムではわからないとは思いますが, プログラムが長くなると, プログラムがうまくいかない時に, どこが間違っているのか判断するのが難しくなります. その理由は, 表示されるのが結果のみだからで, 途中の計算がどこまでうまくいっていて, どこから間違っているのかがわからないからです. このようなときにもprintfは使われます. 随所随所で途中結果をprintfすることによって, どのあたりが間違っているのかを絞り込んでいきます.

 とりあえずはこんなところでしょうか. プログラムを始めたばかりだと, やはり実感としてわかりにくいかもしれませんが, 「絶対printf許さないマン」から, 「なんとなく腑に落ちない」くらいになれば上々だと思います. それではまた.