優れたプログラマーになるためには、数学が得意でなければなりませんか?[閉まっている]


78

優れたプログラマーも数学が得意であるという従来の知恵が示唆しているようです。または、2つが本質的にリンクされていること。私が読んだ多くのプログラミングの本は、数学の問題の解決策であるか、または数学に何らかの形で関連している多くの例を提供します。

ですから、私が浮かせたいのは、優れたプログラマーになるためには数学が得意である必要がありますか?


1
@Mark必ずしもではありません。主題を学習することとそれを好むことは、非常に異なる2つのことです。
Maxpm

3
あなたは王ですか?または結合双子?いいえの場合、自分自身について言及するときは「私」に固執することをお勧めします。
drxzcl

1
@jk-あなたは正しいと思われますphysics.about.com/od/alberteinstein/p/einsteinpro.htmはまだプログラミングには十分な量の芸術があると考えています; p
Garet Claborn

3
私は数学が好きではないと思った。後になって、私は自分が構文に満足していないことに気付きました。
MrFox

1
すべてのプログラマーは常に数学を使用しますが、学校で教えられる数学とは大きく異なるため、彼らはそれを理解していません。目立たない数学、ラムダ計算、ブール代数、ロジック(!)は、私たちが毎日使用する高度な数学の概念です。
rotman

回答:


83

どんな種類のプログラミングをしたいかによって決まると思います。ビジネスの世界でプログラマーである限り、答えはノーだと思います。高度な数学を知らなくても優れたプログラマになることができます。最終的に数式を処理する必要がある場合、数式は通常、ビジネス要件で定義されるため、コードで実装するだけで問題になります。

逆に、低レベルのプログラマーになりたい場合や、3Dグラフィックエンジンを作成したい場合は、数学が大きな役割を果たします。


6
数学と物理学の博士号が恐ろしいコードを書くのを見たことがあると付け加えたい。これらのスキルはある程度重複していますが、別々の分野です。
MrFox

133

私は穀物に反対し、はい、あなたは数学の考え方が必要だと言っています。ほとんどの人は、数学を算術や難解な数式を記憶することと考えています。これは、優れた作家になるために完璧な綴りや並外れた語彙が必要かどうかを尋ねるようなものです。

執筆はコミュニケーションに関するものであり、数学/プログラミングは明確で論理的な思考のプロセスに関するものです(間違いを犯さないように、方程式がバランスをとらない、またはプログラムがコンパイルされない)。具体的には、その論理的思考は次のように現れます。

  • 数値の違いを推定/理解する能力:O(n ^ 2)vs O(lg(n))、KB対MB対GBの直感的な感覚、ディスクとRAMの比較速度。KBがGBに比べてどれだけ小さいか分からない場合、重要ではないものを最適化するのに時間を浪費することになります。
  • 関数/関数型プログラミング(方程式f(x)= x ^ 2がそのメソッドを記述する方法に非常に似ていることは偶然ですか?単語「アルゴリズム」と「関数」は、数学の世界でずっと前に存在していました最初のコンピューターが誕生しました:-))
  • 独自の方程式を作成および並べ替え、平均、基本統計を取得するための基本代数

したがって、事実と定理のコレクションではなく、プログラムの実行内容のメンタルモデルを構築および操作できる数学的な考え方が必要だと言います。グラフィックやデータベースなどの特定のフィールドには、必要な特定の事実もありますが、私にとっては「数学が得意」であることの本質ではありません。


1
数学専攻と数学の考え方:これは、すべての物理公式を知っていることと、20ヤード離れたバックボードからラバーボールを正確に跳ね返すことができることとの違いのようなものです!
-TehShrike

9
私は多くの優秀なプログラマーがチェスをするか、または行く方法を知っていることを追加します:-)
xanatos

1
あなたが自分で解決するのではなく、コンピュータ用にセットアップしているのに、非常に多くのコンピュータコードは基本的に代数です。あなたが代数と完全に家にいないなら、どうすればこれをまともな仕事を期待できますか?
ローレンペクテル

18
数学的思考はプログラミングの鍵です。まさにそれを強調するために投票を追加しています。
ガス

4
+1 Mathは、私たちの技術の基盤であるため、プログラミング言語の理解に不可欠です。私たちが日常的に使用するほとんどのプログラミング言語構造は、ラムダ計算などの数学の分野から解かれています。
MattDavey

