需求决定一切
院里请李德仁院士做讲座,慕名去听了一下,主题是从数字地球到智慧地球,通过这场讲座,我更加深刻的认识到了应用决定一切这个道理了,简要的谈一下我的理解。
第一次听到以应用为核心这个观点是在《计算机系统设计》课堂上,王芳老师提到“上层应用需求决定顶层系统架构”,我对这句话影响很深,联系到我读的一些文章,以及我了解的一些系统实例,无一不符合该观点。windows与linux的设计思想为什么不同,究其本质,主要是由于二者的需求定位不同,windows由于其桌面应用,故从设计最初,其就以良好的用户操作界面为核心,而其文件系统FAT则是以最简单的方式实现了文件管理功能,还有其他一些方面的丑陋设计经常在一些社区收到linux fans的鄙视;而linux从linus在社区上发布最初操作系统代码,一步步的改进,到后来广泛应用于服务器,都是以简单,高效为指导原则,linux的一些文件系统,高速缓存的管理等设计思想,会让你叹为观止。
我研究过一些分布式存储系统,有的定位于高效的读写性能,有的侧重于数据共享服务,有的侧重于高可靠性,不同的特性都会引起不同的架构设计,而这一切设计的源头则是设计系统的初衷,即设计这个系统要为用户提供什么样的服务。
在计算机行业,考卖软件赚钱的不少,而真正能发大财的都是那种需求量巨大,并且能很好的满足用户需求的软件,如系统软件windows xp,数据库软件oracle,还有几款成功的杀毒软件,视频编辑软件,文本处理软件。在一个大的软件当中,会包含很多模块,组件,而归根结底,这些模块,组件的存在还是决定于这个软件的需求分析。这也就是为什么软件工程里如此重视需求分析这一环节,不同的需求还会导致不同的软件开发模型,如果需求非常明确,后期不会有很大的改动,通常使用瀑布模型;而如果软件需求会随着时间不断增多,就适宜使用增量模型;对于不断变化的应用需求,可使用喷泉模型。
李院士介绍了一些项目,主要是关于数字地球,即将“地球”以数字的形式呈现给大众,有点类似于虚拟现实,如敦煌莫高窟的三维模型,香港仿唐古建筑的模型,这些资源非常珍贵,他们不可能永久存在,当某一天他们消亡了,我们仍然可以通过计算机看到他们实际的模样;为城市建立三维模型,让人方便的了解城市的全貌;还有在5.12大地震中,获取堰塞湖的的模型,建立地震博物馆,以便给领导人们提供决策参考,让人民大众更加深入的认识地震。从这里我们可以看到,李院士负责的这些项目,给人们的生活带来了很多好处,正式由于人们不断提高的物质及精神需求,导致了这一系列研究工作的开展。故我说社会需求决定社会行为,这些需求包括人们的日常生活保障需求,医疗保证需求,精神生活需求等,以日常消费为例,它催生了一大批大的零售超时,零售小商店,从而催生了经理,柜员,收银员,商场保安,小贩等一大批岗位,消费者的需求被满足,他认真的继续着它自己的工作,他可能是一个建筑工人,正在建造一幢宏伟的大楼,服务者满足了消费者的需求,获取了利益,他的老婆孩子可能正在等着他的这份工资一起去超市买衣服,如此也催生出了一个“和谐”的社会。最近又诞生了很多新的职业,如丧葬服务,出租时间(某女在淘宝上卖自己的时间,陪人吃饭,聊天解闷,帮人买东西等),代写博客,论文,代考,代养宠物等,“市场需求”催生了这些职业的诞生,“生活需求”推动这些人从事这些职业。
李院士还提到了他们为武汉市政府市长热线做的一个信息管理系统,该系统对武汉分成很多个管理区,每个管理区安排专人负责处理,当市长热线接到投诉时,系统对投诉信息进行处理,根据投诉信息确定投诉人所在管理区,并把投诉信息发到该管理区的负责人的手机上,负责人实地考察,处理之后,将一些资料通过手机传回给管理系统。这个系统看似简单,但其解决了实际问题,能提高为几百万武汉市民服务的效率。在十多年之前,信息管理系统非常之火热,因为其需求很大,企业的人事管理,薪金管理,高校的图书馆管理,机房管理,政府的交通管理系统等等都需要一个管理系统,而且当事从事计算机的专业人数不是很多,会做的人不多,据说当时应用系考做这个赚了不少钱。而现在,计算机专业已经人满为患,大部分的高校都设有计算机专业,高校里面的课程设计都要求做一个某某管理系统,做管理系统已经是一件很普通的技能,虽然把系统做到尽善尽美还是很难,但起码了解这些概念,有一些经验的人都觉得自己能做。那是不是管理系统在现在就没有市场了呢?我觉得不是这样的,技术有极限,需求无止境,只要你的产品能解决实际问题,能高效的服务人民大众,你的东西肯定是会有市场的。
李院士最后提到了物联网,以及从数字地球到智慧地球的转化,他认为智慧地球等于数字地球加物联网。毋庸置疑,互联网技术是人类一项具有革命性意义的成就,通过互联网,可以实现“秀才不出门,能知天下事”,每天你打开一个门户网站,可以了解到各个方面的大动态,你可以在网上看视频直播,你可以写博客向互联网散播你的观点,互联网将人和人紧密的联系到了一起;而物联网则是在互联网的基础上跟进一步,它将人和人,人和物紧密的联系到了一起,这时你就需要对“社会”这个词重新定义了,社会是人和人,人和物的关系综合,通过物联网,你可以实现“秀才不出门,能做天下事”,从而真正的实现“智慧地球”。
昨天听了关于lucene的介绍,lucene是一个基于java的全文检索引擎工具包,你可以方便的将它应用于文本检索方面,它实现了对非结构化数据如网页,电子邮件等的高效组织,我们知道,我们通常使用数据作为数据存储的仓库,通过它提供存取数据,检索数据的功能,但数据库组织的数据都是结构化的,不能很好的满足非结构化数据的组织,在日益增长的需求驱动下,一系列关于非结构化数据组织的研究在各大高校,企业开展起来。
我想说的是,需求决定一切,把这个概念应用到学习上,我觉得也是可行的。以前,我对该学什么,怎么学感到很迷茫,在本科的时候,A说应该学C++,B说应该学java,C说应该学.net,那我该学什么计算机语言呢?D说应该考一下思科,华为的网络工程师认证,E说应该考教育部软考的网络工程师认证,那我应该考什么认证? 就这样东听一点,西看一点,我越来越迷茫,迷茫了很久,老师告诉我们,我们应该宽口径的学习,多掌握一些知识总是好的。所以在老师们的“指导”下,我学了很多,我学了C语言,学了C++,还经常运用它们代笔写C语言课程设计,学过java,jsp,还做了个小网站,到后面我们有开了asp.net这么课,我也认真去学习,最后顺利的完成了老师的任务。慢慢的我发现语言很多地方都是通的,学了C和C++,对面向过程和面向对象的思想也就有所了解,不能再一味的接受语法,应该接受的是思想。不管学院开这么多相似的课程是出于什么目的,但通过所谓“宽口径”的教学计划,我的知识面的确拓展了很多,虽然对很多技术知识略懂一二。
大三的时候我考了教育部网络工程师的认证考试,当时只是出于它比企业认证要便宜,只需要125RMB,而思科,华为的认证考试都是上千,但现在回想一下,我选择这个考试是正确的。我大二的时候就有读研的想法,并且想尽量争取保研,通过软考可以给保研加分,而企业的认证则不行,另外,认证都有有效期,即使考了企业的认证,等我研究生毕业,恐怕它已经没有效用了吧。所以从需求的角度分析,我应该选择软考。
大四到实验室实习的时候,老师告诉我linux很重要,使我们以后的一个工作平台,要好好的掌握,于是我就开始看一本linux系统方面的书,学习书里的每个细节,从最简单的命令,到系统启动细节,到系统管理工具,我巴不得什么都学会。一段时间之后,我发现除了我经常用的一些命令之外,其它的都忘得差不多了。在对linux有一个总体认识之后,我意识到自己的方法有问题。首先,linux应用的文档支持相当好,对于很多管理配置,当需要用到的时候,根据详细的文档说明进行配置,肯定能完成,而没有必要在我们不需要的时候对其进行实例配置联系,下一次你的需求肯定跟你实例不同吧:其次,linux对我们很重要其实是因为在我们的项目中,我们需要借助这个平台来实现一些想法,应用,归根结底,它只是一个工具,我们能使用它为研究工作服务即可。最后,我们使用linux作为平台,主要是因为它的代码,思想都是公开的,设计思想好,模块化支持好,我们可以修改其代码,或是写一个模块来验证我们的思想,非常便于开展研究,当然如果漂亮的windows mm具备这些特性,我们会放弃linux gg的。
再次强调,我的观点是需求决定一切,不管做什么,先明确你的需求,让需求驱动你生活的方方面面,根据需求制定计划,根据需求完成设计,根据需求充实生活,让需求决定一切。