数学はプログラミングとどう関係しますか?[閉まっている]


89

ソフトウェア開発の卒業証書を始めたばかりです。今、私たちは基本的なJavaなどから始めています(そのため、あなたは言うかもしれません)。

数学はコーディングに関係していると聞き続けていますが、それはどうですか?数学とプログラミングがどのように連携するか、または互いに依存していることを示す一般的な例は何ですか?

私は自分の質問があいまいであることをおizeびします。コードモンキーの学生として踏み込んでいる世界の大まかな考えをつかみ始めているところです...


49
プログラミング数学です。en.wikipedia.org/wiki/Discrete_mathematics
SKロジック

25
@Dave、だからこそ答えとしてではなく、コメントとしてリンクを付けました。
SKロジック

7
@FiascoLabs、さらにそれ以上-言語構造とロジックも数学のサブドメインです。プログラミングは応用数学に他なりません。
SKロジック

19
無関係の注意として、Javaから始めることは「下から」ではありません。
マットH

5
@ CharlesE.Grant、多くの数学の学生は同じことをします(そしてまだ彼らのテストに合格します)。
SKロジック

回答:


137

最初に:私は数学者です-専門家です(数学をすることで報酬を得ます)。私はプログラマーではありません。私はいくつかのプログラミングを行いますが、非常に間違いなくCargo Cultの種類(https://tex.stackexchange.com/q/451/86への最初のコメントと私の応答を参照)であり、通常これをもたらすようなものはありませんサイト(実際、TeXチャットルームにリンクが表示された後、この回答を投稿するためにここに登録しました)。

私の答えの要約は次のとおりです。数学はプログラミングです。

私は最近数学以外の学生グループに数学コースを教えるようになりました。それらはプログラミングのセクションでした。これは素晴らしいと思いました!ついに、私はすでに基本的なアイデアを理解しており、数学を行うための基本的なツールキットをすでに持っている人々に数学を教えることができるようになりました。実際にプログラムを書いた人の数を尋ねて、0から1の間のどこかで答えを得たとき、私は非常に失望しました。

先に進む前に、いくつかのことを明確にする必要があります。プログラミングに直接関係し、アルゴリズムの評価や言語の分類などに関係する数学の分野があります。私はそれらについて話していません。また、すべての数学をコンピューターで評価できる正式な言語に翻訳しようとしているプログラムもあります。これは私が話していることに少し近づいていますが、それでも焦点を合わせると、私が言おうとしていることの主要な部分を見逃してしまいます。私が行う数学と私が行うプログラミングは、トピックごとにほぼ完全に無関係です。それらの間の接続は異なるレベルにあります。

私が始めたいのは、主な質問に関するコメントです:

それが数学をしている場合、人間の活動はすべて数学の形式です。その場合、数学という言葉は、あるアクティビティを別のアクティビティと区別するために使用できないため、有用な意味を持ちません。

はい、それは数学をやっています。しかし、「数学」は依然として有用な言葉です。なぜなら、歌が言うように、「それはあなたがすることではなく、あなたがする方法だからです」。数学的に何かアプローチしているとき、数学をしていると思います。時々、それは「ハードコア」数学です:定義を定式化し、定理を証明します。時々、そうではありません。時々、私の子供たちがつづりの単語を学ぶことができるように、ばかげた小さなプログラムを書いていることがあります。

これは私がプログラムするときに数学が私を助けるものです:

  1. 抽象化これはおそらく数学からの最も重要な譲渡可能なスキルです。これによって、私はすべての不要なものを取り除き、重要な特性に集中する能力を意味します。

  2. 視点すべての生徒が学ぶべきことを1つだけ選択できる場合、それは次のようになります。問題に合うように1つの視点を変更する機能。通常、これを線形代数で基底変更式(恐ろしい行列と恐ろしい複雑さをもたらす)で扱いますが、それよりもはるかに適用可能です。本質的には、何かが1つの方法であなたに提示されたからといって、それがあなたがそれを扱う方法である必要はないという考えです。これにより、モノ自体の見方が、それが提示された方法から分離されます。これは非常に実用的です。それは、何かを有用または効率的にすることです。。Iはベクトルのリストを持っており、x座標とy座標のリストのリストとしてそれらを保存するために、より効率的である場合、それはです

  3. 上記から派生したフォームと機能。あるものをさまざまな方法で提示できる場合、1つの特定の提示がそのものであると言うのはもはや公平ではありません。再びその歌をmisquoteするには:「それはない、あなたが何であるか、それはだあなたは何をすべきか重要なこと」。

先に進むこともできますが、それらは頭に浮かぶものです。

今、私がこれまでに書いたことに対して、おそらく多くの(否定的な)反応があります。一つは「それは数学ではない、それはただの理にかなっている」だろう。(または悪意)私は上記の発言を参照し、「すべての人間の活動は数学の形式である」という感情に同意します。もう1つは、「質問で意図されている数学の種類ではありません。」です。これはほぼ間違いなく真実であり、ここでは、「少なくとも10年間は​​数学に触れていない」と言った人にもっと同情しています。もちろん、彼または彼女は間違っています。彼らはプログラム書くたびに数学をやっていたので、10年間数学をやっています。彼らはそれを認識しませんでした。

私は実際に私のプログラムでいくつかの「本当の数学」を使用しています。最近、楽しい3Dシェイプエクスプローラーをコーディングしました。これには、データに適用しなければならない投影やその他の変換を計算するために、いくつかの数学を使用しました。私は実際に四元数をコーディングしていることに気がつきました!しかし、もちろん、関与していた数学は、私が働いているときに行う数学と比べると些細なものでした。それは「封筒の裏」のものでした。そのタイプの数学、それから私はあなたがそれを必要なときに拾うという感情に同意し、ウィキペディアで見つけることができるより複雑なものが必要な場合は、あなたのためにそれを行う本当の数学者を見つけます。ただし、必要なときにピックアップできるようにするには、何かを学んでおく必要があります。そのことはあなたが実際に使用するものではないかもしれませんが、何かがあなたが実際に後の人生で実際に使用するものを拾い上げることをすべて容易にすることを学んだことです。あなたが学ぶ必要があるん:私はコーダに反対するところだから、これはいくつかのあなたが使用しようとしている場合は数学を任意の数学をし、あなたがそれを学ぶ必要があり、数学的側面から(ちなみに、証明定理を意味するものではありません)。

そして最後に「数学はプログラミング」です。優れたプログラマーであることから、これらすべてを学ぶことができます。あなたはこれらの事を学んだなら、あなたは私たちがベクトル空間内のベクトルについて話すとき、それはクラスのインスタンスだけだということを理解するので、はるかに簡単な数学ができますVector私たちはすべてのことを行うことができることを意味しVectorないのをそのインスタンス:加算、減算、スケーリングなど。 だからプログラマーに数学を教えたいのです。しかし、数学者として言えば、最初のこれらの「抽象化」は、数学が抽象化の追求であるため、プログラミングよりも数学で学ぶ方が簡単です。何らかの行動を見たときはいつでも、「そのように振る舞うようにするものについてはどうですか?似たようなものを他に取ったら、同じように振る舞うでしょうか?そのように振る舞うのをやめるために失う必要があるでしょうか?」(これを極端にすると、「ムカデの数学」につながります-用語を検索してください)。しかし、(現実の)オブジェクト(とにかく)でこれを行うのではなく、既に抽象化されたものでこれを行います。

これは十分に長く続いているので、古典的な数学者のジョークの1つで締めくくりましょう。

数学者と物理学者の両方が、24次元空間を含む新しいモデルに関するセミナーに参加しました。その後、彼らはそれについて議論し、物理学者は「それは本当に大変でした。つまり、24次元空間をどのように視覚化するのですか?」数学者は「ああ、簡単です。n次元の空間を視覚化してから、n = 24に設定してください。」と答えました。


2012-03-2を追加

この回答にはさまざまな意見を表明するコメントがかなりありました。これらは、私の回答に取り入れる(またはそれらに応答する)ことを試みると理解しているため、モデレーターによって削除されました。

ただし、できるかどうかはわかりません。これらのコメントとこのページにある残りの部分を読んで、数学が実際に何であるかについて大きな誤解があるという結論に達することができるだけです。さらに、私はそれを説明するのに十分な能力を感じていません。幸いなことに、誰かがすでにロックハートの嘆きにリンクしているので、その説明は延期します。別の言い方をしたかもしれませんが(科学環境で育ったので、数学の実験的性質にもっと重点を置いていただろう)、私はそれをもっと良くすることができるとは思いません。

私はまだ何かを追加できると思います。数学とは何かについての誤解だけでなく、「数学を行う」という意味についての誤解もあります。ほぼ矛盾する2つのスタンスがあります。

  1. 数学とは方程式と式に関するものです。ウィキペディアが存在するので、これを勉強する必要はありません(これは、ほとんどがディデロに対するオイラーの偶然の挑戦の逆です)。

  2. 数学は定理と定義についてです。したがって、プログラムは何も証明しないので、それを勉強する必要はありません(これは、ここに好きな誤りを挿入するのと同じくらい完全な誤りです)。

2つのスタンスは互いに矛盾しますが、それらは同じ場所に行き着きます。プログラマーが数学を学んでも意味がありません。結局のところ、彼らは何かについて何知っていますか?プログラマーが本当に知っておく必要があることは、ウィキペディアで見つけることができます。

上記では、私は自分をCargo Cult Programmerと説明しました。私はあなたのほとんどが自分にプライベートな笑いを持ち、「ああ、はい、あなたのプログラムがどのように見えるか知っているに違いない」と思ったに違いありません。あなたはおそらく少し独善的で優れていると感じました(ただし、独善的で優れていると感じるのは気分が悪いと思いますが)。

上記で説明したのは、Cargo Cult Mathematicsです。

数学がどのように機能するかを理解するために数学を少し学ぶべきだと言ったとき、私が書いたコードを少し見たのとまったく同じ理由で言っています。 StackOverflowからのコードのカットアンドペーストを停止し、それを適切に行う方法について少しだけ学んだ場合です。」

しかし、最も重要なことは、数学者から学ぶべきだということです。なんでそうなの?ここに例えがあります。私が最も得意とする言語はTeXです。(本当にすべてを言います!)。さて、TeXについてもう少し知りたいと思ったとします。DonKnuthが町にいて、TeXのチュートリアルを提供することを申し出たことがあります。または、ウィキペディアでそれについて読むこともできます。または、PerlとLarry Wall、またはC#(それは正しいですか?)とJon Skeetかもしれません。おそらくこれらの人々は最高の教師ではないかもしれませんが、彼らは彼らが知っている量でそれを補うのは確かです!

それが数学者です。私たちは、実際の言語を作成し、使用するライブラリを作成する人々です。もちろん、あなたがいない持って定理を証明する方法を知っている-あなたはライブラリを記述するつもりはありません!しかし、私たちの考え方について少し知っていれば、なぜ私たちがライブラリを書いたのかを理解するのに役立つかもしれません。

Wikipediaで方程式を調べて、ポアンカレ予想を証明することとの中間点があります。これは、ロックハートの嘆きを参照するために、「芸術についてあまり知りませんが、好きなことは知っています」との中間点です。そして、モネであり、「「ANY」キーはどこですか?」ドン・クヌースであること。あなたがまだ大学にいるなら、あなたはその分野の専門家であり、何らかの理由であなたにそれを説明するのに時間を費やそうとしている人々から学ぶ素晴らしい機会があります。


もう少し拡張したいと思ったもう1つのポイントは、プログラマーとしてもう少し数学を学ぶことを怖がってはならない理由です。ディープコネクションでも、有用性でもありません。それは、コンピューターをプログラムする能力が、数学の学習に直接役立つということです。私はいくつか言及したいだけです。

  1. 変数を理解する。「nを自然数にする...」のような単純な文で混乱する人がたくさんいます。または「イプシロン> 0にする」。数学には、変数のスコープを覚えておくことが重要な場所があります。これらはすべてプログラミングでは一般的です。数学的ステートメントをプログラムに変換することを学ぶと、何が何であるかを追跡するのがはるかに簡単になります。

  2. 証明の性質。テストを書いたことがある人、または他の誰かが使用するプログラムを書いたことがある人は、証明の核心を理解しています。その場合、ユーザーが何を入力しても、それを処理できることを知っておく必要があります(ここに必須のxkcd参照を挿入します)。それがすべての証拠です!「ユーザー/ユニバース」が何を入力して、ステートメントが保持されることを示すデモ。実験者は「通常の状況で機能するのなら、それは本当です」に傾いていますが、プログラマーは、何が起こるかを見るためだけにAlt + G + Shift +ÅØÆを試す子供が常にいることを知っています。

  3. ドライ。あなたにこれを破ってすみませんが、私たちはあなたではなく、それを発明しました。私たちは何千年もの間、「自分自身を繰り返さない」のです。だからこそ、私は自分の棚にユークリッドの要素のコピーを持っていますが、それはまだ有用です

ほかにもあります。プログラミングについてもう少し知っていたら、「プログラマーのための数学」という本を書きます。「プログラマーが知っておくべき数学」ではなく、「プログラマーのために最適化された誰もが知っておくべき数学」を教えることを目的とした本です。しかし、プログラミングを書くのに十分な知識はおそらくないでしょう-誰かが私と協力することを申し出ない限り!


そのままにしておきます。おそらくもっと考えたら、書いたものを変えるでしょう。うまくいけば、私はそれをより良く説明したいと思います。数か月後には、その一部に反対するかもしれません。誰かがさらに議論したり、そうでなければコメントしたい場合は、おそらくここのコメントでそうしないことをお勧めします。 あなたは私をどこで見つけるか知っています


19
これは、私がこれまでにSEで読んだ中で最高の答えの1つです。ところで、そこにある「プログラマのための数学」の壮大な本は、これは、Concrete Mathematicsと呼ばれ、TeXの作者であるDonald Knuthと共同執筆しています。私はちょうどコピーを手に入れました、そしてそれは素晴らしいです。私はあなたの逆のように感じます。数学のクラスの概念を理解するための最良の方法(私にとって)は、それを行うプログラムを書くことだと気づいたとき、プログラミングに真剣になりました。もちろん、手で暗記計算を行う代わりにプログラムを使用したかったので、数学の先生は嫌いでした。
ジェイソンルイス

おい、そのために+100。
バリーブラウン

2
これを賛成するためだけに登録
レオ

まさに。数学が教えてくれる分析的思考なしでは、うまくプログラミングすることはできません。
Fiasco Labs

1
OFプログラミングの数学(プログラミングを数学的に見て)に関する良い本はありますか?
2014年

27

それらはそれほど密接に関連しているわけはありません。プログラミングについては、数学、特にアルゴリズムのパフォーマンスなどに関係する分岐について知ることが重要ですが、単純な事実は、シングルトンが恐ろしいほど悪い考えであることを示す数学の分岐がないことです。または、コンポジションよりも継承を優先する場合、またはその柔軟性が本当に必要なのかどうか、そして自分自身や他の多数のコアプログラミングの必需品を繰り返したくないのかどうか。

数学あなたのプログラムが何をするのかを表現できるかもしれませんが、最も確実に、人間が読める、実行可能な方法をあなたに伝えることはできません。


6
1)シングルトン自体には何も問題はありません、2)アルゴリズム情報理論、形式言語、および表示意味論は、何らかの理由で懸念している単純なものに直接関連しています(プログラミングにとってそれほど重要ではありません)一般に)。
SKロジック

