《C语言点滴》一1.5 内功修炼

本节书摘来自异步社区《C语言点滴》一书中的第1章,第1.5节,作者 赵岩,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.5 内功修炼

C语言点滴

1.5.1 数学

作为一个门外汉,我真的不敢在这里谈论数学的话题。直到我在网上看到南京大学数学系张高飞老师的一篇文章,我决定将全文转述在下面,下面分割线之间的就是张高飞老师那篇文章了。文章不长,但是让我这个悲情人物找到了自信,数学里面是有属于我的一个分支的,那就是计算数学!

正如大家所知,代数几何是现代数学的主流。当代大多数一流的数学家都工作在这一领域。因此如果你觉得自己天赋异禀,并在代数、几何与分析各方面都有着扎实的基础,我建议你绝不要浪费自己的天赋:应义无反顾地选择代数几何这一专业。当然把代数、几何与分析这三门基础功课同时学好的人很少。比如有些同学有着很好的分析功底,但代数中的抽象思维能力却相对显得薄弱。如果是这样的话,我建议你选择分析方面的专业,比如:复分析,分形,调和分析或微分方程。

除以上三部分同学之外,还有这样的一部分同学:他们对代数,分析与几何都不擅长,但却一直坚信自己在数学上仍能有所作为,并幻想有朝一日成为中国数学界的中流砥柱。如果你属于这部分同学中的一位的话,我建议你选择动力系统。动力系统这一学科其实就是专门为这部分同学开设的。

当然即使是动力系统也不是人人都能学的。因为动力系统需要大量的微积分。可总有那么一部分同学还没来得及把极限的概念搞清楚就大学毕业了(本文作者中枪)。如果你不巧就是这样一位同学,也就是说你大学四年压根儿就没学数学,但仍希望自己将来能在数学上一展宏图的话,我建议你选择组合数学这一专业。这一专业的特点就是它只用到中学的数学。如果你在中学时参加过数学竞赛并获过奖项的话,这一学科正是你大展身手的地方。

我想大多数同学看到这儿之前已经找到了适合自己的专业了。可若仍有人羞怯地说他在中学时早恋,因此连中学的数学也没学好,我想告诉这部分同学不要怕。在我们系有专门为你们开设的一个专业:统计学。这一学科只要求懂得小学数学中的加减乘除四则运算就够了。更重要的是,选择这一专业的大多都是女同学。在你准确无误地把成千上万个数据加起来并娴熟地计算出他们的均值时,你也赢得了众多师姐师妹的芳心:短短三年的研究生生活或许能让你再次体会一次那如花美眷,似水流年的往事……

最后这一条是专门针对那些悲情人物的。他们连小学的数学也没学好。不要说把上千个数加起来,就是把两个数加起来,对他们来说都是件很吃力的事。然而这一切丝毫没有削弱他们对数学的一片痴情。他们日日夜夜泡在图书馆里。他们翻阅了所有的数学文献,却从未找到一本能读懂的。但他们仍坚持不懈,为的就是找到一个适合自己的专业。他们的行为感动了上帝。上世纪的某一天,上帝为他们创造了一台机器帮他们计算,这就是计算机。借助计算机,他们可以很快地进行加减乘除的运算。这就是计算数学。

张老师的文章转述完毕,看来张老师也同意这样一种观点:数学学不好的学统计,统计学不好的才学计算机,这句话多少有点道理。确实,很多的计算机研究领域并不需要高深的、抽象的数学知识。但是大家千万不要以为学计算机就可以轻视或忽略数学。关于计算机和数学的关系,我只想说两点。第一点,数学很有用。数学对我们理解和使用数据结构和算法有很大的帮助。数学中,不仅数值分析、集合论、概率统计与分析这些课程可以直接应用到计算机相关应用中,同时,坚实的数学基础会给日后从事研究性质的工作带来巨大的帮助。如果你的数学学得非常好,你不仅拥有数学的知识,更重要的是拥有数学的思维,而数学的思维对从事计算机职业来说至关重要。

