私はプロとして8年間プログラミングをしており、趣味として12歳のときからです。
数学は必要ありません、論理は必要です。数学はひどく役に立ちますが、それが必要ではないと言うことは、人を殺すために銃は必要ではなく、ナイフを使うことができると言うようなものです。まあ、それは本当ですが、その銃はそれをはるかに簡単にします。
最小限の要件がいくつかありますが、それらはすでに満たされているはずです。基本的な代数式と表記法、および一般的なコンピューターの同等機能を知っている必要があります。たとえば、指数が何であるか(3から3は27)を知る必要があり、一般的なコンピューター表現は3 ^ 3です。代数の一般的な表記法は言語によって異なりますが、それらの多くはやや統一された方法論を使用しています。その他(LISPを見て)はそうではありません。また、操作の順序も知っておく必要があります。
アルゴリズム的な考え方を理解する必要があります。最初にこれ、次にこれは、この計算で使用されるこれを生成します。おそらく、これを理解しているか理解していないかと思います。理解していない場合、ジャンプするのはかなり難しいハードルです。これはあなたが「得る」ものであり、実際に学ぶことができるものではないことがわかりました。逆に、一部の人々は芸術を「取得」しません。彼らは画家になるべきではありません。また、CSカリキュラムでは、これが機能しない理由を理解できない学生もいます。x= z + w; z = 3; y = 5; 彼らが追加を理解していないということではなく、明確な表現の要件を理解していないということです。彼らがそれを理解していれば、コンピューターもそうでしょう?上記の3行の何が問題であるかが分からない場合は、プログラマーにならないでください。
最後に、プログラミングの領域にある数学を知る必要があります。会計ソフトウェアは、基本的な代数で止まる可能性があります。物理学をプログラミングしている場合は、3次元ジオメトリ(ユークリッド)の物理学(ゆるい)と数学を知っている必要があります。アーキテクチャソフトウェアをプログラミングしている場合は、三角法を知る必要があります。
ただし、これは数学よりもさらに進んでいます。どのドメインをプログラミングする場合でも、基本をしっかりと理解する必要があります。言語分析ソフトウェアをプログラミングしている場合は、確率、統計、文法理論(複数言語)などを知る必要があります。
多くの場合、特定のドメインは、あなたが無関係であると考える知識を必要とするか、またはその恩恵を受けることができます。たとえば、オーディオソフトウェアをプログラミングしている場合、実際には、波形を処理するために三角法を知る必要があります。
マグニチュードも物事を変更します。1000項目の財務データセットを並べ替える場合、それは大きな問題ではありません。ただし、1,000万レコードの場合は、実際にベクトル演算を理解し、バイナリレベルでの並べ替えを深く理解することで大きなメリットが得られます(システムはどのようにアルファベット順に並べ替えますか?「a」が「b」よりも小さいことをどのように知るのですか? '?)
プログラマーとして、一般的な知識ベースが爆発的に増加することに気づくでしょう。なぜなら、各プロジェクトは、プログラミングの直接の領域の外でより多くの学習を必要とするからです。あなたが自己学習についてきしむか怠惰で、週に10時間以上を費やして本質的に「宿題」をするのが嫌いなら、プログラマーにならないでください。
思考演習が好き、学習が好き、電卓なしの数学やスケッチパッドなしのデザインについて考えることができる場合、人生や趣味に幅広い趣味がある場合、自己批判的で捨てることができる場合 'お気に入りのアイデア、完璧なものが好きなら、プログラマーになりましょう。この決定は数学に基づくのではなく、論理的に考えて学ぶ能力に基づいてください。これらは重要です。数学は単なる副産物です。