この講義では、前学期の計算天文学 I の内容からもう少し発展した課題を扱 う。具体的には、一応以下のような内容をカバーするつもりである。
週1の講義で本当にこれだけの内容を全部カバーするのはだい ぶ大変なので、まあ、ぼちぼちいきましょう。
なぜ天文学科の講義に「計算天文学」というものがあるかということにも少し 触れておこう。
普通に考えると、ここ何十年かの間に計算機が高度に発達し、理論や観測デー タの処理のために広範に使われるようになったために、計算天文学という名前 の講義でプログラミングを扱うようになったと思うであろう。でも、実はそう ではなくて、「計算天文学」という講義は天文学科では電子計算機が使われる ようになる前から存在していた(らしい)。
記録によると45年ほど前に「手回し計算機」というものを使った「計算天文 学」が行なわれていたそうである。
このように天文学では昔から数値計算が非常に重要であった。
特に、現代的な天文学研究の他のいろいろな学問分野にくらべた特殊性は、 「研究に出来合いのプログラムがほとんど使えない」ということにある。
これにはいろいろな理由があるが、例えば理論シミュレーションでは扱う現象 の空間スケール、密度、温度等の幅が非常に大きく、普通の日常的な対象を扱 う計算プログラムでは多くの場合にうまく扱えないこと、また、流体、重力、 radiation, 化学反応がカップルした複雑な現象を扱う必要があることなどが ある。
観測では、多くの場合に世界に1台しかない望遠鏡とか人工衛星からのデータ を扱うことになるために、どうしてもその装置のために特別な処理が必要にな る。また、天文学研究の重要な部分が「観測装置を作る」ことであり、そのた めには観測装置や観測自体のシミュレーションが非常に重要になってきている。
そういうわけで、天文学研究とプログラミングは非常に関係が深いものになっ ている。
計算天文学 I では言語として Fortran を使ったことと思う。 Fortran は 1950年代に最初の版(Fortran I)が開発された極めて古い言語(実際上、最初 の計算機言語)であるが、Fortran 66, Fortran 77, Fortran 95 と3度に渡る 大きな仕様改訂(拡張)を経て、現在でも計算科学の広い分野で使われている。 特に、
が、それでは、 Fortran だけ使っていればいいかというと、最近はそれでは すまなくなってきている。これにはまたいろいろな理由があるが、端的には、 天文の世界でも、新しく書かれるプログラムには多くの場合 C++ (場合によっ ては Java 等も)が使わ れるようになってきているからである。
C++ は、C言語をベースに1980年代にベル研で開発された比較的新しい言語で ある。C言語自体は、やはりベル研で1970年代に開発されたものであり、当初 は UNIX オペレーティングシステムの記述言語として普及した。さらに、1980 年代にはいってパーソナルコンピュータが普及すると、その OS (CP/M, MS-DOS, Windows)の上での主なプログラム開発言語として揺るぎない地位をし めるようになった。
そうなったのはどうしてかというのは、どうもよくわからないところもなくは ない。当時から C はあまり評判の良くない言語であり、それは C++ になって もあまり変わっていないからである。もっとも、どう評判が悪いかというのを 細かく見ていくと、結局、広くなんにでも使え、しかも計算機の能力を十分発 揮できるように作られているために、あまり見た目が良くないというのが大き い。見た目のわかりやすさというのは本当は重要だが、だからといってこの講 義であまり広く使われていない言語を使うというわけにもいかない。
C++ は、本当は C の上に「オブジェクト指向」というなんだか難しい理念を 実現するための言語だが、この講義ではそういうところにはあまり触れないで、 必要に応じて使っていくということにしたい。
http://grape.astron.s.u-tokyo.ac.jp/~makino/kougi/keisan_tenmongakuII/overall.htmlにシラバス、配布資料があるので必要に応じて見ること。
ええと、C++ 自体の参考書はあまりに沢山あるのではっきりいってなにがいい のか僕にも良くわからない。 Web 上だと、とりあえず理物の院生の渡辺尚貴 さんの作っているページ
http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/あたりから見ていくのがいいと思う。
本屋でいろいろみた限りでは 「初めての C++ 」塚越一雄、技術評論社 Software Technology Series 25 が説明が丁寧 で値段もあまり高価ではなくよいような気がする。 かなり分厚いが、スムーズに読めるように書かれているので私の講義では不足 しているところを補うのに使って欲しい。
本格的に C++ を使いこなすには、どうしても原典である B. Straustrup, The C++ programming language, 3rd edition, Addison-Wesley を見る必要がある(見てもよくわからなかったりするが)。
なお、 C++ の文法等自体についてはあんまりちゃんとは説明しないので、そ のつもりで。
問題に応じた参考書は別に指定していく。
レポート である。一応、2回に1度程度課題を出すということにする。で、 原則として次の週には提出してもらう。いうまでもないが、全部提出しなけれ ば単位はつかない。
一応計算機の講義なので、手書きのレポートというのもちょっとそぐわないで あろう。したがって、Latex で書いて PS ファイルにしたものか、または HTML で出すということにする。 PS ファイル(あるいは pdf ファイル)になっ ていればどうしても Latex で作らないといけないということはないが、将来 のことを考えるとあまり Word とかそういうものではやらないほうがいいと思 う。
HTML で作りたい人は、自分のホームの下にどこかディレクトリをつくってそこ に置いておくこと。で、メイルで
makino@astron.s.u-tokyo.ac.jp
あてに、 Subject を、今日のものなら 「Report 10/18」として送ること。PS ファイルとかの場合でもこの方法でも構わない。(今日は課題はでない)
基本的には、始めに少し説明して、あとは適当に計算機室で課題等をやっても らうということにする。説明は講義室を使う。