プログラミングと数学の関係_プログラミングを学ぶには良い数学が必要ですか?

4528 ワード

一、引用
数学はツール性の強い科学であり、他の科学と比較して抽象性が高いなどの特徴がある.最初はコンピュータ科学者は数学から離れられないが、数学者はコンピュータが彼らにとってあってもなくてもいいと思っていたが、今はお互いに相手から離れられない.コンピュータも数学者の人々の心の中での地位を高め、大部分の数学者はコンピュータの重要性を認識し始め、コンピュータの分野に入って役割を果たしている.しかし、人工知能、GPS(グローバル測位システム)などの急速な発展とコンピュータの演算性能の飛躍的な向上に伴い、コンピュータの優位性はますます思考分野に深く入り込み、コンピュータは高度な数学理論を実際に使用し、多くの実際の問題を効果的に解決し、例えば有名な難題の4色の問題はコンピュータに証明された.問題の解く過程には,解析幾何学,ウェーブレット解析,離散数学,シミュレーション計算,数値計算における有限要素法など,実用価値のある数学分岐がたくさんある.コンピュータのプログラム設計が結合しているのは数学知識と数学思想であることを人々に知らせる.
ソフトウェアプログラミング
数学モデルに基づく基礎の上にあるので、数学はコンピュータ科学の主な基礎であり、離散数学に代表される応用数学は学科理論、方法と技術を記述する主なツールである.ソフトウェアプログラミングでは多くの理論が数学で記述されているだけでなく、多くの技術も数学で記述されている.コンピュータの各種応用のプログラム設計の面から考察して、いかなる1つの記憶プログラム式電子デジタルコンピュータの上で運行することができるプログラム、その対応する計算方法はまずすべて構造性でなければならなくて、データは離散化しなければならなくて、計算操作は論理あるいは代数の方法を使って行わなければならなくて、これらはすべてアルゴリズムとプログラムの中で体現しなければなりません.さらに,これまでアルゴリズムの正しさ,プログラムの意味およびその正しさの理論的基礎は数理論理,またはさらなるモデル論であった.本当のプログラムの意味はモデル論の意味での意味である.そこでソフトウェアプログラミング思想の運行の厳密性、学科理論方法と実現技術の高度な一致はコンピュータ科学と技術学科が数学学科と密接に関連している根本的な原因である.学科の特徴と学科方法論の角度から考察して、ソフトウェアプログラミングの主な基礎思想は数学の思惟で、特に数学の中で代数、論理を代表とする離散数学で、プログラム技術と電子技術はただコンピュータ科学と技術学科の製品あるいは実現の1種の技術の表現形式にすぎない.
二、ソフトウェアプログラミングと数学思考のつながり
(一)数学のコンピュータ分野での発展
今、いろいろなソフトウェアは、数学と必然的なつながりがあり、互いに成り立っています.例えば、論理学の学科における応用は初期の数理論理から今日のプログラム設計モデル論に発展した.数学の学科における応用は初期の抽象代数から今日の図形学、工程問題の面に発展した.幾何学の応用は初期の2次元平面計算機の図面から今日の3次元アニメーションソフトウェアシステムに発展し、複素分析との結合の中でフラクタル理論と技術を生んだ.ゲーム、グラフィックソフトウェアの開発では線形代数における大量の座標変換、マトリクス演算を引用した.データ圧縮と還元,情報セキュリティの面でウェーブレット理論,代数符号化理論などを導入した.
(二)ソフトウェアプログラミングの思考定式
ソフトウェアプログラミングの思考定式は一人のプログラミングのレベルを決定して、プログラミングの過程の中で、数学の思考ははっきりしていて、編纂したプログラムは人の耳目を一新させます.教育と結びつけて、調査分析を通じて、85%以上の学生がプログラミングする時に文法に基づいてプログラムを編纂して、完全にソフトウェアのプログラミングの思考から離れて、このような思考の定式は彼らが編纂したプログラムをかなり悪くして、少しの論理がありません.
このようなソフトウェアプログラミングの思考をもたらしたのは、彼らが普段数学の思考の育成を重視していないからだ.多くのコンピューターを勉強する学生は、「高い数を勉強して、これは何の役に立つのか」と思っています.線形代数を学ぶのに何の役に立つの?離散数学を勉強して、何の役に立ちますか.そこで彼らはめったにこれらの授业に行って、まあまあで、一日中寝室の中で闭じ込めて、ゲームを游んで、ソフトウェアを装って、C言语を见ます
.確率問題と行列知識が他の授業で相補的な役割を果たしていることを知っているだけで,あまり深く勉強していない.しかし、彼らが<>を見たとき、その中の内容が彼らにとってかなり難しいと感じ、数学の思考の役割をかすかに感じた.その前に、彼らは大学の高等数学を荒廃しただけでなく、中学校の初等数学も忘れていたことが多く、彼らが高抽象的な思考を行ったとき、確かに自分の思考が鈍くなったと感じた.コンピューターを学ぶ学生が「データ構造」を
このコースは難しいです.彼らの数学の思考が足りないからです.実は生活の中で多くのこのような例があります:1人の卒業したばかりで、応用ソフトウェアを編んだ大学生に対して、プログラミングの中で《線形代数》の行列を使う時、恐らく大学で線形代数をマスターすればいいと思っています;プログラムでダイナミックチェーンテーブルやツリーを使うと、「大学で『データ構造』を勉強するのに少し時間がかかるのは、どんなに意味があるのか」と思うかもしれません.データ構造を勉強すると、「離散数学を勉強するとき、どうしてそんなに多くの授業をサボるのか、そうでなければ離散を勉強するときは楽だ」と思うかもしれません.だから数学の思惟が足りなくて、ソフトウェアのプログラミングで多くの疑念があって、明らかに少し手を縮めて尾を縮めて、その上書くプログラムも健全ではありませんて、論理に欠けています.
(三)ソフトウェアプログラミングと数学思考の融合
多くの専門家は数学とソフトウェアのプログラミング能力が太極とボクシングのように感じて、ソフトウェアのプログラミング能力が強いのは拳を出すスピードが速くて重くて、直接人に重撃を与えることができます;数学が上手なのは太極の達人のようで、表面的にはあまり力がありませんが、内在的なエネルギーはもっと強いですが、良いボクサーは若いほどいいですが、太極の巨匠は経験が深いほどすごいです.だから数学はマスターを成し遂げるために必要な能力で、多くの学生は役に立たないように見えますが、一定のレベルになるとその力を体得することができます.
三、数学思考のソフトウェアプログラミングにおける応用
現在、多くの有名なIT会社は筆記試験の時、プログラムの設計問題の中で応募者の数学の思考能力を考察することができて、そのため、これは広範な学生がふだんの学習の中で自分の数学の思考を鍛えることに注意することを引き起こすべきで、機会があれば数学のモデリングの試合に参加して、あなたはとても深い体得があります---もとは数学とコンピュータがこのように緊密に結合しています.以下の典型的なコードは,設計過程で数学的思考を十分に運用した.
テーマ1:3つの赤いボール、5つの白いボール、6つの黒いボールの中から任意に8つのボールを取り出して、しかもその中に白いボールがあって、すべての可能な方案を出力しなければなりません.
プログラム1:
#include "stdio.h"

