プログラムするとは、具体的には何をするのか?

昔はこのように直接数を打ち込んでいました。
そのころのコンピュータは、数を表示するディスプレイと16進のキーボードでこの16進の数値を直接打ち込んでいたわけですが、さすがにこれでは効率が悪いし、普通の人間には何がなにやら分からないではないか、というわけでちょっとでもわかりやすいようにとニーモニックという表記方法を発明しました。
それは
アドレス
ニーモニック
意味
0000
MOV A,10H
087H
Aレジスタに次の値をいれろ
0001
010H
010H
0002
STA 1256H
076H
Aレジスタの中身を次のアドレスに入れろ
0003
056H
アドレスの下位
0004
012H
アドレスの上位

というように書きます。
087Hと書くよりは「MOV A、10」と書いた方が普通の人にはわかりやすいですね。
ニーモニックで書いたソースファイルはもちろんCPUが読めません。
それを機械語に翻訳するのが「アセンブラ」と呼ばれるプログラムです。
このようにプログラムの初期には

1  エディタソフトでニーモニックのソースファイルを作る。
2  アセンブラによって機械語に翻訳する(アセンブルする、と言う)

という作業をしていました。
しかし、大きな(ウィンドウズとくらべればささやかですが)DOSのプログラムを書く場合はこれではまだ不便でした。
当時はCPUパワーが不足していたので、ちょっとしたプログラムでもアセンブルに10分以上かかったからです。
そこで、プログラムを部分に分けて完成した部分はアセンブルしないで変更部分だけをアセンブルし直す方法が考え出されました。

部分部分はアセンブルされてオブジェクトファイルというファイルで保存されます。
修正された部分は新たにアセンブルされ、最後に「リンカ」というプログラムで全体を「リンク」するようになりました。
現在のウィンドウズプログラムもこの方法が引き継がれています。

ウィンドウズプログラムのソースファイルはニーモニックではありません。
C++で書かれています。
これはニーモニックで

MOV  A,124H
STA  2300H

と書くところを

int tanka; // 単価

tanka = 124;

などと書きます。あくまでも例ですが、これは初めての人が見ても何をやっているか何となくわかりますね。

ニーモニックのソースを機械語に翻訳するのはアセンブラというプログラムですが、このC++を機械語に翻訳するのはコンパイラというプログラムです。

ウィンドウズができはじめのころは

1  エディタでC++のソースコードを書く。
2  コンパイラでソースコードをコンパイルする。
3  リンカでリンクする

という手順でプログラムを作成していました。

実行すると一度で動くことはありませんから、どこが間違っているか診断する必要があります。
この間違いを探す作業をデバッグといいます。
間違っている部分をソースコードを眺めて修正するのはそれは大変な作業です。
そこで、誰かが実際にプログラムをちょっとづつ動かしながら考えた通りの動きかたをしているかチェックするプログラムを開発しました。
これがデバッガというプログラムです。

つまり

1  エディタでC++のソースコードを書く。
2  コンパイラでソースコードをコンパイルする。
3  リンカでリンクする
4  デバッガで動作が正しいかチェックする
5  動けば終わり、動かなかったらソースをを修正して2へ戻る

という手順を踏んでいました。
これでできないわけではありませんが、またどこかの頭の良い人が統合環境というものを考え出しました。
統合環境はいろいろありますが、VC++はその一つです。
ソースエディタ、コンパイラ、リンカ、デバッガが一つのプログラムとして働きます。
ソースの編集はもとより、コンパイルしてリンクしてデバッガを立ち上げるという作業がボタン一発でできます。

というわけで、VC++のなかではC++のソースコードをコンパイルし、リンクし、デバッグを起動して実行ファイルを読み込み、実行ということをしているわけです。
VC++は以上のように多機能なので、プログラムもとても大きく、パソコンで実行するためには十分な量のRAMを必要とします。