书是人类进步的阶梯,我通常希望能遇到一些好的书籍为现实中的我答疑解惑。
《程序员的数学》这本书不仅为我提供了思考问题的许多路径,也让我对数学的有了新的认知。
我对该书的所有工作者表示感谢,谢谢!
一
我认为这本书的最大亮点是对给定问题在不同角度上的思考。我对编程的理解就是抽象+自动化,这些不同角度的思考对于问题的抽象大有裨益。例如在第一章指数法则中对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语句就可以将问题分为条件成立和条件不成立两个部分。
三
书中还提到许多有用的知识,如利用余数分组、通过排列组合计数、递归问题等等。这些东西看似大家都学过,但我们怎么知道别人是怎么理解的呢?别人的理解对我们有没有什么帮助呢?读这本书最重要的是汲取书中一些化繁为简、抽象化思考等一些思考方式,从而对我们解决生活中的实际问题。保持谦虚,踏实学习,我们将收获更多!
感谢您的阅读。
本文分享了《程序员的数学》一书如何通过重新定义、逻辑分析和实用技巧,帮助理解指数法则、逻辑表达式,以及如何化繁为简解决编程中的问题。作者强调了抽象思维和逻辑在编程中的关键作用,并提供了解决复杂逻辑问题的卡诺图实例。
5229





