如何用面向对象的方式来描述一盆花

作为一个准程序员或程序员,我们言必称“程序员思维”,那么程序员思维到底是什么?

什么是程序员思维?

前天参加智游双选会的亦策软件负责人王总在面试时指着办公桌上的绿萝出了这样一道题:“请用面向对象的方式给我描述一下这盆儿花。”

这就是典型的测试程序员思维的一道题。

简单来说,编程思维是看问题一种思维方式。

小时候去亲戚朋友家,妈妈事先交代,进了门,要叫叔叔阿姨好。编程也是做差不多的事情。程序是一连串的指令,告诉电脑什么条件下做什么事情。而编程就是把人要做的事情,通过程序翻译成电脑听的懂的话。

但同一件事情,有的人可以说的妙趣横生,有的人说得冗长乏味,有人说的言简意赅,有人说的意味深长,和人说话的技巧是口才,和电脑说话的技巧就是编程了。

魔方在一个人眼里是方块,在另一个人眼里就可能是公式和组合。软件在我眼里可能只是窗口和菜单,而在你眼里就是一本复杂的说明书,只不过是写给电脑看的。

而所谓程序员思维,不过就是怎么把说明书写的更简单些。

“程序员思维”有什么用?

我们在编程中接触到的很多人,你会惊奇的发现他们中有些人写了四五年程序后,程序的质量甚至比十几年经验的人要好很多。与他们聊天的时候,就发现导致这种现象的原因在于他们思维方式的不同。

有很多十几年编程经验的人,很多时候只是在用感觉编程。在长期编程过程中形成的某些思维定势帮助他们能够快速的完成编码工作,但是仅限于此。而那些年少却有能力的人,虽然年轻但是能够编写高质量的代码。因为他们不是通过经验积累获得编码能力,而是通过理论学习,并且快速的消化掌握了和十年多经验同事一样的思维定势。不一样的是,他们还能通过理论触类旁通,写出更高质量的代码。

“菜鸟”和“大神”差距就表现在“程序员思维”上。

如何培养“程序员思维”?

程序员的思维有一个专业术语,叫做计算思维,计算机科学的理论知识如数理逻辑、离散数学、数据结构、算法以及面向对象都是计算思维的必要条件。

计算思维有一系列的智力工具,不能一一尽述,仅列举关键的几项如下:

抽象思维(abstractthought)。给定一个问题,抽象就是去掉纷繁芜杂的与计算无关的部分,用规约的方法还原到问题的本质。所谓本质即把原来的问题转换为一个或几个可以使用计算机描述并解决的问题。

一般在实际工作中,常常需要把问题的实体对象根据需求表示为各种数据结构如树、堆、栈等,而业务逻辑过程表示为各种算法如排序和查找等。“表示”是解决问题的第一步,也是关键的一步。

在程序员的实践中,我们都有很深的体会,一旦问题被准确的无歧义表示出来了,解决方案就烘云托月般地呈现出来了。这就是“数据即代码,代码即数据”的道理。

逻辑推理(Reasoning)。逻辑推理对于程序员的重要性不言而喻。与其说逻辑推理用于程序新功能的开发,毋宁说更多的应用在程序调试修改BUG的过程中。

程序调试有点类似于摩尔摩斯侦破案件的过程。和华生比较起来,福尔摩斯的推理优于常人的地方有两点:

第一,在观察现场或听取来访者叙述时,他能够得到更多的的数据,尤其是一些别人容易忽略的关键的细节,这得益于他对犯罪领域知识的丰富积累,知道什么才是更重要的数据;

第二,根据得到的数据,他能够联想到更多的可能的结论,这得益于他大量的案例储存。

有了这两点,就能够通过一环套一环的推理链逐渐缩小侦察范围,最终认清犯罪事实。

程序调试也是如此,首先必须掌握程序实际的执行过程的细节。然后从问题出发,分别朝着产生的原因和导致的后果前后两个方向推理。逐渐定位问题的范围,最终找到问题的根源和解决的方案。

我们比福尔摩斯幸运的是可以借助于调试工具来了解程序运行的过程,所以一个不能使用调试工具的程序真是令程序员感到无比沮丧,只能通过trace信息来跟踪程序运行的过程。如果不知道程序运行的过程,推理就只能靠猜,那么修改BUG是非常危险的,很容易导致回退(Regression)的错误,因为这种情况下如同瞎子摸象,根本不知道自己在做什么。

另外,福尔摩斯还多次表达过这样的观点,案子越是离奇,越容易解决,因为Singularityisalmostinvariableaclue(奇点几乎是不变的一条线索)。

对程序员来讲,也不必担心奇怪的问题,奇怪本身就是线索。关键看对程序运行细节的了解程度和逻辑推理的技术水平。

分析(Analysis)。分析是上文提到的数学家所用思维方式中从一般到若干特殊情况的过程。

面对一个问题,如果一下子描述不清楚或者表示不出来,可以先找出满足问题条件的几种特殊情况。通过仔细检查这几种特殊情况,求同存异,找出他们共同的规律或模式,并对这些模式或规律加以验证,就可以找出描述或表示问题的方法。这就是猜测加验证的过程。

项目需求分析时常见的应用案例分析方法,就是用一个个具体的使用案例将模糊的项目需求生动的表达出来。

分解(De







































北京正规治疗白癜风医院
北京治疗白癜风的医院哪家比较好



转载请注明:http://www.92nongye.com/tlfc/204613010.html