软件之美
上QQ阅读APP看书,第一时间看更新

1.2 软件是人类思维的直接产物

软件是人类思维的直接产物。软件分为有形和无形两个部分:有形部分是指软件的各种具体表现形式,包括程序代码、用户界面、软件文档等;无形部分是指软件折射出的软件开发者和使用者的指导思想、世界观、思维方式、情感、文化素养、审美情趣等人文因素。因此,软件是人软合一的,对于软件工作者,注重提高自身的思维深度、拓宽自身的思维宽度非常重要。

1.2.1 全局思维和统筹思维

《大涅槃经》卷三十二:“譬如有王告一大臣。汝牵一象以示盲者。尔时大臣受王敕已。多集众盲以象示之。时彼众盲各以手触。大臣即还而白王言。臣已示竟。尔时大王。即唤众盲各各问言。汝见象耶。众盲各言。我已得见。王言。象为何类。其触牙者即言象形如芦菔根。其触耳者言象如箕。其触头者言象如石。其触鼻者言象如杵。其触脚者言象如木臼。其触脊者言象如床。其触腹者言象如瓮。其触尾者言象如绳。善男子。如彼众盲不说象体亦非不说。若是众相悉非象者。离是之外更无别象。善男子。王喻如来正遍知也。臣喻方等大涅槃经。象喻佛性。盲喻一切无明众生。”

这个“盲人摸象”的故事告诉我们人类的思维是有局限性的,应避免以点代面、以偏概全,应从多角度、多方面考虑问题,从全局来考虑问题。我们写一个软件,需要搭架构;写一段程序,需要有一个大体框架。这都需要具备全局思维和统筹思维。而且软件工程管理中不仅要有全局意识,还应分清工作先后次序。大家熟知的田忌赛马就是一个全局思维的经典案例。

1.2.2 复用思维

软件复用思维的思想是以已有工作为基础,将已有软件的分析、设计、编码、测试等软件成分应用于新软件的设计与建造,包括项目计划、可行性报告、需求定义、分析模型、设计模型、详细说明、源程序、测试用例、类库和构架库等。可以被复用的软件成分称为可复用构件,通过对可复用构件的再使用,可以减少重复劳动,缩减开发和维护费用,提高软件开发效率。

1.2.3 分治思维

俗语说:大事化小,小事化了。软件是复杂的,常常看起来千头万绪没有思路,这时需要分治思维,将复杂的问题拆解成一个个简单的问题,再各个击破。

分治,即“分而治之”,是把一个复杂的大规模的问题分成多个较小规模的子问题,最后将子问题的解合并即可得到原问题的解。

程序设计时,分治思维法类似于数学归纳法,即一定要先找到最小规模问题的求解方法,然后考虑随着问题规模增大时的求解方法,找到求解的递归函数式,最后设计递归程序即可。

1.2.4 算法思维

算法思维是计算机解决问题的重要手段,是计算机科学鲜明的特征之一。我们编写程序就是思维变算法、算法变代码的过程。

2016年3月,谷歌公司的AlphaGo以4:1战胜李世石,标志着此次人机围棋大战,最终以机器的完胜告终。AlphaGo的胜利,是深度学习的胜利,是算法的胜利。随着信息爆炸式飞快增长,越来越多的挑战需要靠卓越的算法来解决。在很多领域,算法所产生的性能改进已经超过了硬件所带来的性能提升,例如语音识别、神经语言处理和物流领域。我们这个世界,正是建立在算法之上,算法正在创造一个抽象的新时代。如果我们想更好地理解和掌控未来,必须更好地掌握算法思维。

对于软件工作者,算法永远是“内功”。

1.2.5 逻辑思维

逻辑思维,又称抽象思维,是通过分析、综合、抽象、概括等方法的协调运用,揭露事物本质与规律的认识过程。它是认知因果关系的思维方式。