53

プログラミングにはさまざまな分野があり、それらの多くは数学的知識の特に高い水準を必要としません。3Dエンジンを作成することは決してできませんが、ビジネスおよびWebアプリケーションを開発することは確かにできます。それに直面しましょう-ほとんどのコンピュータープログラムで最も一般的な数学的操作は、数字を1つ増やします。

私は数学が特に好きだったり、それが得意ではなかった(私は実際に英文学の学位を取得して卒業しました!)ことを12年以上にわたってプロの開発者として働いてきたことを非常に喜んで認めます。私はほとんどWebアプリケーションを開発していますが、それほど多くの数学を必要とすることはめったにありません。さらに重要なのは、論理的に考え、問題をチャンクに分解し、関連するさまざまなテクノロジーとフレームワークを幅広く理解できることです。

プログラマーとしては、まったく新しいアルゴリズムを考案するよりも、既存のアルゴリズムを実装する必要があります。たとえば、複利を解決する必要がありますか?数式を調べて適用するだけで、自分で計算する必要はありません。ほとんどの問題はすでに解決されています。選択した言語でソリューションを実装する方法を知る必要があります。それは数学が得意だからといって利点ではないと言っているわけではありません。それは完全に必須ではないというだけです。

80年代半ばに学校にいたとき、あまり一般的ではない家庭のコンピューターで、数学の宿題を解決するプログラムをよく書きました。頭の中でできないことがよくありましたが、ソフトウェアルーチンとして必要な式は何でも適用できました。直角三角形の最も長い辺を処理するために別のピタゴラスである必要はありませんa² + b² = h²。選択した言語でコーディングできる必要があります。


3
財務・会計処理はされないというあなたはオプションの価格設定またはそのような何かをやっている場合を除き、悪いです。

5
Chrisさん、要点はありますが、金融アプリケーションでも、数式を考案するよりも数式を実装する可能性が高くなります。
ダン・ディプロ

2
@Mark-本当ですが、丸めの問題を理解することは、使用する正しい型を知ることの問題だと思います。通貨の値については、(例えば)小数が浮動小数点数よりも優れていることを知るために、数学に精通する必要はありません。そして、数学者が使用する正しいデータ型を自動的に認識するとは思わない-それは学習の問題だ。
ダン・ディプロ

3
@ SK-logic:より厳密には、コンピューターが行うことはすべて論理的です。これらの論理演算の一部は数学として解釈されます(一部の人々は、論理は数学の分岐であり、一部の哲学者のinりに訴えています)。
ドナルドフェローズ

3
@Donal Fellows、正式な 論理は数学です。とにかく哲学者は、数学への歴史的貢献と復reした数学者(例えば、「単数形」のような奇妙なものを発明することによって)で知られています。
SKロジック

30

あなたは数学が得意である必要はありません。ただし、ロジックと問題解決が得意である必要があります。ただし、ロジックと問題解決が得意な人は通常、数学も得意です。それは本当に数学の種類に依存すると言うでしょう。あなたは微積分学(私のような)でひどくなり、それでも良いプログラマー(私のような)になれます。しかし、Discrete MathとSet Theoryに問題がある場合、プログラミングの多くの側面が非常に難しいことに気付くでしょう。


「問題解決」が得意であるために、ロジックが得意である必要はありません。ほとんどではありませんが、多くの問題は、論理に関係のないヒューリスティックを使用して解決できます。
-ElGringoGrande

1
あなたは優れたプログラマーであると確信していますか?:)
ラッセル

17

数学が好きではない理由をよく見ることが重要だと思います。

学問分野の嫌悪は、通常学校で起こることであり、教師との何らかの対立、科目内の自分の能力に対する自信の欠如、または仲間のグループのプレッシャーが原因である可能性があります。

プログラミング!=数学。私にとっては、数学のように「感じる」ことすらありません(そして、公式の勉強が終わる頃にはあまりうまくいかなかったにもかかわらず、数学を楽しんでいました)。あなたが数学で使用するかもしれない多くのスキルは有用であり、プログラミングでも必要ですが、多くのプログラマーはほとんどの部分で自分自身を教えます。学校で数学が好きではないことは、プログラミングの能力や楽しみにほとんど影響しません。


