数値解析法 (Fortran 編), 2005-06-03 質問と回答, M は宮本による回答。 h03s2001: Exercise 2.1 のリスト1のプログラミングを入力し、コンパイルし、 図1:実行例の通りに実行したらうまくいった。しかし、Fortran の1行目がC又は *ならばその行はコメント行になると書いてあるが、コメント行の意味がわからない。 M: コメント行でない行とは何でしょうか。または, 文法書を見れば詳しく書いてある でしょう。 h03s2002: なぜ最新規格のFortran 90/95 ではなくFortran 77をつかったほうが よいのか。 M: 文法が簡単で修得が容易だから。それでいて当面は充分な機能と性能がある。 h03s2003: 質問1:Exercise2.3で「いちいちソースファイルを変更して〜(略)。 工夫してみようか。」という文がありますが、その工夫の方法がなかなか思いつき ません。例えばどのような方法がありますか? 質問2:文番号の意味は、「命令の順番」という事ですか? M: (1) 残念ながら例示が唯一解になってしまう恐れがあるので, お答えできません。 (2) ちがいます, 文法書を見れば詳しく書いてあるでしょう。 h03s2004: ソースファイルや実行結果などの提出物を出すときどのようにファイルを 添付してやればいいのですか?LinuxからWindowsにおるんですか? EX2-3の整数や倍数などがありましたが分数はないのですか? M: (1) 「Windowsにおるんですか?」の意味が分かりません。添付の仕方は, 用いる アプリケーションソフトに依存することでしょう。(2) ここで言う「倍数」って 何ですか ? コンピュータ上で数値をどのように表現するかを知れば, 分数についての 謎が解けることでしょう。 h03s2005: Fortranの「一桁目がCまたは*ならばその行はコメント行となる」と書いて あったが、コメント行ってなんですか? M: h03s2001 を参照してください。 h03s2006: どのようにソースファイル、実行結果を送るかわかりません。どのように すればいいですか? また、EX2-3をやっていますが、EX2-1,2-2,2-3で使っている整数、実数、複素数、倍数 などの他にどのようなプログラムがありますか? M: (1) 唯一絶対の方法は無いでしょう, お好きなようにどうぞ。(2) ここで言う 「倍数」って, 何ですか ? また「他にどのようなプログラムがありますか?」と 問われても, 「整数、実数、複素数」は, プログラムではありませんよ。 何を聞きたいのでしょうね ? h03s2007: ファイルの容量ははどのように調べるのですか? M: 容器の容量を調べることは可能かもしれませんが, 中に入れるモノの「容量」とは, そもそもどのように定義されるものなのでしょうか ? h03s2008: 今、この授業ではプログラム言語としてFortranを用いているが、その他の プログラム言語としてどのようなものが挙げられるのか? また、そのプログラム 言語の長所と短所を教えてください。 Exercise2.2 の答えは、『プログラムリスト1』の6行目の「implicit none」を削除 し、7,8行目の「integer」を「real」にすればいいんですか? M: (1) プログラム言語は目的に応じて多数開発されているようです。その歴史的経緯を ここで説明することは, 多分ムリです。しかるべき書籍を見てください。(2) 唯一の 解は無いと思われます。いろんなやり方があるでしょう。ちなみにあなたのその 答えは, あまりよろしくないと私は思います。 h03s2009: fortranではなぜ73桁目以降のプログラムは無視されるのですか? M: その様に決められているから。または, 文法書を見れば詳しく書いてあるでしょう。 h03s2011: 今回、質問することは、ルーチンとは何をすることでどのようにしたら できるのですか? また、プログラムとはマスマティカのように数学的計算をするためのソフトのような ものという見解で近いのでしょうか?それともプログラミングすることでもっと他にも 活用できることはあるのですか? 最後に、概要のところで、手順を教えている本はあまりないようなことが書いてあり ましたが、それでも人が知る物として、授業について行けないとか、休んでしまった 場合を想定して、参考書の紹介をお願いします。 M: 文章が日本語としておかしいですね。でも何とか返事を試みてみましょう。 (1) ルーチンによって異なる。作ればできる。(2) 「マスマティカ」とは何でしょうか ? 普通は個々のアプリケーションプログラムは特定の目的のために作られているので, 別な目的のために活用するというのは, 普通はしないのでは ? もっとも, 道具は つかいようなので, 当初の目的とは異なる事に使用される可能性は否定しませんが。 (3) 何の参考書を期待しているのでしょう, 質問文の意味がよくわからないのですが, あそこに書いてあることでは不充分だという意味なのかな ? どう不充分なのか, ぜひ 教えてください。 h03s2012: Fortranの長所は、歴史の長さによる信頼性やライブラリの充実度などと ありましたが、逆に短所にはどの様なものがあるのですか?他の言語の長所などを 踏まえて教えて下さい。 丸め誤差を解消する方法はあるのですか? M: (1) h03s2008 の (1) を参照してください。(2) 誤差の原因を考えてみましょう。 h03s2017: writeやreadなどの次に書く(*,*)という命令をだすとコンピュータが よきに計らってくれるとテキストには書いてありましたが、実際はコンピュータ内では どんなことがなされているのでしょうか? M: 実際のコンピュータに依存することでしょう, 当たり前ですが。そして, あなたが ここで使っている Linux だけがコンピュータでは無いことも, 当たり前のことですね。 すなわち標準の入出力装置は, 個々のコンピュータによって異なるわけです。 h03s2018: 課題は練習問題をプログラミングしたものを提出すればいいのですか。 M: Web ページの課題の記述に何かあいまいなところでも有るのでしょうか ? どの辺が不充分なのか, ぜひ教えてください。 h03s2019: fortranのお約束として行の桁には重要な意味があるとありますがなぜ最初 からそのような意味があるのですか?あらかじめfortranにはそのようなプログラムが あるのですか? M: (1) Fortran のお約束については, 文法書を見てください。(2) 「fortran に プログラムがある」とは, どういうことでしょうか ? h03s2022: どの程度のレベルのプログラムを組めて、一人前ですか? M: プログラムのレベルは, どうやって判定されるのですか ? h03s2023: コマンドf77とg77、ftn77はどういうふうに使い分けるんですか? M: 自分に可能な手段はどれか ? あるいは目的は何か ? h03s2024: この授業で習うfortranやemacsは、将来企業や会社で働く上で、どんな ことに使われるのですか? M: あなたの心掛け次第で, 役にも立たせられるし無駄にもされるでしょう。知識とは そういうものなのでは ? それが知恵ってものでしょう。 h03s2025: read文とwrite文には(*、*)がつく。()内に制御情報並びを書き、それを *、*にしておくとコンピュータのほうでよきにはからってくれるものとpdfの文章に あったが、よきにはからうとはどのようにすることなのか? M: h03s2017 を参照してください。 h03s2027: [プログラムのソースリストらしきものが添付されているだけ] M: メールに質問が書いてありません。すなわち, 提出物が要件を満足していません。 h03s2028: 最後に提出する課題についてです。ソースファイルと実行結果と説明の文章 とあるのですが、ソースファイルと実行結果はわかるのですが、説明の文章とはどの ようなものを提出すればよいのでしょうか。(どのくらい詳しいものか等を教えて ください。) M: あなたが必要と思うだけの詳しさを備えていればいいのでは ? 普通, レポートって そうやって書きませんか ? h03s2029: windowsの欠点を教えてください。 M: ここに書くにはスペースが小さすぎる (笑) h03s2030: Fortranでは使われている人がプログラミング言語で記述したソフトウェアの 設計図を、コンピュータが実行できる形式に変換するソフトウェアの性能がよかったり するので使われているんですよね。ならほかにもよく使われている言語で使いやすい ものにはどんなものがありますか?特徴とか違いがどうあるのでしょうか? あとリナックスでのメールの送信の仕方はを教えてもらいたいです。windowsを開いて やるのは大変なので教えてください。 M: (1) 文章の意味が取りにくいのですが, もしかしたら h03s2008の (1) を参照する ようにと返事しておくのがいいのかな。(2) 唯一の方法というのはありませんので, お好みにあわせて, なんなりとどうぞ。しかしこの様な質問をする人には, 不向きだと 思われます。 h03s2031: よく使われる、コンパイルって何ですか? M: 言葉の意味がわからなければ, 辞書を調べればいいのではないでしょうか ? h03s2034: Fortran文法入門(Part1、前半)の小技において、メモリはどのような 基準でつけられているのか M: 実例を見てわかりませんか ? もし分からないのならば, あなたにとって目盛を つける意味は無いのかもしれません。 h03s2035: EX1.1とEX1,2は四則演算を二つの数字を入れるだけで計算してくれる画期的 なプログラムだとわかりました。EX1,3は誤差を調べるプログラムなのですか? M: ピリオドとコンマの使い方が変ですね。ちなみに「EX1.1」とか「EX1,2」とか 「EX1,3」って, どれのことでしょうか ? h03s2037: exercise2・1でリスト1のプログラミングを入力し、コンバイルし実行 したところ50000*60000の値が期待した値とはちがく、 −1294967296になったのがわからなかった。 M: ああそうですか。ところでメールに質問が書いてありません。すなわち, 提出物が 要件を満足していません。 h03s2039: 課題が早く終わったら、何かやることはありますか? M: あなたは「指示待ち君」または「マニュアル君」ですか ? 大学には何しにきたの ? h03s2040: このようにプログラムを作成していろいろな計算をするとき、 コンピューターが間違いを犯すこともあるんですか? M: とりあえず「ない」と答えておきますが, あなたの言う「コンピューターが犯す 間違い」の定義によっては「ある」かもしれません。 h03s2041: [プログラムのソースリストとコンパイルした実行ファイルらしきものが 添付されているだけ] M: メールに質問が書いてありません。すなわち, 提出物が要件を満足していません。 h03s2042: 〔write(*,*)〕とはどういう意味なのですか。 M: 文法書を見れば詳しく書いてあるでしょう。 h03s2043: プログラム1でスペースのマークのあるところと、無いところの差は なんですか? M: あなたは, どう考えますか ? h03s2044: わからない部分は参考書を買って勉強するしかないのですか? M: もちろんそれでもいいですし, 他の方法もあるかもしれませんね。 h03s2045: fortran文法入門P8のfortran言語のお約束の4つ目の空白文字は無視という ところの、例のところが何がダメなのかわかりません。,と.の違いくらいしかない ように思いますが…。 M: あそこに書かれていることの主旨を全く理解していないようですね。 h03s2046: Fortranの実行文を72桁目までに書くのには理由があるのですか? M: h03s2009 を参照してください。 h03s2048: UNIXに慣れるにはどれくらい練習すればいいですか? M: 人により状況により異なると思われますが, あなたはそう思わない ? h03s2050: なぜ、73桁目からは無効となるのか教えてください。 また、プログラム作成時の、(*,*)は一見顔文字にしか見えないのですが、 どういう意味があるんですか。 M: (1) h03s2009 を参照してください。(2) 文法書を見れば詳しく書いてあるでしょう。 h03s2051: 飛行機や家電がプログラムで動いていると今日知りました。では、その プログラムは電子機器のどこに保存され、どのような原理で機械を動かしているので しょうか? M: 私はその様な製品の制作者ではないので, 知りません。しかし動作原理は, あなたの目の前にあるコンピュータと, それほど大きな違いはないと想像できます。 あなたにはその様な想像はできないのでしょうか ? h03s2055: fortranはどのくらいのシェアをもつソフトなんですか? M: この件についてのシェアはどうやって測りますか ? h03s2056: fortran自身のプログラムはどうやって作られているのですか? M: 他のプログラムと本質的に大きな違いはないと予想されますが, そう思いませんか ? h03s2057: プログラム中で「write」の後に「(*,*)」がありますが、これはなにを意味 するのでしょうか? [06/24: 追加しました] M: h03s2042 を参照してください。 h03s2058: 今日やったプログラムができていなかったら、この先どのような場面で困る ことがありますか? M: h03s2024 の裏返しですね。 h03s2060: 先生はFreeBSDを愛用しているみたいですが、先生がFreeBSDを好む理由は なんですか? M: デーモン君が可愛いから (笑) 使いやすいから。 h03s2064: コメント行とは何ですか? M: h03s2001 を参照してください。 h03s2067: 授業を、各自独力で進めて行かせる形式にしていることにはどのような 理由があるのでしょうか。 M: 技術を身につけるのがこの時間の目的で, その修得には個人の努力が重要で, また その修得能力には個人差が大きいから。 h03s2070: どうして2進法を使っているのですか? M: 電気信号の on/off に対応させるのに都合がよかったからでは ? 詳細については, それなりの歴史的解説書を見ればいいのではないでしょうか。 h03s2072: 1.資料の中でfortranの優位性は「ほとんど」ないと記述されていました。 では数少ない優位性とは何なのですか? 2.最終的にファイルを添付して課題を提出するとT.Aの方がおっしゃっていたの ですが、その方法を具体的に教えて欲しいと思いました。今回はWindowsでメールを 提出しましたが、このような点からもLinuxの方でのメールの出し方も具体的に教えて いただきたいと思いました。 M: (1) 資料中の記述では不足ですか ? (2) 唯一の方法などありませんので, お好きな ようにしてください。また *具体的* に教えるほど, 個々の (ここ (Linux/Windows) の (!)) アプリケーションの使い方に詳しくないので, 教えられません。また個別のソフトのボタンを押す順序などを教えることに意味が あるとも思えません。大学教育ってそういうものじゃない ? h03s2073: Fortran77がいまだに支持される理由は、その膨大なライブラリと処理速度 だと思われます。大きなプロジェクトでは構造化プログラミングが必須で、そのために Fortran95が策定されたのでしょうが95のデメリットはないのでしょうか。 私はいまだにCOMMON文が解りません。できることならば全てのライブラリがFortran95に 置き換わることを願うばかりです。 [プログラムのソースリストらしきものが添付されている] M: Fortran95 のデメリットは, 文法がツギハギなところ, 文法要素が膨れたために 修得が困難になったところでしょうか。 ちなみに「構造化プログラミング」とはスタイルの問題なので, どのような言語で あっても可能だと思われます。ただ実現容易な言語と困難な言語があるだけで。 ちなみのちなみに, ライブラリはモジュール化されていることが好ましいので, それに反する大域変数を導入するような COMMON 文はほとんど使われていないのでは ? h03s2075: ファイルの許可をするときに、g77やf77などいくつかの方法がありま すが、何が違うのですか?ちなみにg77以外でやっても許可が下りませんでした。 M: 「ファイルの許可をする」ってどういう事でしょうか ? 目的にふさわしい道具を 使っているのだろうか, という疑問がフツフツと ... h03s2077: 今の僕のレベルでは関数電卓を使ったほうがいいのですが、Fortranを 使ったほうがメリットがある点もあるのでしょうか? M: なるほど, 能力に見合った道具というのもあるのでしょうね。 h03s2080: 色々な命令語や制御の指示語があるのですが、実際プログラムリストを そのまま写す形で四則演算を行ったので、その命令や指示語には一体どのような記号を 使い、またどのような意味を指すのでしょうか。 [コンパイルした実行ファイルらしきものが添付されている] M: ですから, 文法書を見れば詳しく書いてあるでしょう。 h03s2081: writeやreadのあとの(*,*)は何の意味を持つんですか。 [プログラムのソースリストとコンパイルした実行ファイルらしきものが添付されている] M: h03s2050 の (2) を参照してください。 h03s2082: Fortranは主にどのような仕事で応用されているのですか。ソースファイルは どのよう種類のものがありますか。これから勉強するにあたって、原理などを覚えて いったほうがよいのですか。 授業数は少ないですが懸命に覚えていこうと思います。 [コンパイルした実行ファイルらしきものが添付されている] M: (1) いろいろある。(2) いろいろある。(3) 表面的な手順を覚えれば, 即戦力には なるけれども, 他に転用できない。原理を知れば, いかなる場合にも応用可能。 あなたは, どちらがよいと思いますか。 h01s2077: Exercise 2.2のプログラムを修正するには、具体的にはどこをどう修正 したらいいのでしょうか?また、Exercise 2.3のちょっと工夫したときのプログラムの 例を公開してほしい。 M: (1) h03s2008 の (2) を参照してください。(2) h03s2003 の (1) を参照してください。