程序设计是以逻辑思维为基础的,程序代码的编写可以说是逻辑语句的组织。程序员需具备严密的逻辑思维能力,这是进行纷繁杂乱的需求分析必备的条件。一般地,一个人思维层次越高,他同时可控的思维维度就越广,在分析和解决复杂问题时自然就灵活机敏,智慧超群。

1.2.6 创新思维

爱因斯坦有句名言:“A person who never made a mistake never tried anything new.”(一个从不犯错误的人,一定从来没有尝试过任何新鲜事物。)

哥伦布发现美洲时,许多人认为他运气好。有一次,在一个盛大的宴会上,一位贵族向他发难道:“哥伦布先生,我们都知道,美洲就在那儿,你不过是凑巧先上去了而已!如果是我们去也会发现的。”这时,哥伦布拿起桌上一个鸡蛋说:“请问你们谁能把这个鸡蛋立在桌子上?”大家跃跃欲试,却一个个败下阵来。哥伦布微微一笑,拿起鸡蛋,在桌上轻轻一磕,就把鸡蛋立在那儿。哥伦布随后说:“是的,就这么简单。发现美洲确实不难,就像立起这个鸡蛋一样容易。但是,诸位,在我没有立起它之前,你们谁又做到了呢?”

很多时候,人们会说,“这也算是创新吗?原来我也知道啊!”创新就这么简单,关键在于我们敢不敢突破定式思维,从一个新的角度去看问题,并且肯不肯大胆去尝试。

1.2.7 情感化思维

人们对产品的情感需求越来越高,所以当代设计的发展趋势必然是需要把人类的情感需求充分融入设计之中。情感理念与软件设计的融合,既能将设计者置身于一个更美好和感性的设计世界,也能为使用者创造出一种美好愉悦的、温暖惬意的诗意情境,增加设计价值。设计是需要情感的,情感化思维对于软件设计者意义重大。

1.2.8 艺术思维

为什么苏步青会写诗,李四光能作曲?为什么爱因斯坦拉得一手好提琴?科学和艺术都是人类精神领域里的创造性思维活动,这就是学科间交融的必要性。

科学和艺术是永远连在一起的,科学思维与艺术思维能够互相影响、互相渗透、互相促进。正如著名的科学家钱学森所说:“这些艺术里所包含的诗情画意和对人生的深刻的理解,丰富了人们对世界的认识,学会了艺术的广阔思维方法。或者说,正因为受到这些艺术方面的熏陶,所以才能够避免死心眼,避免机械唯物论,想问题能够更宽一点、活一点”。

钱学森常说,他在科学上的成就,得益于小时候的艺术素质培养,因为人的全面素质的培养能够拓宽思维宽度。钱学森在美国加州理工学院除了参加美国物理学会、美国航空学会和美国力学学会之外,还参加了美国艺术与科学协会。钱学森说:“科学家不是工匠,科学家的知识结构中应该有艺术,因为科学里面有美学。”

诺贝尔物理学奖获得者李政道教授曾主编出版了大型画册《科学与艺术》,积极倡导“科学要与艺术相结合。”

我们每一个人都在过往的种种机缘里,由于某些错误的人生观与价值观,形成了种种的心智模式障碍,这些障碍禁锢了我们,让我们迷失了自性,成为一个不豁达、不自在、不快乐的人。如果我们能够通过进德修业,构筑欢喜、善良、美好的内在心智模式,那么我们就会在软件活动中展现出美好的心境,并通过设计语言传递出去,我们的设计就会给用户带来更多的关照、尊重和愉悦。

1.2.9 灵性思维

灵性思维是指一种具有启发性、创造性和生命力的思维,是一种“觉悟”“觉照”“心里透亮明白”的感觉,是属于智慧层面上的一种对事物的认识。灵性思维区别于聪明与知识,是超越主观思想与世俗经验的一种心灵感悟与体验,是一种“思维之外的思维”。