私は数学について多くの悪い教えを見ました。それの本質は、問題を既知の問題に変換し、余分な言葉なしで「解決した」と言うことです。しかし、教える際には、レベルを下げるために証明を再実装する必要があります。
バログパル

16

数学は本当に人間とコンピューターの間の普遍的な言語であるため、数学とプログラミングは非常に密接に関連しています。高度なプログラミングの多くは舞台裏にあるので、多くの数学を知る必要はありませんが、より高度なプログラミングの概念を理解するのに役立ちます。より低レベルのプログラミング(システムまたはデバイスプログラミング)を行う場合は、さらに多くの数学を知る必要があります。


11
+1。信号処理、機械学習、コンピュータービジョン、3Dレンダリング、物理シミュレーション、アニメーション、計算幾何学、暗号化など、「高レベル」なことをしたい場合は数学も必要になります。今。
ニキーー

2
@nikie:ええ、でもそれは数学を応用したものです。大きな違い。^^
ギャブリン

あー 実際、数学は普遍的な言語ではありません。ロジックです。そして、ロジックは哲学者の領域です。とにかく、コンピューターが実際にどのように機能するかについては、数学よりも電気/電子工学と形式哲学を知ったほうがよいでしょう。数学自体が必要なのは、コンピューターサイエンスをやっている場合だけです。コンピューターサイエンスは、キャリアの文脈で実際にプログラミングを行っているわけではありません。
RibaldEddie

14

良い 1?ありそうもない。ほとんどのデザインパターンには、数学的な概念に少なくともある程度の基礎があります。変数、ループ、プロシージャ、オブジェクトなど、プログラミングに不可欠なものは、代数、計算、集合論などの数学分野の概念に類似しています。

また、コンピューターサイエンスは数学のサブセットであることも考慮してください。すべてのプログラミングの基礎となるアルゴリズムと形式的ロジックは、基本的に数学です。

数学が嫌いなら、プログラミングは嫌いです。


13

ほとんどの人が答えました:「良いプログラマーになるには数学を知る必要がありますか?」これに対する正しい答えは、多くの人がすでに言っているように、「いいえ、実際はそうではありませんが、助けになります」です。

しかし、私の質問の解釈は、「数学の適性とプログラミングの適性の間に強い相関関係がありますか?」です。これに対する正しい答えは、「はい、あります」です。あなたが代数、幾何学、および微積分を苦労しているなら、おそらくあなたは抽象化に対処したり論理的に考えたりするのがあまり得意ではないでしょう。数学が苦手な人は、おそらく素晴らしいプログラマーになることはないでしょう。(試してはいけないというわけではありません。)


11

それはあなたがプログラミングしているものに依存します。たとえば、3Dゲームエンジンは、適切な数学的概念の知識がなければ、ある程度の一貫性を実現することは(不可能ではないにしても)非常に困難です。


11

「いいね」と「有能であること」は完全に異なるものです-あなたが適切に数値化されている限り、私はあなたが数学を好きにしなければならない理由を見ることができません。

しかし、ここでは絶対に明確にしましょう-プログラミングは数学に強力な基盤があり、遅かれ早かれほとんどすべての非自明な開発には計算が関与することになります-これを隠すことはできません。

プログラミングには論理(数学の基礎)が含まれ、ほとんどの現代のプログラミングにはおそらく(明白ではない場合でも)集合論が関係するもの(SQLなど)が含まれ、そうでない場合は、さらに明示的に数学に基づいたレルム(ゲームプログラミングなど)(レンダリング-数学、AI->確率とランダム性-数学...)

上記の結果は、数字に慣れなければならないということです-「世界には10種類の人、バイナリを理解する人と理解しない人」が面白いのはなぜかを理解する必要があります。しかし、おそらく「2 + 2 = 5 ... 2の非常に大きな値に対して」と言い訳されるでしょう。


+1、これは本当に憂鬱です。私は実際にその冗談を笑った。
ベン

10

数学の基本概念は、アルゴリズムの以下の考案、理解、実装、および使用です。もしあなたが数学をすることができないなら、それはあなたがこれらのことをすることができないからです、そして、あなたがこれらのことをすることができないなら、あなたは効果的なプログラマーになることができません。

