1. ホーム
  2. math

[解決済み] プログラミングに数学は必要なのか?[クローズド]

2022-09-30 02:35:15

質問

大学時代、友人と「ベテランプログラマに高度な数学は必要なのか」という議論をしたことがあります。彼はそれに猛烈に反論していました。彼は、プログラマに必要なのは高校や大学1年の数学の基礎知識だけで、それ以上でも以下でもなく、プログラミングのタスクのほとんどすべては高度な数学さえ必要なく達成できる、と言いました。しかし彼は、アルゴリズムはプログラマにとって基本的なものであり、必須の資産であると主張しました。

私のスタンスは、すべてのコンピュータサイエンスの進歩は、ほとんど数学の進歩に依存しており、したがって、数学の完全な知識は、現実世界の困難な問題に取り組むときにプログラマーを大いに助けるだろう、というものでした。

どちらの主張が正しいのか、いまだ決着がつきません。ご自身の経験から、そのスタンスを教えてください。

どのように解決するのですか?

あなたの質問にそのまま答えるなら、「いいえ、数学はプログラミングに必要ではありません」と言わざるを得ません。しかし、このスレッドで他の人が提案しているように、数学を理解することと、アルゴリズム的に考えることができることとの間には相関関係があると私は考えています。つまり、量、プロセス、関係、証明について抽象的に考えることができるようになることです。

私は9歳くらいからプログラミングを始めたのですが、その段階で多くの数学を学んでいたかというと、そうでもないでしょう。しかし、少し努力すれば、変数、for ループ、goto ステートメント (失礼、私は Vic 20 BASIC で、まだ Dijkstra を読んでいませんでした)、および画面にグラフィックを表示するための基本的な座標幾何学を理解することができました。

私は最終的に純粋数学の優等学位とコンピュータサイエンスの副専攻を取得しました。主に解析学に焦点を当てましたが、離散数学、整数論、論理学、計算可能性理論もかなり勉強しました。統計学、確率論、ベクトル解析、線形代数からいくつかのアイデアをプログラミングに適用できたことを除けば、学部時代のプログラミングやその後の商業および研究用プログラミングに直接応用できる数学はほとんど勉強しませんでした。

しかし、慎重な推論、反例の検索、公理的基礎の構築、概念間の接続の発見など、数学が要求する正式な思考方法は、大規模で複雑なプログラミングプロジェクトに取り組む際に非常に大きな助けとなったと強く信じています。

スポーツ選手が自分のスポーツのためにトレーニングする方法を考えてみましょう。たとえば、サッカー選手は間違いなくサッカーの基本的な技術にトレーニング時間の多くを費やしています。しかし、一般的なフィットネスを向上させるために、ジムで自転車やローイングマシンを使ったり、ウェイトトレーニングをしたりすることもあるでしょう。

数学の勉強は、プログラミングのための精神力や体力を高めるためのウェイトトレーニングやクロストレーニングに例えることができます。プログラミングの基礎練習は絶対に必要ですが、数学の勉強は、コアな分析能力を向上させる素晴らしい精神鍛錬になるのです。