19
その場合、あなたの経験はいくらか制限されなければなりません。ドメインモデルの一部である限り、シングルトンは必要であり、避けられません。そして、ドメインモデルの構築方法は数学的問題であり、それ以上のことはありません。そして、はい、形式言語理論に無知な人は恐ろしいモデルとひどい言語を生み出しています。
SKロジック

10
@dave:その方法の危険性は、どんなに愚かであっても、だれでも大きく異なる立場を述べることによって、誰もが賢明で合理的な立場からあなたを遠ざけることができるということです。平均を取ることは、引数を評価するための有用な代替手段ではありません。
マイケルボルグワード

4
@ SK-logic:2人が単に「シングルトン」とは何かという異なる概念について話している可能性はありますか?SK-logicは、システム内の特定のエンティティのインスタンスを1つだけ持つという抽象的な概念について話しているようです。残念なことに、この抽象的な概念は、パブリックスタティックファクトリメソッドを持つという恐ろしく悪い実装の詳細と密接に結びついていました。GoFの本は、そのようなシングルトンへのアクセス方法の例としてそれを与えたからです。
マイケルボルグワード

5
ないよりしてくださいオフトピック Singtons再議論は
mattnz

20

数学とプログラミングは2つの方法で関連しています。

1つは、コンピュータープログラムについて推論するために数学を使用できることです。「入力データが変化すると、プログラムの実行時間はどのように変化しますか?」、「プログラムは私の問題に対する答えを見つけることが保証されていますか?」、「プログラムは可能な限り効率的ですか?」 "、"プログラムを高速にしたり、メモリを節約するためにどのように再配置する必要がありますか? "。通常、このようなトピックは、計算理論、アルゴリズムの設計、およびコンピューター言語の設計に関する上層部のコースでカバーします。