void main()

{

        int i,j,k; //I    ,j    ,k    

     printf("
red write black
"); for(i=0;i<=3;i++) for(j=1;j<=5;j++) //j=1 { k=8-i-j; // if(k>=0&kk<=6) { printf("%3d,%3d,%3d",i,j,k); // } } }

上記の例から,ソフトウェアプログラミングにおける数学的思考の応用をかすかに知ることができる.数学の勉強はコンピューターの専門家に与えるリターンは普通の人より大きいが、今の社会では誰もが利益を得ることができ、人々に自分の思考能力を高め、聡明になる絶好の方法である.このような思考能力は人々に各方面で利益を得ることができます!しかし、実際には、数学の上で基礎がしっかりしていて、ソフトウェアのプログラミングの上で優位性が現れて、プロジェクトの設計モードは格の外で最適化して、プログラムの論理の条理も格の外ではっきりしています.数学は人間の論理的思考能力を育成することができるため、プログラム設計には強い論理的思考能力が必要である.
これらは私たちに数学の思考とソフトウェアのプログラミングの結合性を深く体得させて、実は私たちの国のコンピュータのソフトウェアのレベルの遅れは私たちがプログラマーが不足しているためではなくて、数学を理解する高品質のプログラマーが不足しているためです.数学的な修養を持つプログラマーは、コードを書くときに論理的に厳密で最も簡略化された高品質のコードを書く可能性が高い.現在、一部のトップIT会社、例えばマイクロソフト会社のビル・ゲイツ総裁は若い頃から数学に夢中だったが、彼らのプロジェクトマネージャーは、超強い数学的思考を備えなければならず、数学専門の博士でもあることから、マイクロソフト会社が数学人材を重視していることがわかる.
四、終わりの言葉
ソフトウェアのプログラミングの思想は最も重要なのはアルゴリズムで、アルゴリズムは数学の思惟の上で創立して、実ははっきり言って、プログラムはただ1枚の服で、アルゴリズムこそその魂で、アルゴリズムは数学から来て、深い数学の思惟の基礎がなくて、アルゴリズムを理解しません.だから、ソフトウェアのプログラミングに従事したいなら、自分の数学の思考を真剣に育成しましょう.
プログラミングを学ぶには良い数学が必要ですか?