本講義では、直接的には、プログラミングの技術を学び、 またそれを通じて計算機の仕組みを学ぶ。 しかしながら、プログラミングの技術そのものの習得が目的では無く (大学は専門学校では無い!)、 プログラミングを行うことによって「自分の頭脳の延長」として 計算機を自在に使いこなせるようになることを目的とする。 パソコン上でOfficeなどの出来合いのソフトを使うことは、紙と鉛筆の 延長にはなるが(またそれも大変便利であることは否定しないが)、 頭脳の延長とは言えない。 プログラミングを習得することにより、計算機の「本当の」便利さを 実感し、プログラミングの楽しさを実感してもらえれば幸いである。
(一方、将来数学者になる学生は多くは無く、一般企業に就職する学生が 大半であろう。就職時、あるいは就職後にプログラミング技術が 役に立つことは間違いなく、そのような実際的メリットを否定するものでも無い。 )
レポートは、 「レポートの書き方」 に従って形式を整えて下さい。
最初に学ぶプログラミング言語としては近年はJavaが使用される事が多い。 プログラミング言語としても、現代的で仕様が美しくコンパクト、 複数のプラットフォームで同一のプログラムが動作し、GUIやマルチスレッド 等も使いやすい、等のメリットがある。 初学者にとってのメリットは、配列の添字溢れの警告をはじめとした「優しさ」 が大きいだろうか。 また、rubyやpythonなどのスクリプト言語が同じような理由で採用されることも多い。
一方、C言語はUNIX OSを記述するための言語として生まれ、 CPUの動作と密着した記述が出来る「低レベル」言語である。 メモリ上のアドレスを格納する「ポインタ」を生でユーザに見せている ところが特徴として挙げられる。 誤った記述をするととんでもない動作をすることも多い、「優しくない」言語で ある。 しかしながら、変に隠蔽されていない分、計算機の動作が実感しやすいという 大きなメリットがある。
大きなアプリケーションを大勢で開発するなら現代的な言語が必須であるが、 研究のためのプログラムはCのような小回りの効く言語の方が書きやすいことも多い。
実際に世の中に出回っているアプリケーションの大半は、C++(Cにオブジェクト指向 の機能を加えたもの。Cを含んでいる)で書かれている。
本講義では、とりあえずC言語を学んでいくことにする。 後半は、言語そのものの学習よりは、言語を用いてプログラムを組み立てる ためのアルゴリズムの学習を中心にする予定。