C++ 入門/背景

柴田祐樹,東京都立大学,情報科学科
Creative Commons License (CC BY-NC 4.0), 非営利目的の再配布可能
戻る

本入門は東京都立大学で行われたプログラミング基礎演習で得られた知見を反映させるものである.私は大学のプログラミング演習を担当する稀な機会を得たため,これを活かしたいと思っている.本演習関係者の協力によりこの資料は作られている.

対象とする読者は,少なくとも Personal Computer を操作することが可能な人間である.Operating System, Central Processing Unit, テキストエディタ, プログラム,シェル,などと言った用語がわからない人は,これらについて少し調べてみると良い.だが,神ような知識は前提としない.

C++ は最速を目指す言語である.コンパイラの機能が足りず,機械語で書いたのと同じ速度を達成できないのであれば,どんなに優れた文法であっても無理に取り入れることはない.この理念から,文法の実装が遅れ,他の高級言語と比べ書きづらいと思われるかも知れないが,単純な繰り返し文が,他の言語で高速化のためのライブラリを駆使したのと同等以上の速度が出るのであるから,科学技術計算の基礎を学ぶ初学者にとって有益である.また,互換性を重視している言語である.これは欠点とも言えるが,C の世代から現代に至るまで互換性が保たれている.著者はプログラミング言語というのは情報科学の発展により将来的に存在しなくなる,あるいは一つに統一されるだろうと考えていて,これは処理を記述するために必要なものではないと思っている.そのため,いつかは必要の無くなる新しい言語を覚え続けるより,追いついていける程度で現実的に改定されていく C++ をこの点からも著者は気に入っている.

教育を受けるものに理解してもらいたいのは,理論には公理(話の起点,あるいは仮説の承認)が必要であるということである.物事というのは突き詰めればより根本的な仕組みへたどり着くことを経験的に知っていると思う.だが,例えば部屋の掃除をするのに,箒を構成する木材,その中の維管束,細胞,セルロース,炭素,素粒子,などと理解していては,一向に掃除ができないだろう.おそらくその箒は,特にこういったその仕組みを知らなくても,折れることなく掃除に耐えうるだろうことは認めて誰もが掃除を始めると思う.世界の仕組みを考える前に,汚い部屋で病気になって死ぬわけには行かないからだ.箒というのは,掃除をすることに使える.ひとまずこれ以上考えないで掃除を始めなければならない.こういった様に,ある物事を学ぶためにたとえ回り道になっても,その中の一部の仕組みの理解を諦め,必要な性質を一度認めてから考え始め,その物事の周りを十分に考えうるだけの経験が得られてから,再びその仕組みにの考察に戻るという考え方が,いつでも必要なわけである.プログラミングのような決まり事が多い割に多くの経験を必要とする技能の習得において,この考え方が必要であると著者は考えている.

あと若い人,速度にこだわってほしい.年を取るとプログラムの実行速度に気を配らなくなっていくとよく聞くが,確かにそうかもしれないと最近の自分を見ていて思う.高速なプログラムは短時間で処理を終えることが可能であるため,エネルギー消費の削減に貢献する.