はじめに
前回以下で、クラウド開発環境PaizaCloudクラウドIDE(ここからはPaizaCloudと書きます。)でのHello World(C言語編)を書きました。
クラウド開発環境PaizaCloudクラウドIDEでHello World(C言語編)
その続きとして今回はC++編のその1です。
もし実際にやってみる場合でPaizaCloudを利用する場合のやり方が必要な場合は上記の前回の投稿等を参照してください。
C++でのHello World その1
今回のソースプログラム
早速ですが説明の前に今回のソースプログラムです。
#include <iostream>
using namespace std;
int main(int argc, char* argv[]) {
cout << "Hello World !" << endl;
return 0;
}
コンパイルと実行例
ソースファイル名がHelloWorld1.cppとして以下のようにコンパイルします。
$ g++ HelloWorld1.cpp -o HelloWorld1
以下のように実行します。
$ ./HelloWorld1
nanoエディタで編集したとしてPaizaCloudで以下のように出来ました。

前回のソースプログラムとの比較
前回のC言語編のソースプログラムは以下です。
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("Hello World!\n");
return 0;
}
このプログラムと比較してみます。
1. 使うライブラリが違う
- C は
<stdio.h>を使ってprintfで出力 - C++ は
<iostream>を使ってcoutで出力
👉 出力の仕組みを提供する「部品(ライブラリ)」が違います。
2. 書き方(文法)が違う
- C の
printf("Hello World!\n");は、**書式指定(%d や %s)**を使えるのが特徴 - C++ の
cout << "Hello World !" << endl;は、<<をつないでどんどん出力できるのが特徴です。
👉 C は関数呼び出しの形、C++ は演算子を並べる形
3. 改行の書き方が違う
- C では文字列の中に
\nを書く - C++ では
endlで改行(もちろん\nでもOK)
まとめ
C言語とC++は、どちらも「文字を画面に出す」ことができますが、
- 使うライブラリ
- 書き方(文法)
- 改行方法
といった部分に違いがあります。Cは printf の書式指定が便利、C++ は cout の直感的な書き方が便利、といった特徴を持っています。
名前空間(namespace)について補足
名前空間とは
C++では、たくさんの機能(クラスライブラリ等)が用意されています。そして、プログラマーが自分でも名前をつけて同じようなものを作れます。
でも、同じ名前のものがいくつもあると、どれがどれだかわからなくなります。
そんなときに便利なのが「名前空間(namespace)」です。
たとえば、std::cout の std は名前空間の名前です。
これは「std というグループの中にある cout」という意味です。
using namespace std; とは?
毎回 std::cout と書くのはちょっと面倒です。
そこで、usingを使うことで、std を省略できるようになります。
なぜC++が生まれたのか(初学者向けに)
「C言語で十分に動くのに、なぜC++が作られたのか?」と疑問に思う方も多いと思います。ここでは、大規模開発の課題と、その解決としてのC++ という観点で、初学者向けに説明してみます。
C言語の強みと限界
C言語はとても効率的で、高速に動くプログラムを作れる言語です。OSや組み込み機器など、多くの分野で使われています。
しかし、プログラムの規模が大きくなると次のような課題が出てきます:
- どの変数を誰が使っているか分からなくなる
- 修正すると別の場所に影響が出やすい
- 役割分担して開発するのが難しい
👉 一人で小さなプログラムを書くなら問題は少ないのですが、複数人・長期間での開発では管理が大変になってしまいます。
C++が生まれた目的
C++は「Cの速さ・効率」を残しながら、大人数での開発や大規模なソフト開発をやりやすくするために設計されました。
具体的には、プログラムを「部品(モジュール)」のようにまとめて扱える仕組みを導入しました。
👉 例えるなら、Cが「一枚の大きな紙に全部書いていく」感じだとすると、C++は「パーツごとに分けて作って、あとで組み合わせる」イメージです。
パラダイムシフトとしてのC++
- C:処理を順番に書いていく、一筆書きのようなスタイル
- C++:処理を小さな部品にまとめて、それを組み合わせるスタイル
この「書き方の考え方」そのものが変わったことを、プログラミングの世界では パラダイムシフト と呼ぶことがあります。
さらに、このパラダイムシフトは オブジェクト指向への移行 として位置づけられます。ここでは詳細には触れませんが、C++は「オブジェクト指向」という新しい考え方を取り入れることで、大規模開発により強く対応できるようになったのです。
まとめ
- Cは速くてシンプルだが、大規模開発には苦労が多い
- C++はその弱点を補うために登場した
- プログラムを「部品化」して組み合わせる発想に変わった
- その流れの中で オブジェクト指向 が導入された
つまりC++は、Cを発展させて大規模開発でも対応できるようにした言語と考えてみると分かりやすいでしょう。
※注意書き
上記内容は初学者向けにできるだけ平易な表現でまとめています。そのため、専門的に見ると細かい点では正確さを犠牲にしている部分があるかもしれません。ご了承ください。
さいごに
なぜこんな流れで書いたかというについてです。
私がC言語を実務で使いはじめた時、C++はまだ一般的には普及していなかったと記憶しています。最初はC++を習得しなくてもいいとは思ったのですが、オブジェクト指向のパラダイムシフトへの流れでC++も必須になってきました。
その後、JavaやC#も普及してきてオブジェクト指向も一般的になったと思います。それではこのオブジェクト指向が大成功したかどうかというといろいろな考え方があると思います。
それでも未だにC言語を学習してC++への学習へ進むというのはプログラミング学習の有効な流れの一つと思っています。
続きは以下です。
クラウド開発環境PaizaCloudクラウドIDEでHello World(C++編 その2)
ありがとうございました。