プロが教える店舗&オフィスのセキュリティ対策術

プログラミングって本来数学的な計算をする為のものではないのですか?
学校で配られたFortran90/95という言語の教科書の演習問題を見ると、数学的な問題が凄く多いです。
例えば台形公式・シンプソン公式による数値積分や、フィボナッチ数列の漸化式、二分法やニュートン法など、数学のアルゴリズムをプログラミングで表現させようとする問題が多いです。
ITエンジニアに算数以上の数学は使わないと聞いたのですが、実際自分がやってることは数学だらけです。
この参考書がたまたま数学よりなだけであって、本来プログラミングは数学とはあまり関係ない分野で使われるものなのでしょうか?

A 回答 (11件中1~10件)

学校で今時Fortranというのは


かなり特殊ですよね。

学科がかなり特殊な気がしますが
どんな学科ですか?
    • good
    • 1

古い時代の言語は「得手不得手」がはっきりしていることがある. 例えば Fortran はもともと「数学的な問題」のために作られた言語なので, その「教科書」の演習問題として「数学的な問題」を出すのは自然なこと. ある意味「数学の教科書の演習問題に数学的な問題が出るのと同じくらい当然. 逆に COBOL は「事務処理」向けに設計されたので, 数学的な問題は出しにくい. 特に最初期の COBOL だと, ちょっと複雑な式を書こうとするだけでおそろしく面倒くさい (今はまし).



よだんだけど, 最初の「プログラミングって本来数学的な計算をする為のものではないのですか?」という文章は「プログラミングは本来数学的な計算をするためのものだと思うんだけどなんか違ってるような感じがする」って意味に解釈するような気がする. その点でいえば「数学的な問題が凄く多い」「数学だらけ」であることを疑問に思うのはおかしいんじゃないかな.
    • good
    • 1

最初のコンピューターは、砲弾の飛び方、つまり、運動方程式の数値計算をするために作られたはずです。

技術の発展は軍事から。このように、当初は科学技術計算をするのがメインでした。その後、これは便利ということで、お金の計算もするようになりました。この頃は、文字を打ち込んで文字が紙に印刷されるだけで、今でいうモニターに相当するものも無かったです。

それから時は流れ、モニターに文字が映るようになり、文字だけじゃなくて点の集まりの画像も表示できるようになり、カメラで撮った画像も入力できるようになり、、、、と、入出力装置の進歩や、処理速度向上などで、いろいろなことに使われるようになっています。

Fortranはもともと科学技術計算用に作られた言語なので、その教科書の例題は科学技術計算が多いのでしょう。もちろん、文字列処理や、人工知能的な処理もやろうと思えば可能です。
    • good
    • 1

もともとそういう目的で作られたけど、いまでは「本来」


では有りませんね。

現在のプログラミングの用途の90%お金の計算です。
だからITエンジニアの学ぶべきものはまず簿記。

「前受金」やP/LやB/Sの意味がわからないエンジニアは
はっきり言って、一般的なソフトハウスでは
使いものになりません。
    • good
    • 1

違います。

FORTRAN計算をするためのプログラミング言語なだけです。

逆にCOBOLはビジネスアプリを開発するための言語です。

初期のコンピュータでさえ用途別にプログラミング言語があったのです。
    • good
    • 2

> プログラミングって本来数学的な計算をする為のものではないのですか?



うん。
歴史的に言うとその通り。
平たく言うとコンピュータ自体が弾道計算する為に作られた、って事だね。

> 例えば台形公式・シンプソン公式による数値積分や、フィボナッチ数列の漸化式、二分法やニュートン法など、数学のアルゴリズムをプログラミングで表現させようとする問題が多いです。

そうね、そういうトピックを扱う良心的な学校もあるでしょう。
ただし、一言言っておくと、元々コンピュータ自体が上に書いた通り、弾道計算を高速にやるために作られてる。
つまり、

> 台形公式・シンプソン公式による数値積分や、フィボナッチ数列の漸化式、二分法やニュートン法

