2.1 プログラミングの基礎知識
2.1.1 プログラミングとは
プログラミングとは「コンピューターにどのような動作をさせるかを予め指示する行為」である。ここでいうコンピューターは、我々が今使っているノートパソコンだけではなく、TSUBAME のようなサーバーなどや、電子レンジ等の中に入っている制御装置(残り何分かを表示したり、どのボタンを押したかで動作を変えたり)も指し示す。
コンピューターは、私達よりもずっと速く、そして正確に計算することができるが、人間の言語を理解できない。人間の言語は思っているよりも曖昧であり、一方コンピューターはすべて0と1の2進数によって動作し厳密に指示を与えなければならない。 そのコンピューターが理解できる形で指示するために、プログラミングをするのである。
TIP
プログラミング"言語"というものは様々あって、「C++」はその中の一つである。他にも「Python」「JavaScript」「C#」など言語がある中で今回C++を選んでいる理由は2つ。
- 大抵の言語はC++の(もっと言えばCの)派生だから。C++で一通りプログラミングを勉強してしまえば、C#など他の言語にすぐに乗り換えられます。
- C++が比較的コンピュータ寄りだから。
2.1.2 コンパイルとは
先述した通り、コンピューターは2進数によって動作する。よって与える命令も2進数でできるだけコンピューターでの動作に特化した形式になっている(「機械語」の形になっている)のだが、これを人間が読むことは困難である。よって比較的わかりやすく、かつ機械語に変換できる言語としてプログラミング言語を用いる。
プログラミング言語によって記述されたプログラムは、コンピューターが直接命令として理解できる形ではなく、よってコンピューターが読める形に変換しなければならない。 この操作を「コンパイル」と呼び、コンパイルによって生成された01からなるデータ(バイナリ)をコンピューターは読み込む。
2.1.3 OSとは
OS は、Operating System の略。この講習会中では、上のグラフの「機械語」を読み取って、コンピューターを実際に動かす部分を担当している。他にも、ユーザーの様々な操作(画面上のポインタを動かす、キーボードの入力を受け付けて適切に情報を分配する、HDD/SDD を操作する、などなど…)とコンピューターをつなぐ役割を果たす。
Windows / Mac (Macintosh) は主要な OS である。受講者の大半はこのどちらかのOSを使用しているだろう。
他にも、開発においてよく使用される OS として Linux が存在し、いくつかの班では Linux を用いて作業する。
Mac OS は Linux に「近い」(初学者である間は Linux の一種だと思っても良い)が、Windows は Linux とは大きく異なる OS なので、Windows ユーザーはよく WSL を使用する。 WSL は Windows Subsystem for Linux の略。コンピューターの内部に、仮想的な Linux のコンピューターが入ってると考えると良い。
Ubuntu は、Linux ディストリビューションの一つで、Linux のカスタマイズみたいなものである。