数学とプログラムが関連する2番目の方法は、プログラミングを使用して数学の問題を解決することです。「通常の生活」の多くの問題は、実際には数学的問題として作り直され、コンピューターで(おそらく)解決されるため、これは重要です。これらの種類のトピックは、ほとんどすべてのコースである程度表示されますが、特に離散数学および数学モデリングのコースで表示されます。


Mathは、プログラムが答えを見つけることを保証できません。それは停止する問題を解決することであり、それは不可能です。
-DeadMG

6
@DeadMG任意のプログラムでは不可能です。特定のプログラムは、場合によっては終了するかどうかを非常によく証明できます。
リュックダントン

6
@DeadMG、それは停止問題のよくある誤解です。停止の問題は、特定のプログラムが停止するかどうかを証明できないとは言っていません。停止するかどうかを判断するためにすべてのプログラムに適用できる単一のアルゴリズムまたは証明はありません。たとえば、en.wikipedia.org / wiki / Halting_problemおよびProgrammers.stackexchange.com/questions/125882/…を参照してください。
チャールズE.グラント

ああ それから私の間違い。愚かな投票のロックイン...あなたがあなたの投稿を編集して私がそれを取り消すことができるなら?
-DeadMG

4
@DeadMG、あなたはほとんどの典型的なプログラミングタスクがチューリング完全言語全く必要としないという事実を知っていますか?そして、残りのケースについては、ほとんど常に専門的な停止証拠があります。
SKロジック

12

数学教育がコンピューターサイエンスにとって重要な2つの具体例は次のとおりです。

1)リレーショナル計算が使用されるリレーショナルデータベース。

リレーショナル計算は、データベースのリレーショナルモデルの一部であり、データベースクエリを指定する宣言的な方法を提供する2つの計算、タプルリレーショナル計算とドメインリレーショナル計算で構成されます。これは、リレーショナルモデルの一部であるが、クエリを指定するためのより手続き的な方法を提供するリレーショナル代数とは対照的です。

リレーショナル代数は、いくつかのサンプルブックを提供する書店の電話番号と名前を取得するための次の手順を提案する場合があります。

Join book stores and titles over the BookstoreID.
Restrict the result of that join to tuples for the book Some Sample Book.
Project the result of that restriction over StoreName and StorePhone.

リレーショナル計算は、記述的で宣言的な方法を定式化するでしょう:

Get StoreName and StorePhone for supplies such that there exists a title BK with the same BookstoreID value and with a BookTitle value of