はプログラミング初級者向けのトピックとしては「合ってる」のよ。一番優しい。なぜなら「元々目的に合致する用途」だから。
そして貴方は、と言うより基本的には「誰でも」、アルゴリズムを発明する事は「出来ない」。
言っちゃえばアルゴリズムを「作る」のはプログラマじゃなくって数学者の仕事なんだよな。
って事はだせ?基本「貴方は何も考えなくて良い」んだ。レシピに書かれたようにプログラムを「書き下す」。貴方の役目は「アルゴリズムのレシピ」を「プログラミング言語での記述」に変換する事だけ、だ。
これはね、初級者用教材としてはすごくいいんだよ。「考える必要がない」ってのはバカにしてるように聞こえるかもしんないけど、「翻訳・記述に集中出来る」って意味では最高の教材なんだよな。
個人的な意見では、初心者に「なんか作れ」と言うより「数学的なアルゴリズムをプログラミング言語の記述へ丸写し」の方がコツを掴むのが早いと思う。対応するデータも数値だけ、だしな。文字列だ何だって余計なデータ型を扱わずに済む。
そして大方勘違いしてるけど、別に「数学を理解してる」必要もないんだ。「単に言われた通りにプログラムを書き下せばいい」って意味では捻りもクソもないし、テクニック的に差がそれほど付くわけでもないんで、マジでプログラミング初心者用教材としてはサイコーなの。みんな「数学的アルゴリズム」っつーんで、「難しい」って捉えがちなんだけど、実は一番簡単なトピックなんだ。
これが初心者向けに「プログラム弄くって動的サイトを作りましょう」とかなったら途端に暗礁に乗り上げるヤツが続出するから。マジだよ?

なお、FortranはFormula Translation(数式変換)の略称なんでこれも意図に合ってます。

> 本来プログラミングは数学とはあまり関係ない分野で使われるものなのでしょうか?

と言うより、1960年代に入るか入らないかの辺りで、コンピュータの研究者の興味が「コンピュータと人間の応答/やり取り」に興味が出てきちゃったのね。「人間のように考えるプログラムを作りたい」と言う野望が出てきちゃった。
その辺で文字列処理を中心に考えてく、って風に興味が移っちゃったの。
大きく言うと、今はその「1960年代辺りにメジャーになったコンピュータの使い方の研究」の延長線上にいるよな、って話かな。
要するに、弾道計算だけじゃ飽きちゃった、って事だ(笑)。
そしていずれ貴方もそうなるだろうけど、とりあえず最初に、プログラミングの入口として、数学的計算(数値計算)を扱うのは、歴史的に見ても正しいかな。
    • good
    • 1

>プログラミングって本来数学的な計算を


そんなもん電卓でできる。
狙った結果が得られればいい。
基礎からやるなら数式でしょう。
計算機は計算しか出来ません。
    • good
    • 0

鋭い指摘ですね。


自身、30年前にSEしてました。まだ、インターネットも研究段階で一般庶民には無縁の時代です。
フィボナッチ数列、ニュートン法も知らなくても業務出来ました。が、2進数、16進数、キロバイト、メガバイト等は知らないと業務出来ませんでした。
新入社員教育の一貫で、基本情報試験の前身である第二種情報処理技術者試験を受けるのが必須でした。その中のプログラミングをFORTRANを選ぶと、漸化式などの数的問題もあったような気がします。COBOLを選ぶと、レコード長やファイルのマッチングなどで、高校数学II以降の範囲とは違う内容でした。
自身の会社ではCOBOLを推奨していました。
また、工学部出身です。研究室等ではシミュレーションのために数的プログラミングはしましたが、事務処理プログラミングでは四則演算が主でした。
    • good
    • 0

当たっているような当たってないような・・・・



そもそもコンピューターというものが実用化されたのは
第2次大戦前頃から、大砲の弾道計算を行う目的によるものです

それまでの経験と勘によるのではなく、数学的な計算で正確な砲撃を行うため
ですから当初のコンピューターは数学的な計算をより早くより正確に行うのが主目的でした
そしてフォートランという言語はその数学的な計算の為に開発されたコンピューター言語です

対してCOBOLは、事務処理的なデータの大量処理向けのプログラミング言語です
目的に応じたプログラミング言語を用いるのが鉄則でした

今はコンピューターの能力も高いですし、プログラミング言語も何々向けという専門的なモノでは亡くなりましたけどね


と言うことで、Fortranを学習していると『プログラミングって本来数学的な計算をする為のもの』という風に感じるのはある意味当然ですけど
でも、それだけって訳でもありません
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
なるほど…元々プログラミングは弾道計算の為に開発されたのですね。
また、COBOLといった事務処理用の言語もある事から、プログラミングは計算に限らずさまざまな用途に応じて使われるツールだという事が分かりました。

お礼日時:2022/08/26 13:36

プログラミングは結局のところ分野に関係なくやりたいことを数値演算で表現する技術ですが、スマートにこなそうとすれば三角関数や微積分を使用する場合もあるでしょうから、やはり算数を越えた高校レベル程度の数学のセンスも多少は必要だと思います。

ご質問中の各種計算プログラムですが、これらはあくまでプログラミングで出来ることの一つの例にすぎません。この様な使途に使用するプログラムの開発には更に高等な数学の知識が必要ですが、それはそういうことを知っている技術者がやればよいだけの話で、全てのIT技術者に必須の知識ではないと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
数学の問題はプログラミングが出来ることの一部に過ぎないというわけですね…
よく分かりました。

お礼日時:2022/08/26 13:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!