一般的なプログラミングタスクには、特定の数学的な知識は必要ないかもしれません(たとえば、3Dグラフィックスや物理シミュレーションなどのタスクを実行しない限り、ベクトル代数や計算はおそらく必要ないでしょう)一方のドメインでは、対応する他方のドメインの能力不足と一致します。


9

正直に言うと、私は学校で恐ろしい数学の学生でした。代数は当時私を完全に超えていたので、Dよりも高くなったとは思いません。

しかし、数年後、プロのソフトウェア開発者として働いた後、私は大学に戻り、代数のコースを取りました。驚いたことに、それは私が持っていた最も簡単なクラスでした、そして、私はそれでAを得ました。

事実は、プログラミングは代数を教えてくれました。なぜなら、事実上すべてが単なる代数的な表現だからです。

いいえ、開始する必要はありません。これは役立ちますが、必須ではありません。数学を教える手段としてのソフトウェア開発の素晴らしい点は、コンパイラ、デバッガー、および実行プログラムが、正しい答えを得たことを確認する素晴らしい方法であるということです。この点で、特にデバッグは学習にとって大きな恩恵です。コードをステップスルーして、アルゴリズムの評価の各ステップを見ることができるからです。


10年間ソフトウェアを開発した後、私は学校に戻り、同じことを経験しています。微積分と統計は、ほとんどの概念を長年にわたって書いてきたいくつかの機能に関連付けることができるため、はるかに簡単だと感じています。SQL結合を自分で教えたときに、知られていないベン図について考えると怒ります。不正行為のようなものです。
ヒースリリー

7

確かに傷つけることはできませんが、それはあなたが何をしているのかによって多少異なります。

たとえば、コンピューターサイエンスを専攻した人は、学位を取得するために多くの数学を経験する必要があります。CSは通常、アルゴリズムとその正確性に重点を置いており、高レベルの数学スタイルの証明によって証明されています。多くのUniversitieのCSプログラムは数学プログラムに非常に近いため、ダブルメジャーは数コースしか離れていません。私はソフトウェア工学専攻としても、数学の副専攻から2コース離れていました。

しかし、そうは言っても、私が学んだ証明、データ構造、検索方法、アルゴリズムの正確性などの多くは、学校を卒業してから直接使用することはできませんでした。しかし、少なくとも私が低レベルで何をしているかについての良い基礎とより良い理解を与えてくれなかったと言うのは難しいでしょう。

どう見ても、最低レベルでは、やっていることはすべて数学に帰着するからです。


7

あなたは数学なしで良いソフトウェア開発者になれますか?はい、そう思います。あなたは、人々がいつも語るような英雄的なプログラマーになることができますか?私はそうは思いません。

問題は、すべてではないにしても、ほとんどの場合、英雄的なプログラマー(デニスリッチーを考えてください)、コンピューターサイエンスまたは数学のバックグラウンドを持っていることです。真に優れたプログラマーになるには、単なる表面的なレベル以上のレベルでアルゴリズムを理解する必要があります。つまり、正式なコンピューターサイエンスを掘り下げる必要があります。そして、コンピュータサイエンスは数学を応用したものです。

同様に、ラムダ計算の理解は、OSアーキテクトや言語設計者にとって非常に貴重です。


7

このトピックが何度も議論されているのを見てきました。私は、数学の学位を持っていて、1年か2年以内にキャリアを変えることができると考えていた人々と仕事をしました。私が一緒に仕事をしたことのある最高のプログラマーの1人は、生化学の博士号を持ち、学校で正式なプログラミング/ CSクラスを受講したことはなく、独学で成功したソフトウェア会社を設立しました!

最終的に、優れたプログラマーにとって良いのは、ロジック、ワークフローを理解できる人であり、解決策を模索して研究する意欲がある人です。また、あなたはあなたのアプリケーションが対象とするビジネスを学ぶ必要があります。私は、会計を理解していないが会計アプリケーションを書いていると思うプログラマーが嫌いです。彼らは常に間違った仮定をし、本当に開発を遅くします。

どの学校に行っても、4年間の学校よりも1年間で多くのことを学ぶことができます。学校は、基本的なスキルセットで学習する方法を教えますが、実世界での経験は時間とともに非常に価値があります。