サンプルブック。

関係代数と関係計算は基本的に論理的に同等です。どの代数式でも、計算には同等の式があり、その逆も同様です。この結果は、コッドの定理として知られています。

次の領域は、人工知能(AI)と機械学習です。

これらの使用方法の例については、udacityのクラスCS 373:ROBOTIC CARのプログラミングをご覧ください

説明:このクラスはAIの第一人者の1人によって教えられ、確率的推論、コンピュータービジョン、機械学習、計画など、すべてロボット工学に焦点を当てた人工知能の基本的な方法を教えます。広範なプログラミングの例と割り当ては、自動運転車を構築するコンテキストでこれらの方法を適用します。ビデオで、この分野の主要な研究室を訪問し、スタンフォード大学とGoogleで自動運転車を製造している科学者とエンジニアに会う機会があります。

前提条件:インストラクターはプログラミングの確かな知識を前提とし、すべてのプログラミングはPythonで行われます。確率と線形代数の知識が役立ちます。

1週目:

パーティクルフィルターを使用した確率カーのローカリゼーションの基礎

週2:

ガウスおよび連続確率カルマンフィルターを使用した他の車の追跡

週3:

画像処理と機械学習センサーデータ内のオブジェクトの検索

週4:

計画と検索A *検索で運転する場所を決定する動的プログラミングで最適なルートを見つける

週5:

PIDによるステアリングと速度の制御

週6:

自動運転車のプログラミング

週7:

あなたの知識をテストする最終試験


これはAIの領域に該当すると思いますが、ほとんどの人は、この用語が使用されている場合、空の写真にこのパイを思い浮かべています。とにかく、現実世界をシミュレートするほとんどすべてのプログラムには、ほとんどの場合、何らかの高度な数学が必要です。また、センサーを備えたシステムでは、ほとんどの場合、何らかの高度な数学が必要です。
ダンク

11

科学的なアプリケーション開発、ゲームプログラミング、リアルタイムシステム、シミュレーションシステム、およびそのようなアプリケーションには、数学が実際に必要です。結局のところ、プログラミングは数学と科学を使用して問題を解決します。一方、ユーザー情報を取得してデータベースに登録するアプリケーションをプログラムするには、高度な数学は必要ありません。それにもかかわらず、すべてのプログラマーは、基本数論、代数、基本集合論、および基本的な数値解析の恩恵を受けるでしょう。

数学の実践者側から見ると、数学のさまざまなトピック(および他の多くの科学分野)がプログラミングから大きな恩恵を受ける可能性があります。


同意する。私は多くのエンタープライズ開発を行っており、多くの高度な数学を使用する必要はありませんでしたが、間違いなく役立つので知っておくと良いでしょう。他のタイプのプログラムは、フーリエ変換、統計モデル、3Dプログラミングのようなものを利用する場合があり、マトリックスを頻繁に使用します。
誠さん

@Makotosan、コメントありがとうございます。しかし、数学は非常に興味深いものです。プログラマーの時間が短いことを考えると、実際に生産性を向上させるものに労力を費やすのが最善です。追加情報は、余裕がある人にとっては贅沢になります。
-NoChance

Excelの開発者にとって財務を理解することが重要であるのと同じように、数学はあなたのプログラムに必要なドメイン知識に過ぎないと思います。
sixtyfootersdude

9

何よりも、この2つを非常によく似ているのは、使用されいる思考プロセスの類似性だと思います

たとえば、両方とも非常に論理的です。同じステップのセットまたは同じ式に従えば、常に同じ結果が得られます。たとえば、1+1常にに等しくなり2set a = 1平均aは常に1になります(他の値に設定するまで)

別の例は、空間的に考える必要性です。数学では、頭の中に数字を入れて、自分がやっていることを視覚化する必要があることがよくありました。以下のようなものは、そのように非常に単純な例として、私は数学の問題を打破するだろう13x13となっ13x10 + 13x3て動作するように私の脳のためにはるかに簡単である、と私はそのトラックを維持する必要がある、13x10=130 + 13x3=39そう、130+39 = 169。目に見えないものを視覚化したり、問題を小さな問題に分解したりするこの同じ機能は、多くの場合プログラミングに適用されます。

ですから、プログラムで数学的な背景を持っている必要はありませんが、数学は数字を使った計算を実行するものとして定義されていますが、数学の問題を解くときに使うものと同様の思考プロセスと理解が必要だと思います。


そして、いくつかの基本的な数学は、その体系的で論理的な問題解決プロセスを得るための通常の踏み台です。もう学校で教えられていない言語構造も、もう一つの足がかりです。コンパイラにパーサーがあり、コードの構造を解析して注意を払うほど、適切にプログラミングできる可能性が高くなります。
Fiasco Labs

5

今まで、微積分三角法の要素を教えられてきたと思います。そして、あなたはその数学を呼び出します。それは、一対の足を「人間」と呼ぶようなものです。

微積分学はプログラミングとはほとんど関係がなく、物理学と工学により密接に関連しています。あなたはのための物理学が必要になりますゲームエンジンとのための微積分、統計分析。(統計分析により、受け入れられる快適なジョブが増えます)