人们一直都生活在自己的各种“知见”当中,而人的种种“知见”和“观念”的形成,大都来自人对万事万物(包括人、事、物)不断发现与认识所总结出的“经验”的认同、肯定与执着。

正因这种“执着”,我们这些“知见”和“观念”在帮助我们认识自己与世界的同时,也在不知不觉中极大程度地限制了我们的心灵与思想。久而久之,束缚了我们的创造力,使我们的思维单一化、单向化、机械化和程序化。

《庄子》中有这样一个故事:

有一天,惠子找到庄子说:“魏王给了我一颗大葫芦籽儿,结果长出一个有五石之大的大葫芦来。因为这葫芦太大了,所以它什么用都没有。我要是把它一劈两半,把它当个瓢盛水的话,那个葫芦皮又太薄,盛上水一端就碎了,用它去盛什么东西都不行。想想葫芦能干什么用呢?不就是为了最后劈开当瓢来盛东西吗?什么都干不了。葫芦虽大,却没有作用,我把它打碎算了。”

庄子听完就给他讲了一个故事:“宋国一户人家有一个不会皴手的秘方,这户人家世世代代依靠这个秘方以漂洗为生。后来这个秘方被一个商人重金买去献给吴王,吴王就让此人在寒冬带兵出征,水战于越国,并取得了胜利,这个人也被吴王裂土封侯。”

庄子讲完告诉惠子:“有五石之瓠,何不虑以为大樽而浮乎江湖,而忧其瓠落无所容?”意思是这五石的大葫芦也是一样,你为什么就非得认为它只能剖开当瓢?难道就不能把它系在身上浮游于江湖之上吗?难道一个东西,必须加工成某一种规定的东西才有用吗?

另一个故事是发生在非洲某国的真实事情,六名矿工在深井下采煤时,突发事故,矿井坍塌,出口被堵住,导致矿工们与外界隔绝。凭借经验,他们知道自己面临最大的问题是缺氧,井下空气最多能让他们生存三个小时。其中只有一位矿工戴有手表,大家决定由戴表的人每隔半个小时向大家通报一次时间。第一个半小时过去了,这名矿工虽然轻描淡写地给大家通报了一下,但是他内心却是异常的紧张和焦虑,因为这是在向大家通报死亡的临近。第二个半小时到了,他突然灵机一动,决定不让大家死得那么痛苦,他没有按时通报,直到又过了十五分钟后他才告诉大家过了一个小时。就这样,又过了一个小时,他第三次告诉大家时,同伴们都以为时间只过了90分钟,只有他知道135分钟已经过去了。慢慢大家因为缺氧,意识都逐渐模糊了。在事故发生四个半小时后,救援人员找到了他们,令他们感到惊异的是,六人中竟有五人还活着,只有一人窒息而死——他就是那个戴表的矿工。

通过这两个故事的启发,我们感悟到,第一,我们现有的主观思维与认识不一定都是正确的,即便是正确的,也不过是一部分而已,还存在着很大的局限性,这种局限性严重地禁锢着我们。就如矿工自己认定最多只能活三个小时,那就只能活三个小时。第二,对宇宙万物的认识是无止境的,存在着无限的可能性。而这种认识的高度取决于以人自身境界为基础的心灵“感悟”或“体悟”,是一种自上而下的“觉照”,而不是以“认识对象”为中心的研究与分析。正如庄子与惠子对于葫芦的不同认识。

综上所述,这种灵性思维对于我们来讲,无论人生还是事业,无疑有着积极正面的意义,软件工作者更应加强这方面的意识与锻炼,从而不断地扩展思维,开发智慧,提升境界,使我们不至于陷入狭隘的越走越窄的“绝境”,从而获得一个完整、不对立的健康人格和一个慈悲智慧的心灵,最终拥有一个吉祥幸福的人生。

附图1.1 张柏洲摄影作品《畅想》

附图1.2 张柏洲摄影作品《花之语》

附图1.3 申伟光油画作品