経験は最高の教師であり、ビジネスを学ぶ限り、ソフトウェア開発に数学を適用しなければならないとき、あなたは大丈夫です。また、以前の投稿で述べたように、3DグラフィックエンジンやGISアプリケーションのようなグラフィック座標システムで作業する場合を除き、高校で学んだ数学が本当に必要なすべてです。

私は会計および請求システムに取り組んできました-そして、総勘定元帳の処理やデータ入力を許可するためにLog(x)、SIN、COSなどを把握する必要はありませんでした。エージングジャーナルは「高数学」ではなく、APの問題を評価するために重要です。

それについて考えに来てください、私は彼らの机の上に科学計算機を持つ会計士に会ったことがありません!


5

短い答えはノーです。ちょっとした神話だと思いますが、数学の問題はコンピューターで解決するのにふさわしいので、それは広まっています。

そのため、uni / collegeでは、人々はcompsci科目で解決する必要のある数学の問題に直面しますが、通常は、数学を解決するのに必要なコードよりも実際に解決するのが難しいことがわかります。

現実の世界に入ると、問題の大部分が解決されていることに気付くでしょう。あなたの仕事はそれらをコードに実装することです。


5

数学を学ぶか、自分で作成する必要があります。いずれにせよ、何らかの形でそれを上手にすることが重要です。

限り、あなたは値を処理し、彼らが何をしているか、なぜ、あなたができるかを理解することができますようにする彼らが行う、そして伝統的な数学は必ずしも必要ではないかもしれません。場合によっては邪魔になることもあります。

数値以外のバイトの値を視覚化する別の方法がありますが、それらは間違いなくメソッドの後に最も考えられます。たとえば、すべての値を色として考えるプログラムを作成することは可能です。

今日のプログラミングは、1と0を異なるタイプのデータとして表現できることから、その価値の多くを引き出しています。本当にそれらの1と0はまったく数字ではなく、電気的な波長の変化ですが、数学は物理学ほど重要ではありません... しかし、...それは何を理解するのに非常に重要です他のプログラマーが言うとコード。

それでも、数学がなくても難しいプログラマーになることは可能でしょう。


1
すべての値を色として考えることは、ほとんど理にかなっています。スペクトルの一方の端から離れすぎると、反対側の端に
戻り

度(0から360、0から256を除く)が役立つ場合もあります=)色や度の数値的な意味で、値がどれだけ「いっぱい」であるかを考える必要はありません。
ガレットクラボーン

5

離散数学のイントロコースを終えたばかりですが、プログラミングのおかげで述語論理に関するほとんどすべてをすでに知っていることがわかりました。新しくなったのは構文だけで、基本的にはブール値を操作するだけでした。

要するに、おそらく数学を明示的に学ぶ必要はないかもしれませんが、プログラマーになるだけで、おそらく気付かずに数学を学んだことでしょう。つまり、「優れたプログラマー」であることで、あなたは本当に(ある程度)数学者でもあります。

カリー・ハワード対応は私が何を意味するかを示しています。基本的に、それは証明して、特定のコンピュータプログラムはつまり、彼らは同じことを書くの異なる方法があり、「同型」であることを述べています。もちろん、これは実際にはこれよりも複雑ですが、私は数学者ではありませんので、これは私が与えることができる最高の説明です。うまくいけば、それがあまりにも遠くないことを願っています。

要約すると、CSの多くのフィールドを実行するだけでなく、プログラミングには多くの数学が含まれるだけでなく、基本的なプログラミングのアイデア(ブールなど)でも基本的には変装した数学です。


4

これは答えるのが非常に難しい質問であり、おそらく多くの議論を巻き起こすでしょう。

この質問が非常に難しい理由の1つは、あなたがどのような種類の仕事をしているのかに一部依存していることです。ほとんどのビジネスアプリケーションには多くの数学が関与していないため、代数とビジネス数学をしっかりと理解することで対応できます。ただし、より高度なアプリケーションではより高度な数学が必要であり、微積分、線形代数などの確実な理解が必要になります。

ただし、プログラミング自体の実践にはある程度の数学が依然として必要であるという点で、これは方程式の一部にすぎません。もちろん、基本的な代数だけでなく基本的なプログラムも書くことができるようにするには、ロジックに慣れる必要があります。基本的なプログラムを動作させるだけではありませんが、特定の問題に適したアルゴリズムを使用するために何が必要かを判断するには、離散数学の特定の側面を理解する必要があります。

