1. 程式人生 > 其它 >《程式設計師的數學》讀後感

《程式設計師的數學》讀後感

技術標籤:讀書思考程式語言

書是人類進步的階梯,我通常希望能遇到一些好的書籍為現實中的我答疑解惑。
《程式設計師的數學》這本書不僅為我提供了思考問題的許多路徑,也讓我對數學的有了新的認知。
我對該書的所有工作者表示感謝,謝謝!

我認為這本書的最大亮點是對給定問題在不同弄角度上的思考。我對程式設計的理解就是抽象+自動化,這些不同角度的思考對於問題的抽象大有裨益。例如在第一章指數法則中對0次方的理解。我們通常將“10的n次方”理解為“n個10相乘”,這在0次方的情況下顯然讓人抓狂,書中利用了重新定義的方法巧妙得將指數定義為基數的倍數關係,從而達到統一標準,簡化規則的作用。這給我的啟示是:當面對一些難以理解的事物時,不妨試試思維上的重新定義,也許問題就變清晰了。

邏輯,這兩個字是簡潔而美麗的,它是消除歧義的工具。本書反覆強調不遺漏,不重複的概念,提醒我在分析問題是要兼顧完整性和排他性。在邏輯這一章中,作者通過舉例與圖示詳細地說明了與、或、非、異或、相等、蘊含這六種常用的邏輯表示式,再通過卡諾圖把複雜的邏輯表示式化簡為簡單表示式,這是幫助程式設計師思考邏輯的強有力工具。此外,不得不提一些帶條件的邏輯,如if(A&&B)、if(A||B),它們在程式中是極為常見的,不看此書,我看到這樣的表示式一般都不是如下思考的(雖然C++老師上課講過,但讀別人程式碼時常常並不會這樣思考,寫這文章主要是提醒自己,養成習慣吧)
帶條件的邏輯與:應根據條件A判斷是否需要看B

if(A&&B)
{
}
//等價於
if(A)
{
	if(B)
	{
	}
}

帶條件的邏輯或

if(A||B)
{
...
}
//等價於
if(A)
{
...
}
else
{
	if(B)
	{
	...
	}
}

通過if語句就可以將問題分為條件成立和條件不成立兩個部分。

書中還提到許多有用的知識,如利用餘數分組、通過排列組合計數、遞迴問題等等。這些東西看似大家都學過,但我們怎麼知道別人是怎麼理解的呢?別人的理解對我們有沒有什麼幫助呢?讀這本書最重要的是汲取書中一些化繁為簡、抽象化思考等一些思考方式,從而對我們解決生活中的實際問題。保持謙虛,踏實學習,我們將收穫更多!

感謝您的閱讀。