#2-1 Hello World (前編)
こんにちは、世界?
どんなプログラミング言語を学ぶにも、プログラミング初心者は「Hello World」というプログラムを最初に作る。
これは、ただ単に画面に「Hello World」と表示するだけの、何の意味もないプログラムだ。
なぜ、この何の意味もないプログラムを皆が挙って学ぶのかというと、C言語の開発者であるデニス·リッチーらが書いた「The C Programming Language」という本の最初に紹介されたものだったからだ。
プログラム「Hello World」を作る
プログラムを作るには基本的に次のような流れになる
-
ソースコードを書く
-
プログラムの実行
1.ソースコードを書く
料理を作るのには食材が必要不可欠。それと一緒で、プログラムにはソースコードが必要。
スーパーに行って食材を買ってくることもできるけど、食材を自分で育てて料理したほうが、達成感が大きい。だからこのブログでは、ソースコードをコピペできる形では公開しないことにする。
ちょっと話がそれたけど、テキストエディタを使ってソースコードを書くってことは、イメージ的には畑で野菜を育てる作業と同じだ。
テキストエディタを使ってソースコードを書く
Visual Studio Codeを開くと、上記のような画面が現れるので、「Start」の真下にある「New file」をクリックする。
すると下のような画面が開くので、そこにソースコードを書いていく。
日本語や英語にそれぞれの文法があるように、プログラミング言語にもそれぞれの文法がある。
C++の文法は英語に似ていて、単語と単語の間には半角スペース
大事なことなのでもう一度言います
半角スペース
を入れます。理由は後々。
半角英数字入力になっていることを確認して、ソースコードを書くことがとっても重要。
いいですか、
半角英数字 ですよ。
上記が、Hello, Worldと表示させるためのソースコードだ。
Hello Worldが4行目にあることは分かるけど、あとは何のことやらさっぱり。
ってことで、1行ずつ意味をみていこう。
1行目
英語でincludeと言うと「含む」という意味を真っ先に思い浮かべるだろう。
でも、辞書的には「入れる」という意味もある。
C++でもincludeは「入れる」という意味になる(と解説しておく)。
じゃあ、何を入れるのか?
<>内にあるiostreamを入れるのだ。
いやいやいやいや、そんな英語無いし。とツッコミを入れたくなる。
iostreamは、input output streamの略で、入出力のデータの流れという意味になる。
意味が分かっても、データの流れ?だから何?という感じ。
実は、iostreamはC++に最初から用意されている機能の一つ。
どういう機能かと言うと、キーボードなどからの入力と画面への出力機能だ。
他にもcstdlibやcmathなど様々な機能が用意されていて、必要に応じて使い分ける。
今回はHello Worldと画面に表示するので、画面に表示する機能を持つiostreamを使う。
つまり1行目を訳すると
「iostreamという機能を入れてね」
2行目
空白。無くても可。
でも、あったほうが区切りが分かりやすいし、なんかかっこいい(笑)
3行目
intはintegerの略で、整数という意味。こいつの存在意義は、5行目で分かるのでとりあえず、無視。
mainは英語だと「主要な」という意味だけど、C++では意味はあまり持っていない。
でも、C++プログラムにとってめちゃくちゃ重要な“機能”を持っている。
その機能とは…
“プログラムの実行開始位置を表す”機能
はい、めちゃ重要。これが無いとコンピュータは迷子の子猫ちゃん。
ってことで、どんなプログラムでもこいつは存在する。
そんな重要な3行目を、現段階でちょっと無理やり訳すと、
「整数。プログラムの開始位置はここですよ。」
4行目
この行は省略のオンパレード。C++、お前省略好きすぎるやろ。
まず、stdはstandardの略で、C++では「標準」という意味だと理解しておく。
次の「::」は記号なので、もうどうしょうもない。ここでは「の」と読んでおく。
続いてcout。はい、出ました、お得意の省略。これは、console outputを略したもので、端末への出力を意味している。
その後に現れる<<は、データが流れる方向を表す。これはまた後々。
ここでやっと満を持して、“Hello World”の登場。「“”」で囲まれた部分の文字が表示される。
なので、“こんにちは世界”と書いてやれば、「こんにちは世界」と表示されるし、“Mana Takase is very cute.”と書けば、「Mana Takase is very cute.」と表示されるわけだ。
std::はさっきと一緒。
その後の、endlはend of lineの省略で、行の終わりという意味で改行する機能を持つ。
最後のセミコロン(;)は、「~しろ」という命令を表す。
4行目を訳すると、
「標準の端末への出力で、「Hello World」と画面に出力、これでこの行終わり、改行しろ。」
5行目
returnはC++でも「返す」という意味。
何を?
その後ろにいる0を返す。ちなみにこの0、プログラムはここで終わりですよと知らせる機能を持っている。
じゃあ、プログラムの終わりを示す0をどこへ返すのか?
イメージ的には3行目のintに返してる。そう、3行目の解説で無視されたintにだ!
3行目ではintは整数とだけ説明したけど、ちゃんと説明すると、「プログラムの終わりを表す0という整数が返ってきますよ」とパソコンに教えているわけだ。
というわけで、5行目を訳すと
「プログラムの終わりを告げる0を、最初の部分に返せ。」
ここまでを踏まえて、改めてこのコードを丁寧めに訳すると
1 iostreamという機能を入れてね。
2
3 プログラムの終わりは整数で知らされるよ。プログラムの開始位置はここですよ。
4 標準の端末への出力で、「Hello World」と画面に出力、これでこの行終わり、改行してね。
5 ここで終わりだからプログラムの終わりを告げる0を、最初の部分に返してあげてね。
意味が理解できて、満足した気になりましたか?
でも、よ~く思い出してみてください。
このソースコードを書いている目的は何ですか?
そうです、Hello Worldと画面に表示することが目的です。
ってことで、次回に続く。