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のカスタマイズみたいなものである。