私たちにとって、微積分とは、プログラミングを実世界に関連付けることです。計算計算は、その関係がこれまでどれほど悪いかを研究する分岐です。(ネタバレ:かなり悪くなっていますが、無期限にチェックできます

三角法は箱の中にあるクレイジーなジャックで、予想外のときに出てくるもので、信号分析オーディオ生成、その他多くのものがそれに依存します。

トラフ行く代数101およびロジック101、パスカル、ライプニッツ、(ええ、彼はほとんど微積分を発明し、それが途中で間違ってました、それはすべてがほとんど意味を作り始めるまでニュートンと主張した-と、まだバイナリコーディングの事を考え)の歴史研究とバベッジをし、あなたの疑いの多くは消え去ります。(ただし、数学の定義は永久に変更されます)


4

プログラミングは、多くの伝統的な学問分野を超えています。

数学、特に応用数学は、プログラミングに重要です。コンピューターに求めることの多くはクランチナンバーだからです。多くのプログラマーが日常的に行うことの1つは、数値的手法と、計算を効率的かつ適切に適用する方法を理解することです。


4

ここで、いくつかのコンピューティング問題(特にインターネットドメイン)を解決する際に数学に出会った実用的なものを紹介します。

  1. 検索エンジンは、データの検索にベクトル計算を使用します。
  2. 行列因子分解は、センチメント分析のような多くのものに使用できます。
  3. 作成するコードの複雑さを把握するには、微積分、総和を知る必要があります。
  4. 確率は、確率的情報検索/検索で頻繁に使用されます
  5. 単純ベイズ定理は、予測分析で使用されます。
  6. 分類問題を解決するために再び機械学習で使用されるSVMと呼ばれる概念については、ハイパープレーンなどの知識が必要です。
  7. 自然言語処理を行うには、エントロピーを理解する必要があります。
  8. 検索エンジンで使用される潜在的セマンティックインデックス/主成分分析は、行列代数に大きく依存しています。などなど......

3

あなたの質問の問題は、「数学」と「プログラミング」が非常に広くて深い主題であり、誰もが一生のうちにマスターできる以上のことを知っていることです(誇張なし)。私は個人的に数学の修士号を取得しています。大学在学中、学べば学ぶほど、仲間と比べてあまり知らなかったように思えました。私は長年にわたって知性が低下したと感じています。教授のグループに修士論文を発表したとき、彼らのほとんどでさえ、私が学んだことについてほとんど知らないようでした。

同様に、私は現在、データベース駆動型のWebアプリケーション開発者です。組み込みアセンブラー言語プログラミングを行う人と私を比較すると、私たちは非常に才能のある2人の専門家と考えるかもしれませんが、私たちは両方とも「プログラマー」であるにもかかわらず、非常に異なる専門知識を持っているでしょう。

高等数学(新入生の計算を超えて)の研究を進めるにつれて、数学は、プログラムを作成する際に役立つ抽象的な推論の分野に浸透することがわかります。あなたはプログラムを作成するときに抽象的な懸念に対処するので、この規律は非常に重要だと思います。

もちろん、新入生のプログラミングでは、ポインタ演算について学習するでしょう。この概念を説明するための短いプログラムを作成し、それがコンピューターをどのように駆動するかについての理解をあなたの意思に従います。ただし、抽象計算でポインター演算がどのように機能するかを学習しても、実際のプログラムでポインターを使用するのは得意ではありません。大量の1万行のコードを処理し、ポインター演算に変更を加えるときが来たら、非常に抽象的なレベルで推論する必要があり、変更がどのように影響するかについてさまざまな懸念のバランスを取るための戦略的決定を下す必要がありますコード。

プログラマーとして、コードの「読みやすさ」、コードのパフォーマンス、結果として得られるプログラムの使いやすさなど、多くの懸念事項のバランスを取る必要があります。これらの懸念を互いにバランスさせるために、非常に抽象的な比較を行える必要があります。これらの比較の多くは毎日行います。私は時間管理についても始めていません。あなたがやることが時間通りに仕事をする能力に影響を与える可能性について抽象的に推論し、もう一度、あなたの仕事に影響を与える多くの決定を毎日します。

最後に、古い方法論や慣行が使用できなくなっても継続できるようにするために、新しいアイデアや概念を取り入れることができるように哲学的な規律を維持する必要があります。繰り返しになりますが、やってくるアイデアを評価し、すでに知っていることと抽象的な比較を行うことができなければなりません。

要するに、私たちの多くが知っているように、プログラミングは数学とはあまり関係がありません。しかし、抽象レベルで見ると、多くの共通点があります。


私は特に「ほとんどの人が知っているように」の部分が好きです。ここでの答えのほとんどを読むときに見た難しさです。「左手」は「右手」が何をしているか分からないのです。
ループスペース

「左手は右手が何をしているのか分からない」と要約しています。OPは、彼がJavaで「下から始めている」と言った。Javaでのプログラミングは、ハードウェアストアでボルトと木材から何かを構築するようなものです。これらのボルトを機械加工して木材に木材を作る(アセンブラーでのプログラミングに似ています)
Rice Flour Cookies

2

Mathは(たとえば)3次方程式を記述します。

アルゴリズムは、その3次方程式を解く方法を説明しています。

その(または任意の)アルゴリズムをマシンで実行できるように構築することはプログラミングです。

コンピューターサイエンスとは、アルゴリズムの分析です。その理論的な時間/空間効率、誤差範囲などです。これは、数学の分野と考えることができます。ただし、コンピューターサイエンスとプログラミングは実際には同じものではないことに注意してください。優れたプログラマーになりたい場合は、コンピューターサイエンスの基礎を持つことが重要です。これは、開発するアルゴリズムの設計と推論を改善するのに役立ちます。しかし、それは要件ではありません。

優れたプログラマーは、優れた数学者ではないかもしれません(実際、そうでないこともよくあります)。それらは個別の識別可能なスキルです。


3
ドメインによって異なります。プログラマーになりたい場合は、数学を知る必要はありません。(多くのドメインで)ビジネスの重要な部分になりたい場合は、ドメインの問題の解決策を考え出すことが不可欠です。非常に頻繁にこれらのソリューションは、堅実な数学的背景を持つことによってのみ導き出すことができます。特定の数学分野の専門家である必要はないかもしれませんが、現在の特定の問題をどの数学が解決するかを理解できるように、幅広い数学を適用する方法を知っておく必要があります。
ダンク

2

ポスターの数学的な理解が不十分であることが本当の問題である年の間、フォーラムのタイプに関する多くの質問を見てきました。たとえば、代数に優れた基盤を持っている人なら誰でも、ゼロで割り切れないことを理解しています。しかし、ポスターがそれを理解しておらず、基本的に「ゼロで割ることはできない」というエラーメッセージを理解しなかったという質問をたくさん目にしました。ポスターが基本的な論理を理解していなかったことが明らかになった多くの質問を見てきました。ブール代数の概念が明確に理解されていない場合、あまりにも多くの質問を見てきました。

数学の証明を書いたり、数学の教科書のように方程式を直接解いたりしないからといって、その背後にある概念を理解する必要がないわけではありません。ちなみに、長年の仕事の経験で、数学をしっかり理解している悪いプログラマーに出会ったことはありません。

一部の分野では、ゲームプログラミング、統計プログラミング、金融プログラミング、一部の組み込みシステムなど、多くの数学を直接使用します。これらのインスタンスのいくつかでは、要件で必要な方程式が与えられますが、そうでない場合もあります。ただし、方程式が与えられた場合でも、それらの方程式をプログラミングコードに適切に変換するには、最初に方程式を理解する必要があります。

基本的なCRUDアプリケーションでは、基本的な代数だけで十分ですが、より興味深い問題やより高度な作業のほとんどは数学的な理解に関係しています。では、なぜ数学を深く学ばずに最初から自分自身を制限したいのでしょうか?


2

すぐに思い浮かぶ2つの例は次のとおりです。

関数 -入力変数に変換を適用して出力変数を生成するという考え方は、数学に強く根ざしています。機能を周りに渡すの概念として、それ以上に別の関数のパラメータ。一般に、プログラミングに関連する抽象的思考の概念は、数学と非常に密接に類似しています。

bitMasks-問題を解決するためのこの一般的なプログラミング手法では、概念を把握するためにもブール代数の基本的な理解が少なくとも必要です。


1

プログラマーの観点から:数学はプログラミングのサブセットです。

プログラミングに適用される数学:

プログラミングでコレクション(配列、リスト、マップなど)を操作する場合、数学的な抽象化の現実の実装を扱っています。

数学なしのプログラミング:

その場合はprintln("Hello World")、その後、いくつかの数学は、などの画面上の位置、文字列の長さを計算するために使用されているという事実は、実際にほとんど無関係です。

数学のためのプログラミングの使用:

プログラミング言語で数学と物理学を実装すると、コンピューター支援設計などが可能になります。


数学関連とプログラミング関連の両方の共通点があります。どちらも他方の適切なサブセットではありません。もっと数学を知っていれば、あなたはそれを知っているでしょう。ベン図を描いて、各エリアでアイテムを見つけることができるかどうかを確認しましょう。代数は数学関連であり、プログラミング関連です。オブジェクト指向プログラミングの原則は厳密に数学に関連するものではなく、数学は抽象概念であるため、抽象概念です。離散数学は、統計と同様、プログラマーにとって非常に便利です。微積分がほとんどのプログラマーに登場することはめったにありませんが、30年経っても私にとってはまだありません。
ウォーレンP

0

プログラミングは通常、通常数学モデルであるモデルに基づいています。

住宅ローン計算機の作成例を見てみましょう。このためには、関心が何であるか、複合インタレストが何であるかなどを知る必要があります。基礎となる数学を理解していない場合は、他の誰かがその情報を提供する必要があります。通常、すべてを行うのはプログラマの仕事です。必要に応じて、いつでも助けを求めることができます。

数学には、プログラミングで広く使用されている単純な概念があります。式、方程式、変数の例については、プログラミングで深く使用されています。Mathで取得できない場合、あなたは最高のプログラマーではないかもしれません。

強力な数学を持っているので、作業をモデル化するためにもっと多くのものを与えてください。最終的には、より優れたプログラマーになります。たとえば、プロジェクトの1つで2次方程式を描くと、数学が得意だからといってより多くのことを学ぶことができます。または、円の領域を見つけるプログラムを作成して、より多くの経験を与えます。

私の短い教育経歴で、学生が数学のバックグラウンドを持っていなければ、経済的問題を抱えているとき、彼らはほとんど失われることがわかりました。モデルについて彼らが失われた場合、言語自体を学ぶことはより難しくなり、正直に非常にイライラします。


3
誰かが金銭的な問題を解決できるかどうかは、その分野で有能であるかどうかと、プログラミングの適性とほとんど何の関係もありません。私は頭の上の多くの数学を含む信号処理ソフトウェアを使用しています。私の仕事は数学をすることではなく、プログラミングが専門分野にない数学者や技術者によって生み出されるものを良いソフトウェアに変えることです。それが私のドメインだからです。
Blrfl

ほとんどの実用的な分野では、2つは別々です。誰かがモデルを持ち、誰かがそれをプログラムする必要があります。はい、そうです。しかし、プログラミングを最初から学ぶには、数学を知っている必要があります。それ以外の場合は困難です。彼らは、変数、式、さまざまな数学的特性について知る必要があります。最適化チームと協力してきました。彼らはソルバーに取り組んでいました。彼らが数学の知識を持っていなかったなら、彼らは決してそれに取り組んだことはなかっただろう。私は学習の観点から答えて、彼がプログラミングに足を踏み入れたばかりの新しい学習者であることを知っています。
ノーネーム

学習の観点からは、数学の背景を持つことが不可欠です。そうでなければ、他の人は学習しません。
ノーネーム

ソルバーは非常に数学領域の問題であるため、それらに取り組むには関係する数学の理解が必要であると考えることができます。私は存在しないとは言わないよ何のプログラミングに関わる数学的概念は、しかし@DeadMGは彼の答えで指摘したように、数学は絶対に何の助けを提供していないプロセスの非常に実用的な側面がたくさんあります。
-Blrfl

1
@ Birfl、DeadMGは、まあ、少し無知です(そしてほとんど常に間違っています)。数学は、すべての「ソフト」領域で常に役立ちます。心理学は数学に大きく基づいています。社会学はさらに数学的です。また、システム設計の場合は、セマンティクス(離散数学による)の非常に優れた背景がなければ、触れないほうがよいでしょう。プログラミングには、数学的な側面はありません。GUIデザインとCRUDコーディングが含まれています。
SKロジック

0

コンピュータサイエンスの理論的基盤(プログラミング以上のもの)は、本質的に数学です。計算可能性の定義から、アルゴリズムの分析と表現、プログラミング言語の仕様まで、すべてがさまざまな数学に基づいています。参照してください。このWikipediaのページを関与数学の種類の風味のために。

そのほとんどは、スリングコードだけでよいかどうかを知る必要はありません。応用数学に関する限り、深刻な数値計算スキル(詳細な物理シミュレーション、信号分析、財務分析、予測など)を必要とする分野に進まない限り、おそらく基本的な代数よりも複雑なものは使用しないでしょう。日常的に。


0

正直言って、どのようなプログラミングを行っているかによって異なります。

何らかのロジックを備えた軽量のWebアプリを作成している場合、多くの学位が必要とするより高度な数学クラスはおそらく必要ないでしょう。あなたがより多くの数学を必要とするよりも少し重いプロセッサーであるもので作業している場合。あらゆる種類の科学分野で作業している場合は、Calc参照を手元に置いておく必要があります。

数学が必要なもう1つの場所は、ゲームを作成する場合です。2番目に斜めに移動したい場合は、NEへのブロックに移動しても加速するキャラクターにならないように、慎重な計算を開始する必要があります。

とは言っても、必ずしも数学を学んでからプログラミングを学ぶ必要はありません。プログラミングを学び、高度な数学を習得することは完全に有効です。CalcクラスまたはTrigクラスに足を踏み入れる前にコーディングを開始し、うまくいきました。高度な数学の学習を始めたとき、私はペンと紙でできるよりも簡単なスクリプトで変数を変更することでトピックをもっと探ることができたので、コーディングが本当に助けになることがわかりました。


あなたは間違いなくゲームのためのあなたのトリガーとベクトルの数学を知る必要があります。
アランB

絶対に。ただし、ゲームを書くことは、締め切りに間に合わない限り、高校で忘れていた数学を再学習する素晴らしい方法になり得ることもわかった。
kcunning

0

私は決して数学の専門家ではありません!私はHS Geometryでうまくやっていました。プログラミングとジオメトリは非常に似ていると思います。ブール論理は、私の頭の中では幾何学的証明と非常によく結びついています。

次に、モジュラス演算子を使用して、行に含まれる列の数を制御できることを知ることなど、ほとんどありません。

私は、優れた数学者である友人(または同僚/コンサルタント)がいる優れたプログラマーであるという考えを強く支持します。

両方のスキルセットを持っていることに恵まれているなら、それで実行してください!


0

簡単な答え; 数学はあなたを速くします。もちろん、コーディングの問題をgoogle / se / wikipediaでなくすことはできますが、十分な計算を行う必要はありません。信じられないかもしれませんが、適切に訓練された人間の脳はgoogleよりも高速です。さらに、数学が多ければ多いほど、google / se / wikiが提供する結果をより早く理解できるようになり、人々が何を言っているかを理解するためにドリルダウンする必要が少なくなります。プログラミングの問題を解決するプロセスでは、とにかく数学を学ぶことになりますが、数学に焦点を合わせると、はるかに効率的なプロセスになります。

あなたの質問は、ロックミュージシャンが正式な音楽トレーニングを必要とする理由を尋ねるようなものです。それなしで成功することは可能ですか?承知しました。あなたがそれと一緒に行くなら、それはあなたをはるかに悪い人にしますか?絶対に。

少し複雑な答え-数学者とプログラマーが「解」という言葉を使用するとき(問題、つまり方程式ではない、つまり「根」ではない)、それらはほとんど同じことを意味します。数学の問題を解決することを学ぶことは、プログラミングの問題を解決することを学ぶのに役立ちます。

ところで-そして誰に対しても意図された攻撃はありません-彼/彼女は良いプログラマーであるが彼/彼女が数学を嫌うと言う人はビッグ・ファット・ライアーです。何が起こったのか、彼らは悪い高校や大学のインストラクターによって正式な数学を止められ、それ以来彼らは「数学が得意ではない」と感じています。学習障害のない人(つまり、OO言語を学習できる人)は、2年生までを含むすべての能力を備えています。


0

数学とプログラミングの99%を実行するアクションには、共通点がほとんどありません。数学は、優れたプログラマーである必要はありません。私は線形代数の微積分I、II、III要素、および他のいくつかの要素を含むがこれらに限定されない数学の大学レベルのコースをいくつか受講しました。

私は10年以上ソフトウェアエンジニアであり、基本的な数学以外のものを使用する必要はほとんどありませんでした。数学が必要ないくつかの例外があります:グラフィックスや他の分野のような。しかし、プログラミングとソフトウェアエンジニアリングの99%はMathを必要としません。論理的思考、アルゴリズム、OOP、機能、分解問題などが必要です。


0

1)プログラミングを学ぶと、技術的な専門用語(アルゴリズム)に遭遇します。アルゴリズムを分析するには、多項式関数、対数関数、指数関数の性質についての考えが必要です。