しかし、質問の中心に戻るために。私は個人的に、あなたが優秀なプログラマーになるために数学者である必要はないと思います。ただし、優れたジェネラリストプログラマーになるには、数学に慣れている必要があると思います。


4

はい、間違いなく。

ミルビジネスプログラミングの実行でも、数学のスキルが必要です。

ミルビジネスプログラミングの実行にはデータベーススキルが必要です。優れたデータベースプログラマーになるには、データベースの仕組みと、クエリプロセッサがクエリを変換するときに使用するアルゴリズムを理解する必要があります。制限と導関数を理解しないと(または、行y = xが行y = x ^ 2と2回交差するという基本的な理解さえない)、ハッシュ一致内部結合クエリプランとネストされたループ結合を正確に比較することはできませんクエリプラン。

また、優れたプログラマーは、ゲーム、シミュレーション、組み込み開発、コンパイラー、オペレーティングシステム、Webスタッフ、データベースなど、少し勉強すれば、ほぼすべてのドメインで作業できます。これらすべてのことを行う方法を正確にすばやく学習できるようにするためには、かなりの数の数学のバックグラウンドが必要です。

私はある時点で次のような経験をしているべきだったと思います。

  1. Calcの3セメスター
  2. 差分方程式
  3. 線形代数
  4. 現代代数
  5. 基本的な確率、カウント、および統計

4

数学は単なる式ではありません。集合論に関するいくつかの数学的原理を理解することは、複雑さを理解することが効率的なデータ構造の使用法の最重要事項であるように、型システムの複雑な概念を把握するのに非常に役立ちます。

多くのプログラミング問題をグラフでモデル化できるため、グラフ理論も非常に便利です。ビジネスアプリケーションを開発していたとき、私は非常に驚きました。最短経路定理が、私が抱えていた厄介な問題に対するエレガントな解決策を提供していたことを発見しました。



4

数学はプログラミングの準備室です。

抽象化、モデル、機能の「オブジェクト化」、変換、および時間的概念のレイヤー上でレイヤーを操作できるので、数学はすべてのための完璧なトレーニングの場です。

数学を使わずにプログラミングに対する正しい考え方を開発することは可能ですが、それははるかに困難です。

ただし、専門分野は別として、数学のみを理解することが重要であり、すべての名前と特定の定理がどのように証明されるかを知ることは重要ではありません。そのため、数学をよく理解していなくてもすべてを学んだために数学で良い成績をとったとしても、プログラミングに苦労します。


4

数学の知識は、一部のアプリケーション(ゲーム、人工知能、コンピューターグラフィックスなど)に適していますが、数学は単なる数式や複雑な方程式を超えて何かを教えてくれます。

数学の学習は、新しいプログラミング言語を学習するようなものです。実際、プログラミングには数学が適用されます。新しい言語を学ぶとき、あなたはより良いプログラマーになる多くのことを学びます。数学と違いはありませんが、数学を本当にマスターすれば、仕事で高度な数学を使用しなくても、永久に優れたプログラマーになります。

その理由は簡単です:数学は他の目で世界を見ることを教えます。必ずしもプログラミングすることなく、さまざまなアプローチで問題を解決することを教えます。この新しい考え方は、確かにあなたがあなたの仕事をするためのより良い方法へと導いた。

プログラミングは芸術です。数学は芸術です。両方を組み合わせると、より良いアーティストになります。


プログラミングは基本的にロジックを適用しただけであり、実際、数学もロジックを適用しただけです。
RibaldEddie

3

番号。

ほとんどの科学分野と同じように、数学の概念をよく理解することは、特に効率などを評価するときに役立ちます。ただし、ほとんどのプログラミングタスクでは、解く問題が数学に関連している場合にのみ、数学の能力が関係します。

コンピューターは数学を行うのに優れているので、初期のコンピューターは、多くの複雑な数学作業に関連する「うなり声の多い作業」を行うために広く使用されていたことが理にかなっています。ソフトウェアの多くはまだないような場合には数学が得意であることは、あなたがより良いプログラムを書くのに役立ちます、複雑な数学の問題を解決するが、それはあなたの優秀なプログラマーにするものではありません。


3

