數學和軟體
在我個人的軟體開發過程中,自認為得益於數學基礎訓練較多,但具體有何聯絡,又感覺說不太明白。
使用者說:金額大於50萬的合同,需要部門經理審批,金額大於100萬的合同,需要總經理審批。
用數學語言表述,可以相當於這樣乙個函式
處理流程=f(合同金額),根據合同金額的差異進行不同的處理
一般情況下,合同金額可以視為乙個自然數集合(從1到無窮),很明顯的,《大於50萬》和《大於100萬》不是這個自然數集合的完備劃分。
第一:這兩個集合有交叉,大於50萬的集合顯然包括大於100萬的集合
第二:這兩個集合不能覆蓋整個自然數集合,也就是有漏洞
所以,需要給出乙個互不衝突的完整劃分,使其覆蓋整個問題集合。
在本例中,[1,500000),[500000,1000000),[1000000,無窮)就是這樣的乙個互不衝突的完整劃分。
由於軟體實現的限制,事實上不可能對無窮大的數進行處理,因此需要確定該數的上限,以便於軟體實現。
而且無論是int、long還是其他的資料型別,其範圍總是不能和使用者所需求的數的範圍完全一致。例如是否允許輸入負的合同金額?如果不允許,該限制應當由哪部分程式負責?
所有的數學函式都是必須定義變數所在的範圍的
y=f(x),x∈n,x>=1,
y=g(x),x為實數,x<>0
……要點一:輸入引數必須定義其所在範圍,並且確保所有輸入引數的可能性都可以被處理(包括正常處理和異常處理)。
數學和軟體 續
看來大家對數學還是很有興趣,但我還是很遺憾的看到大多數人對數學和軟體開發的理解還是數學演算法這個層面。那麼我繼續盡我所能來揭示數學和軟體兩者思考的共通性。這次考慮的是重構,要點之一是不要重複,因此需要找出幾段 之間的共同點。從數學角度考察兩個多項式 x 2 5x 6和x 2 4x 3 哪一部分是重複...
軟體程式設計與數學思維
軟體程式設計與數學思維 張水坤 大眾科學 科學研究與實踐 2007年第08期 摘要 近年來,學科的高速發展已經明確地反映出這樣乙個特點 學科基礎研究和技術開發越來越多地同數學建立更為緊密的聯絡,對各種數學工具的使用不僅越來越廣泛,而且越來越深入。要掌握好軟體程式設計,數學思維是非常重要的。先討論軟體...
數學和程式設計
好些人來信問我,要成為乙個好的程式設計師,數學基礎要達到什麼樣的程度?十八年前,當我成為大學計算機系新生的時候,也為同樣的問題所困擾。面對學數學,物理等學科的同學,我感到自卑。經常有人說那些專業的知識更加精華一些,難度更高一些,那些專業的人畢業之後如果做程式設計工作,水平其實比計算機系畢業的還要高。...