2)コンピュータサイエンスアプリケーションに基づいて、意味のあるソリューションを作成するには、離散数学と連続数学に関するアイデアを持っている必要があります。次のようなコースを受講することで、これについてさらに理解できます。

---> コンピュータサイエンスのための数学

---> マトリックスのコーディング:コンピューターサイエンスアプリケーションによる線形代数

初心者にとって、python/のような動的型付け言語schemeは、プログラミングに最適な最初の言語だと感じています。Java/のような静的型付け言語C++は、最初から最適ではありません。「MIT / UOC-Berkeley / Stanford」から公開されているOpencoursewareは、通常の大学のカリキュラムよりも優れたガイドとなります。きっと!


-1

個人的に言って、それは関与するプログラミングのレベルに依存します。データモデルとそれらの間の相関、関連するプログラミングアルゴリズム。たとえば、「He​​llo World」を出力するプログラムを作成する場合、高等数学に慣れ親しむ必要はありません。数学的関与のレベルは、プログラムで解決する必要がある問題の複雑さのレベルに依存します。


-2

ちょうど私の経験、これ以上:
私は数学ではありません。私は天才ではなく、ただの独学です。
...そして何年も経って、直感で仕事をするよりも気づく

最初に、Pick(デッドシステム)をゼロから(紙のドキュメントとサンプルのみで)、
C、C ++を楽しみ、Javaを仕事の後に学びました。