通常、ほとんどの作業を行うために、たとえば微積分または三角方程式を知る必要があるという意味ではありません。あなたが重いグラフィック/ゲームプログラミングをしているなら、はい。有名な数学のハック地震については、この良い例です。ただし、高レベルの数学を扱うときに入らなければならないという考え方は、プログラミングにも当てはまります。プログラミングでは、独自の論理構造、独自の機能、独自の「証明」を開発しています。

私の仕事で数学に出くわしたのは(社内エンタープライズワークフローとアプリ)統計情報の知識を必要とするレポートアプリを実行するときだけですが、それは要件に直接適用できるからです。


3

必ずしもそうとは言えません。特定のプログラミング分野(暗号、グラフィックス、物理エンジンなど)は数学的に傾いている人にとって明確な利点があることは間違いありませんが、微分方程式の十分な理解は、たとえばWebプログラミングに特に役立つとは思いません。

ブール論理はおそらく優れたプログラマーであるための要件ですが、高校の数学で良い成績を達成できなかった多くの人々がプログラミングが得意であっても、私を驚かせることはありません。


3

優秀なプログラマーになるために数学が得意である必要は絶対にないと言います。

プログラマーとしての最初の仕事は、B-52および巡航ミサイルのミッション計画のために3Dグラフィックスを行うことでした。それは数学を集中的に使うアプリケーションでしたが、本当に数学が得意な人だけにアクセスする必要がありました。2点間の大円距離を計算するための式を知る必要はありませんでした。プログラミング言語で機能するように数式を変換する方法を知る必要がありました。飛行シミュレーションでも同じです。ボーイングは、私たちがそれを適用しなければならなかったすべての計算を行いました。

また、この経験は、誰が優れたプログラマーであり、誰がそうでないのかという感覚をつかむのにも役立ちました。この仕事にはパイロットとナビゲーターがプログラマーとしての任務を見学し、プログラマーがミッションのニーズを理解するのを助けました。通常、数週間以内にどのパイロットとナビゲーターが得意かを知ることができます。数学専攻は通常、すぐにプログラミングを始めました。

したがって、数学が得意であれば、プログラミングが得意になる可能性が高くなると思いますが、数学があまり得意でない多くの優秀なプログラマを知っています。


3

私は数学が好きではなく、常に数学の成績が低かった。私は優秀なプログラマーだとは言いたくありませんが、私はソフトウェア業界に10年間携わっており、大きな成功を収めています。


1
私はあなたの数学の成績に完全に関係しています。実際、私は悪いプログラマーではなく、Mathでもひどくはないと感じていますが、何らかの理由で、どんなに頑張っても、私のMathコースの「平均」グレードを超えることはできないようです。
ブライアンハリントン

@ブライアン、私はそれに関連することができます
-jasonco

3

数学が嫌いな人が優れたプログラマーになることは可能ですか?

いいえ、いいえ、いいえ、はい、いいえ!

いいえ、頻繁に必要になるからです。

(! (a | (! (b && c) || d) && (! e)))

なぜ機能しないのですか?

foo ('a', 'b', 19, g(h))
bar ('c', 'd', 44) 

より抽象的な方法で書き直すことができますか?

968ミリ秒は0.7秒以上ですか?必要なMBの数、マシンのGhzの数、1バイトで十分です-数学は毎日の仕事の一部です。時には明示的かつ高等数学。

常に暗黙的に数学を下げます。

数学は、計算から行列、幾何学、論理、統計、カテゴリ理論、グラフ理論まで、幅広い分野です。あなたが数学を使わずにプログラミングをしていると信じているなら、あなたは間違っているかもしれません。

Project Eulerのページで問題を見ると、パズルを見つけることができます。ここでは、パズルを解くために数学がどのように使用されているのかはわかりません。(数学なしでそれらを解くことができたわけではありません。)通常、問題の大きさはそれほど大きくないので、力ずくで解くことはできません。

しかし、私はそれらの多くを解決できないので(今では約2/3)、数学が好きではないということですか?

あなたが数学を勉強していなかったなら、あなたはおそらくプログラミングを含むあなたの日常生活で数学をどこで見つけることができるか分からないでしょう。

画面上でGUIコンポーネントを動かして見栄えを良くしただけでも、何らかの方法で計算を行っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.