第二点,如果从应用的角度来理解数学,数学很简单。我们来举个例子。由一个最简单的问题谈起,我们要铺正多边形地砖,能够使得拼接处没有缝隙,正几边形能够满足这个要求?这个问题可以化解成另外一个问题,正多边形的一个内角的整数倍等于360度。我们继续推导这个问题,正n 边形总可以分割成n -2的三角形,所以正n边形内角和等于 (n-2)times {{180}^{circ }}。

这样,正n边形的每个内角就是


92be7c27e7c9ef3bdec403356220fd662f948b40

假设正n边形恰好需要m个围绕在一起而没有空隙,那么就可以得到


83b4136f359a279a16c81d7c6d2fbc2c872baa9b

经过简单地推导,最后可以得到(m−2)(n−2)=4,其中m和n必须为正整数,经过简单的口算,你就可以得到n只能是3,4,6。与之对应的是三角形,正方形,和正六边形。正八边形好像是满足要求,但是如果你尝试铺一下,就会发现这是不行的。也就是说,能够无缝隙的平铺一块地方的正多边形中,最大的就是正六边形。通常情况下,边数越多,周长相等的情况下所占面积就越大。所以……所以你想到了什么没有?蜂巢!没错,就是蜂巢。聪明的蜜蜂早就知道了这一原理,把自己的巢建成正六边形,如图1-14所示;另外,我们的手机采用的都是蜂窝网,这回你知道为什么了吧!怎么样,数学真的不难,而且非常有用吧。

既然正六边形有如此优良的特性,为什么我们超市里面装牛奶的盒子都是正方形,而不是正六边形的呢?这是因为牛奶一般都是放到货架上,正方形可以保证你能很方便地抽取出来啊!那为什么不设计成圆形呢?因为牛奶必须需要放到冰柜里,正方形可以保证最大限度地利用冰柜的空间啊!那为什么可乐瓶子都是圆的啊?因为一般可乐都是用手拿着喝的啊!那为什么……。好了,为了系统回答你的所有问题,我需要引入一门新的课程,这门课程叫做《软件工程》。他包含了商业、沟通、管理、市场、开发等方方面面。一个软件产品,技术很重要,但不是全部。这一点,苹果的乔布斯应该深有体会,下面我就叨咕叨咕软件工程这个东西。


c9d1a369dc3602329bcfe53e6a2e5b7f2fc271f0

图1-14 蜂巢

1.5.2 软件工程

对于软件工程,有一句表扬它的话,那就是:“懂得软件工程的程序员就不再是妓女了!”这句话来源于程序员圈内用于自嘲的一个类比,那就是程序员和妓女都是吃青春饭的。不过说句实话,我对表扬软件工程的这句话理解的并不是很透彻。

话说回来,软件工程这东西,真的很重要。如果有一个产业,大家都很努力工作,但是结果却会很差,那就是软件这个行业了。开发一个软件包含很多步骤,从需求设计与分析、系统设计,到软件实现、软件测试、部署和维护,其中每一个步骤又涉及到很多人,从用户到销售,从经理到程序员,从架构师到测试人员等。一个常见的情况就是程序员不了解用户,用户也不了解程序员;大部分时候,用户也不了解自己。这就造成了如图1-15所示的一个项目悲催的一生。


5be2f84954690189c7a1b7baca0a3e20fbbcb4c9

图1-15 一个软件项目悲催的一生

说到软件工程,不能不提到CMM(软件能力成熟度模型),这个是软件工程和软件管理的一个比较主流的模型。我曾经听过一个故事,国内的一个企业曾经派一些资深的员工去印度一家公司学习CMM模型。学习一年回国以后,中国员工并没有学会CMM,但是印度那家公司从此却不用CMM,改用中国模式了!后来这个公司改变了战略,第二次派了一批刚从学校毕业的学生去学习,终于取得真经,修成正果。从这个故事中,大家得到了什么结论呢?

还有一个真实的案例那就是微软公司,它开发软件的时候不用CMM进行管理,而是使用开发、测试、项目经理三个团队互相配合的方式来进行管理。

看来CMM这个东西也并不是传说中的那么神。就像炒菜一样,只要好吃就行,没必要偏得按照菜谱来。关于软件工程,我基本上不懂,所以也只给大家介绍这么多了。

我个人的一个感觉就是,软件工程这个东西很赚钱,而且无论是从课本上,还是从课堂上,你都学不来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值