あなたがそれについて言ったように、私はこの言語を学ぶことは数学的な問題ではなく(基本的/ミニマリスト代数があなたを助けたとしても)、論理的な問題であると言うことができます。

今では多くのツール(Eclipseなど)があなたを助け、修正します。52の予約語だけで、やりたいことに集中する必要があります。

言語が好きなら、Javaプロジェクトを選択し、パターンデザイン、UMLを学習し、JVMを理解し、BiglooとScalaでJVMをどのように使用するかを理解し、10000時間にわたって何度も理解してください。

Javaの経験は、有給の仕事を与え、産業の大きなプロジェクトで長い間、数学ではなく情報を話すことができるため、別の環境に切り替えることができます。

言語(単語、意味、概念、および意味論、オントロジーなどの隠された論理科学)を理解することが、あなたの人間にとって、あなたのすべての人生にとって良い目標であるなら、今から始めることができます

それ以外の場合は、別の方法で実験してください。

敬具
クロード


再び、以下の投稿を参照してください。あなたは数学をしている、あなたはただそれを認めないことを選ぶ。
ジェームソン

1
私は見たが、ラテン語、哲学、言語の論理について語ったときに、-1 ^ nで(専門ではなく基礎を知っている)学生の数学的な興味に関する最初の質問に答える他の投稿も見つけました...生活。数学は、周りの生命を理解せず、ニュートンがリンゴによって与えられた直感で始まることを忘れることなく、すべてが方程式の中にないということを拒否するほど制限されていますか?おそらく、他の世界に心を開くのは司会者であり、可能であれば、これは議論の両側を豊かにするでしょう。それ以外の場合は、書き込みに注意します。
cl-r

-2

誰かが上の頭の爪を打ちそうになりました。プログラミングは数学です。より具体的には、プログラミングは、計算可能性理論または再帰理論と呼ばれる数学的論理の分岐です。

数学の他の分野、特に形式言語とオートマトン理論が直接関与しています。これらは、パターンマッチングで使用される正規表現、およびプログラミング言語の記述と解析に使用される正式な文法の記述に役立ちます。

プログラミングは数学ではないと言う人はだれでも、自分が話していることを知らないか、アルゴリズムや他の基本的な数学の特許を取得して利益を得ることを望んでいる「知的財産」マキシマリストのような下心を持っています事実または発見。

