您的位置:首页 > 理论基础

环境与应用、抽象与分解 ——计算机与生活感悟之一

2007-11-21 23:48 274 查看
——题记:从考研完成到现在已近两月,在这两个月中,发生了很多很多的事。从考试后的极度沮丧的失败感、无钱无房的困境到后来工作的劳累和艰辛,从过年回来感受到了对创业项目的激情到无意的进入北大计算机系的复试……一连串的事情让我竟然很少有闲暇来整理自己的这段时间的得失与感悟。今日又是偶然重新拿起自己的《考研历程记录》,看着这不到两月却有些封尘的记忆,心里猛然跳动了一下。于是决定拿出时间来,给自己一个机会去触摸很些曾经或美好、或苦痛,或狂妄、或消沉的回忆。适逢下周将要笔试《软件工程》,便将这篇计算机与生活的文章修改录入,也算是对自己和关注我的博客的朋友一个“交待”罢。
环境与应用、抽象与分解
——计算机与生活感悟之一
如果突然有人问你,你学了这么多年的计算机,你对计算机体系感受最深的是什么呢?
这个个问题莫明的出现在我的脑海里,于是定了定神,好好的想了想。突然想到了十个字——环境与应用、抽象与分解,这十个字不仅对计算机至关重要,还影响到我对计算机、甚至我对于生活的思维习惯。
我理解的环境是指计算机应用在一个特定的硬件和软件系统的集合体。计算机科学一直要解决问题只有一个,那就是如何在这个包括了硬、软件的计算机体系环境中,通过对现实世界进行建模,最终在这个环境中建立起满足某些功能的计算机应用系统。而在这个从环境到应用的映射中,抽象与分解扮演着至关重要的角色。
这或许有些抽象,让我先举一个计算机和生活中的例子做为类比,来阐述环境的重要性。内排序是计算机数据结构与算法中讨论的一个重要主题,按身高排队做操也是我们初、高中生活的重要场景。试想:他们的环境有什么不同,又如何去影响他们对于算法的选择呢?内排序是在内存中进行的,内存的特点是随机存取,且交换两个数据与这两个数据在内存中相隔的距离无关。而按身高排队则不然,它是人与人在操场上进行的(或者说在地球上,其重力是影响其排队的一个重要因素J),距离的长远和“算法”的复杂会影响两个交换的跑动时间和反应时间。基于这样的因素考虑,计算机会选择“快速排序”这个快速而复杂的排序算法,而我们现实生活中的排队却会选择“冒泡交换排序”或者“(老师来)选择排序”,再或者是“(按自己的感觉或老师的指令来进行)插入排序”,而三种算法在计算机中都是简单排序算法,其平均时间复杂度为O(n2),尤其是冒泡排序,被张铭老师斥之为“最低级而垃圾的算法”。所谓“龙入浅水遭虾戏,虎落平原被犬欺”或许也折射了生活中环境与个有“应用”的微妙而重要的关系。同理,我们可以得出一个结论:开发一个应用系统,首要考虑的就是运行基于的环境因素。
在给定了一个环境之后,又如何能面向应用需求,设计并实现出符合应用需求的高效系统呢?分解与抽象在其中起着至关重要的作用。所谓分解,就是面向高层(应用相对环境,应用是最高层,环境——包括二极管等原始的环境开始是最底层)对其按某种方式(如从顶向下的结构化思路、面向对象的分析设计)从思维、逻辑或功能上进行分解,使其一分为几个相对独立的模块。所谓抽象,是面向底层,隐藏低层的各种差异和复杂实现,通过层层抽象向高层提供一个统一的平台或接口。两者相辅相成,前才从顶向下,后底向上,从门逻辑到集成电路,从二进制语言到高级程序语言,从最早的无操作系统、单道批处理系统到现代操作系统,无一不是逐步分解、层层抽象,最后从一个个“电子管”、构建了整个庞大而复杂的计算机系统大厦。
在生活中,这种分解与抽象的概念也革新了我自己的思维习惯。面对一个问题,我现在的习惯是,把它化成一个个小的整体,再分而治之,再归纳总结,找出其中的共性。或者先从一个基本内核做起,再层层抽象扩展,最终达到自己的目标。
其实我们的人类和人生又何尝不是因环境的不同层层“抽象”而成的?所以有了基于同一个民族的不同的人群和思想;有了基于同一个人的少年、青年、老年。可惜的是,人类和计算机不同,即便两个人有相同的环境,也会不会有相同的思想;可惜的是,人生就像一个上帝脑中运行且只能运行一次的计算机,没有重启,没有精确的内存记忆……或许,也正是人和人的这种不相似性和不可预测性,才使得我们的人类世界如此的在丰富多彩;或许,也正是人生可以但只能运行一次,我们才会珍藏过去存储的记忆,珍惜现在生命运行的过程,畅想未来人生结果数据的完美和永恒……
谷穗
2007-1-1日写于北大四教502室
2007-3-18录入并修改于八里庄西里
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: