论文部分内容阅读
人类在进化的历史中,从实践的对象上获取了许多智慧。软件作为一种新生实践对象,有其自身的发展规律,随其在社会中所产生的作用越来越大,也逐渐引起注意力的聚积。从新的角度对软件进行观察和思考,会发现大师的智慧。
对象:预制的房间
随着软件越来越复杂,人们用面向过程的编程方法遇到的问题越来越多。为了解决问题,人们发明并尝试了许多方法,诸如面向逻辑、规则、约束等方法。到目前为止,众多人认同了面向对象的方法。
对象是在一定环境中具有稳定状态、行为和标识的存在。面向对象的方法就是在软件编程中将对象抽象出来,以对象为主要作用客体进行操作。实际上,有很多对象是可以通用的。这样,在软件编程中就可以移植过去形成的对象,也可以预制一些通用性强的对象,在今后的编程中调用。以建房子作比喻,面向过程的方法是用砖头一块块地砌,面向对象的方法是用预制的房间一间间地加。显然,后者的效率要高得多。
面向对象是一种成功的智慧,在自然界和生产实践中都有应用。在自然进化中,不是以面向过程的方式连续进化的,而是以阶段进化的方式进行的。在进化的过程中,有停顿、有突变。在生产实践中总结出的高效率的方法,如成组加工、模块化生产等,都蕴含了面向对象的智慧。
语言:客户的“驱动器”
软件产生作用,要使涉及的对象能够识别并发生动作。人们在操作计算机时,用自然语言表达要求,软件将其编译为机器语言让计算机识别并产生输出。在网络环境中,所涉及的对象要多些,信息表达的方式也多样化。
以现在通行的TCP/IP协议为例,涉及链路层、网络层、传输层和应用层对象。链路层面对物理接口,以驱动程序表达信息;网络层面对信息传输网络,实现信息传输的分组选路功能,用IP(网间协议)、ICMP(Internet控制报文协议)、以及IGMP(Internet组管理协议)表达信息;传输层面对通信主机,实现端到端的通信功能,用TCP(传输控制协议)和UDP(用户数据报协议)表达信息;应用层面对操作者,处理应用程序的细节,用Telnet(远程登录)、FTP(文件传输协议)、SMTP(简单邮件传输协议)和SNMP(简单网络管理协议)表达信息。
经营有道的IT人,一般都能够针对不同背景的客户用其熟知的语言范式表达用意,有的人甚至深谙客户心理,用语言和行为指示或暗示客户达到预期的目的。不同的人在一定的环境中都有一定的驱动语言,我们在经营实践中要善于针对不同类型的客户总结提炼“驱动程序”,以使人们可以区别对待不同客户,提高经营能力。
扩展标记:沟通的中介
软件种类越来越多,为了实现不同软件之间的信息交互,发展出了XML(扩展标记言语)。现在通行的商业软件几乎都支持XML格式数据交换,许多网站页面都设有XML按钮,便于使用者将内容加入RSS浏览器中,能够将感兴趣的网站内容收集在一起浏览,并能与网站同步更新内容。
在没有XML时,不同软件之间交换信息需要由一方向另一方开放。对与实力平等的主体,谁先主动开放是个面子问题;对于实力不平等的主体,缺少沟通的条件。大公司一般不會向小公司主动开放软件接口,为了生存,小公司必须花费大量的精力破解大公司产品,极不利于软件生态的发展。一个良性发展的软件生态,应该是开放的,各软件间的信息可以相互识别。XML为软件的互动进化创造了条件。
在现实社会中,很多问题是由于缺少沟通产生的。有时双方都意识到了沟通的必要,但需要一方在形式上屈服于另一方,难以主动妥协。如果采用XML的智慧,双方都提供一种可以交互识别的中介,问题就能够解决了。
逻辑:触类旁通的规则
各种软件在形式上尽管不同,但只要是同类的应用,都有相似的逻辑。所以,我们在使用文字处理、图像识别、机械设计等软件时,只要弄懂一个类别的一种软件后,很容易触类旁通。有的逻辑,如图层处理逻辑,在各类图像处理和建模软件中都适用。
对软件的认识不同,所采用的方法不同,编写软件的效率就会大相径庭。有些人认为每个软件都不同,编写每个软件时都得从头做起。有些人看到了软件的共同处,平时注意提炼软件的共性部分,做些“无用功”。在编写软件时会在积累的基础上修改,效率很高。原来一种软件在多国销售时,要进行本地化修改。现在很多应用广泛的软件都配有多国语言包,可以统一安排生产,使用者安装时选择惯用的语言,就可各取所需。
事物都有表面现象和本质逻辑。如果只看到表面现象,就会一直处于穷于应付的循环中。只有抓住本质逻辑,处理事务的能力才会不断增加。从历史中我们可以看到,社会每一点进步,都与人类的抽象逻辑能力提高和与之相适应的价值观的变迁有关。社会进步如此,个人能力提高也如此。
整体:两相反之级之间的全部
为使软件编程“不造同样的车轮”,提高编程效率和可靠性,人们发明了UML(统一建模语言)。用UML可以对要开发的软件进行可视化描述,然后用软件开发工具,如Rational Rose,生成指定软件语言的代码。近来推出的Rose2000、Rose2002、Rose2003可以支持Java、VB、VC++等架构的代码生成。
软件编制作为一个新兴产业,从业人员就像过去的“缫丝工人”干着日复一日的高强度劳动。好在总有人努力改善自身的工作条件。人们设想有一天,软件的编程工作从宏观需求开始,落实在不同层次和细节的体系结构描述,经过实现工具选择,最后根据体系结构的描述就能够直接生成可考察和实用的软件。为了实现这一愿望,人们尝试了各种方法,经过实践选择,将UML确定为一种标准,使信息产业第一次拥有一个统一的建模语言。
许多人平时只注意做“有用”的事情,对短期“无用”的事情不屑一顾。所以,在我们周围充其量只能看到些软件工匠,而极难发现软件大师,这是值得国内软件业界人士深思的问题。
建模:统一的标准
尽管软件表现形式行行色色,但最终都要表达为机器语言才能被计算机识别而产生作用。按目前的认识水平,我们按发展进程可把软件分为五类:符号表达类、文字处理类、多媒体表示类、网络操作类和虚拟化类。这些软件虽然作用各不相同,但它们存在于存贮介质内的形式却是相同的——都是由“0”和“1”组成的数码。
现在有许多开发工具可供程序员使用,编写程序不用像老前辈那样处理枯燥的机器码。尽管程序员的处理对象在向更人性化的方向改变,但所产生软件的终极形式还都是“0”、“1”组成的数码。古人说:一生二,二生三,三生万物。在没有软件的时代,对“三”有些费解。从软件的角度看,这个“三”就是“0”和“1”组成的状态。
我们为了理解和处理复杂的事物,总是将其细分为相对简单的部分。按通常的道理,事物可以无限细分,但没有指出细分到怎样的层次才有意义。软件启示我们,事物可以抽象到“0”、“1”层次,用它们来表示。可以把这种认识进一步推演到事物整体:要掌握某一事物,要触及到极端相反的两部分,两相反之极之间规定的全部,才是事物的整体。
对象:预制的房间
随着软件越来越复杂,人们用面向过程的编程方法遇到的问题越来越多。为了解决问题,人们发明并尝试了许多方法,诸如面向逻辑、规则、约束等方法。到目前为止,众多人认同了面向对象的方法。
对象是在一定环境中具有稳定状态、行为和标识的存在。面向对象的方法就是在软件编程中将对象抽象出来,以对象为主要作用客体进行操作。实际上,有很多对象是可以通用的。这样,在软件编程中就可以移植过去形成的对象,也可以预制一些通用性强的对象,在今后的编程中调用。以建房子作比喻,面向过程的方法是用砖头一块块地砌,面向对象的方法是用预制的房间一间间地加。显然,后者的效率要高得多。
面向对象是一种成功的智慧,在自然界和生产实践中都有应用。在自然进化中,不是以面向过程的方式连续进化的,而是以阶段进化的方式进行的。在进化的过程中,有停顿、有突变。在生产实践中总结出的高效率的方法,如成组加工、模块化生产等,都蕴含了面向对象的智慧。
语言:客户的“驱动器”
软件产生作用,要使涉及的对象能够识别并发生动作。人们在操作计算机时,用自然语言表达要求,软件将其编译为机器语言让计算机识别并产生输出。在网络环境中,所涉及的对象要多些,信息表达的方式也多样化。
以现在通行的TCP/IP协议为例,涉及链路层、网络层、传输层和应用层对象。链路层面对物理接口,以驱动程序表达信息;网络层面对信息传输网络,实现信息传输的分组选路功能,用IP(网间协议)、ICMP(Internet控制报文协议)、以及IGMP(Internet组管理协议)表达信息;传输层面对通信主机,实现端到端的通信功能,用TCP(传输控制协议)和UDP(用户数据报协议)表达信息;应用层面对操作者,处理应用程序的细节,用Telnet(远程登录)、FTP(文件传输协议)、SMTP(简单邮件传输协议)和SNMP(简单网络管理协议)表达信息。
经营有道的IT人,一般都能够针对不同背景的客户用其熟知的语言范式表达用意,有的人甚至深谙客户心理,用语言和行为指示或暗示客户达到预期的目的。不同的人在一定的环境中都有一定的驱动语言,我们在经营实践中要善于针对不同类型的客户总结提炼“驱动程序”,以使人们可以区别对待不同客户,提高经营能力。
扩展标记:沟通的中介
软件种类越来越多,为了实现不同软件之间的信息交互,发展出了XML(扩展标记言语)。现在通行的商业软件几乎都支持XML格式数据交换,许多网站页面都设有XML按钮,便于使用者将内容加入RSS浏览器中,能够将感兴趣的网站内容收集在一起浏览,并能与网站同步更新内容。
在没有XML时,不同软件之间交换信息需要由一方向另一方开放。对与实力平等的主体,谁先主动开放是个面子问题;对于实力不平等的主体,缺少沟通的条件。大公司一般不會向小公司主动开放软件接口,为了生存,小公司必须花费大量的精力破解大公司产品,极不利于软件生态的发展。一个良性发展的软件生态,应该是开放的,各软件间的信息可以相互识别。XML为软件的互动进化创造了条件。
在现实社会中,很多问题是由于缺少沟通产生的。有时双方都意识到了沟通的必要,但需要一方在形式上屈服于另一方,难以主动妥协。如果采用XML的智慧,双方都提供一种可以交互识别的中介,问题就能够解决了。
逻辑:触类旁通的规则
各种软件在形式上尽管不同,但只要是同类的应用,都有相似的逻辑。所以,我们在使用文字处理、图像识别、机械设计等软件时,只要弄懂一个类别的一种软件后,很容易触类旁通。有的逻辑,如图层处理逻辑,在各类图像处理和建模软件中都适用。
对软件的认识不同,所采用的方法不同,编写软件的效率就会大相径庭。有些人认为每个软件都不同,编写每个软件时都得从头做起。有些人看到了软件的共同处,平时注意提炼软件的共性部分,做些“无用功”。在编写软件时会在积累的基础上修改,效率很高。原来一种软件在多国销售时,要进行本地化修改。现在很多应用广泛的软件都配有多国语言包,可以统一安排生产,使用者安装时选择惯用的语言,就可各取所需。
事物都有表面现象和本质逻辑。如果只看到表面现象,就会一直处于穷于应付的循环中。只有抓住本质逻辑,处理事务的能力才会不断增加。从历史中我们可以看到,社会每一点进步,都与人类的抽象逻辑能力提高和与之相适应的价值观的变迁有关。社会进步如此,个人能力提高也如此。
整体:两相反之级之间的全部
为使软件编程“不造同样的车轮”,提高编程效率和可靠性,人们发明了UML(统一建模语言)。用UML可以对要开发的软件进行可视化描述,然后用软件开发工具,如Rational Rose,生成指定软件语言的代码。近来推出的Rose2000、Rose2002、Rose2003可以支持Java、VB、VC++等架构的代码生成。
软件编制作为一个新兴产业,从业人员就像过去的“缫丝工人”干着日复一日的高强度劳动。好在总有人努力改善自身的工作条件。人们设想有一天,软件的编程工作从宏观需求开始,落实在不同层次和细节的体系结构描述,经过实现工具选择,最后根据体系结构的描述就能够直接生成可考察和实用的软件。为了实现这一愿望,人们尝试了各种方法,经过实践选择,将UML确定为一种标准,使信息产业第一次拥有一个统一的建模语言。
许多人平时只注意做“有用”的事情,对短期“无用”的事情不屑一顾。所以,在我们周围充其量只能看到些软件工匠,而极难发现软件大师,这是值得国内软件业界人士深思的问题。
建模:统一的标准
尽管软件表现形式行行色色,但最终都要表达为机器语言才能被计算机识别而产生作用。按目前的认识水平,我们按发展进程可把软件分为五类:符号表达类、文字处理类、多媒体表示类、网络操作类和虚拟化类。这些软件虽然作用各不相同,但它们存在于存贮介质内的形式却是相同的——都是由“0”和“1”组成的数码。
现在有许多开发工具可供程序员使用,编写程序不用像老前辈那样处理枯燥的机器码。尽管程序员的处理对象在向更人性化的方向改变,但所产生软件的终极形式还都是“0”、“1”组成的数码。古人说:一生二,二生三,三生万物。在没有软件的时代,对“三”有些费解。从软件的角度看,这个“三”就是“0”和“1”组成的状态。
我们为了理解和处理复杂的事物,总是将其细分为相对简单的部分。按通常的道理,事物可以无限细分,但没有指出细分到怎样的层次才有意义。软件启示我们,事物可以抽象到“0”、“1”层次,用它们来表示。可以把这种认识进一步推演到事物整体:要掌握某一事物,要触及到极端相反的两部分,两相反之极之间规定的全部,才是事物的整体。