数学としてのプログラミングの参考文献と、あなたが何を話しているかを知らない結果:

プログラムは証明:19世紀のロジックと21世紀のコンピューティング

プログラムは証明:Lambda Calculusのモデルと型

ウィキペディアのカレーハワード通信記事

計算機科学における論理の異常な有効性について

論理の不合理な有効性

はい、それらは数学論理の「論理」部分に重きを置いていますが、数学は一般にいくつかの公理であると認められており、それらの論理結果は一次論理を介して開発されています。

別の言い方をすると、お金のために「IP」の最大主義者である限り:

米国でアルゴリズムを特許する方法。アルゴリズムは特許を取得できませんが、アルゴリズムをアルゴリズムとして参照しないことにより、アルゴリズムに関する特許が付与されます。その矛盾を指摘する、または説明しようとする多くの資料をウェブ上で見つけることは難しくありません。


6
終了時のアドホミネムの場合は-1。
チャールズE.グラント

@charles ad hominem誰に対して?オリジナルのポスター?特許についてのポイントは洞察力に富んでいると思います(たとえそれがもっとうまく表現できたとしても)。
-gcbenison

@gcbenison、「プログラミングは数学ではない、または下手な動機を持っていると言う人は誰でも、古典的なアドホミネム攻撃です。私はあなたが悪い人だからあなたの議論に答える必要はありません。プログラミングは数学だは思わないので、いらいらすることがわかりました。ソフトウェア特許は憎悪だと思います。私は応用数学の修士号を持っていますが、私が話していることを知っているかどうかは確かに議論の余地があります。
チャールズE.グラント

@コメント:ありがとう。私はこれらの行動を無視するために使用します。なぜなら、彼らは他者に帰属する自己予測の悲惨さだからです。---ブルース・エディガーへ:疑いの反射が進行中です。
cl-r

@ cl-r:SCOの反Linuxキャンペーンやnature.com/news/などの非常に具体的な例について考え ていました。プログラマーとして弁護士が数学を弁護士の利益に定義できるようにすれば、文明のすべてを大いに害します。
ブルースエディガー

-2

数学はプログラミングに関するすべてです。たとえば、ゲームプログラミングでは、物理学にmatyhsを使用し、すべてをより少なくする必要があります。Javaでプレーヤーのxの位置を移動するには、int x = x + speed * deltaTimeまたはint x = x - speed * deltaTime基本的な数学だと言うかもしれません。Elo Algorithmと呼ばれるチェスプレーヤーを評価するアルゴリズムがあります。

これがEloアルゴリズムの説明です

それでもこれが基本だと思うなら、これを試してください。誕生日、月、年が与えられたときに、誰かの年齢をどのように計算しますか。今年から誕生年を減算し、月が今月よりも小さいかどうか、また1を引いていないかどうかを確認します。

それは魔法ではなく、大変な仕事であり、優れた数学です。


-4

わかりました、私はおそらくこれのためにたくさんのダウン票を得るつもりですが、プログラミングと数学は2つの完全に無関係なものです。加算、乗算、基本的な論理演算などの基本だけを知っている素晴らしい開発者になることができます。

ほとんどの開発者は、プロとしてのキャリアの間に1つの方程式を解くことはありません。また、大きなO表記のようなものは非数学的な方法でも把握できます。何かについて考え、頭をひっくり返したものを想像して、出来上がり、誰かがログとパワーが何であるかを説明すれば、どんな種類のものかを知ることができます。

時には数学はそれを簡単にしたり、何かを証明したことを誇りに思うことができます。なぜなら、離散数学などに名前を付けることでプログラミングの意味を数学領域に拡張できますが、多くの微分方程式と積分を学習し、それを証明する方法は、私見はあなたがプログラマとして成功したい場合に何をすべきかを正確に最良のアイデアではありません。

少なくとも10年間は​​数学に触れておらず、常に数学の教授と議論をしており、リアルタイムレンダリングのために数学が必要なときは、定理を証明することなくプログラマー側からすべてを学びました。私にとっては、「数学を知らないと優秀なプログラマーになることはできない」というコメントを頭に入れた数学教授に比べて、簡単で理解しやすいものでした。もちろん、簡単にできます!

数学のバックグラウンドのプログラマーと、ログのすべての差分やものについて話すことができるように、数学的なことを知っています。そのようなものは99.9%の時間で役に立たないので、そうなったとき、プログラマーの観点からは1000倍効果的に学習できます。

要するに、プログラマーはプログラミング言語+フレームワーク+ベストプラクティスを習得するために少なくとも5年を必要とします。いったいなぜ彼らは定理を証明する方法を学ぶべきなのか?数学の学生は数学のことをし、プログラマーはそれを実行します。それが動作するはずです。


8
子供は母親に、彼が成長して億万長者の野球選手になるので数学は必要ないだろうと言います。彼のお母さんは、「数百万を数えるには数学が必要だ」と言います。
ナビゲーション

2
申し訳ありませんが、私は反対しなければなりません。数学の勉強は、論理的に考える方法を教えてくれます。論理的に考えることができない場合、あなたが書くことは、スケールしないコードの束だけです。私はあなたが数学の専門家である必要があるとか、数学のようでさえなければならないと言っているのではなく、日常生活でそれを使用する必要もありません。しかし、実際のプログラミングの問題を解決したい場合は、勉強する必要があります。
jmort253

2
@ jmort253:数学を勉強しても、論理的に考える人にはなりません。それはあなたの心に配線されているものかそうでないかです。私は学校以来数学を嫌っていましたが、私は非常に論理的な人です。プログラミングは数学ではありません。10年以上システムプログラミングに取り組んでおり、100%の自信を持ってそれを伝えることができます。また、Web開発やSQL管理の場合は、さらに少ない数学を期待できます。あなたの仕事は、新しい数学理論を開発することではなく、最も効率的なアルゴリズムとコンテナを使用して、限られたリソースを使用して保守可能な方法で機能させることです。
コーダー

2
@Nav:xとyの方程式まで、基本的な数学のすべての人にとって理にかなっています。しかし、会計士や弁護士が行うのは通常、数百万人を数えることです。そうしないと、宣言で何かをしなければならない州法を見逃してしまい、すべてを失うことになります。何が起こっているのかを理解するのに十分賢くなければなりませんが、何かに秀でたら、ジムで体型を保ちながら、正しく、時間通りに、あなたのために物事を行う専門サービスを使用する方が費用効率が高くなります。苦労して獲得した上位5位を維持するため。
コーダー

10
数学は方程式を解くプロセスではありません。あなたが今まで見た唯一の数学が学校で教えられている数学である場合、実際の数学を見たことがない。
doppelgreener
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.