「printf(“Hello World\n”);」を設計図で考える①

 

「プログラミング言語C 第2版 ANSI規格準拠 B.W.カーニハン/D.M. リッチー著 石田晴久訳」の冒頭に出てくるサンプルソースコードです。プログラミング言語を始めて学ぶ時のサンプルソースコードとして”Hello World”は有名ですね。

最初は何も考えずに「こういうものだ!」と覚えたのではないでしょうか。型を覚えることはとても大事です。ここでもう1つ設計図も覚えておくと、後のより複雑なプログラムの理解に役立ちます。

この設計図は「モジュール構造図」と呼ばれる設計図です。何も説明しなくても、既に意味を理解できてしまっているのではないでしょうか。その通りです。

mainと名前が書かれた長方形は、自作関数を表します。
printfと名前が書かれた両脇に縦棒が足された長方形は、自作ではなく既に用意されているライブラリを表します。
mainの四角形とprintfの四角形を結ぶ矢印は関数呼び出しを表しています。

図(絵)的に表現されると分かりやすいですね。もう少し図に情報量を足しましょう。

これも何も説明しなくても、意味を理解できてしまっているのではないでしょうか。その通りです。

♂は関数と関数の間を行き来するデータ(引数や戻値)を表しています。正式にはカップルと言います。丸に付いた矢印は方向を示してます。

main関数からprintfライブラリ関数へ、”Hello World”という文字列が渡っています。逆にprintfライブラリ関数からmain関数へ、出力文字数が渡っています(但し、ソースコード上は明確に実装されていません)。
カップルは必要な場面でのみ表記することが良いです。全てを表記すると図が煩雑になる傾向があります。

 

どうでしょうか?このモジュール構造図を使えるようになると

  • 自分が作ったソースコードを、ソースコードを読めない人、ソースコードを読む時間が無い人などにもレビューしてもらいやすくなる
  • 自分以外の人にソースコードを書いてもらう時に、自分の考えている通りに作ってもらえる
  • 人が作ったソースコードを初めて読む時、ただ読むだけではなく、構造的に理解できる

など大きな効果があります。
さて、モジュール構造図にはもう1つ重要な図形があります。その話題は次の記事で紹介します。