最近一位朋友提到了在一个项目中的设计思想:
要实现一个类似电信增值服务的软件(就像我们经常接触的系统:“话费查询请按1,缴费请按2...”)
他的设计思想是将拨号、话音操作等基础操作做成一个个原子操作。这些原子操作功能很单一,因而
他的实现很可靠。然后他又自己实现了一个业务规则层,相当于一个特殊的语言,然后还有一个解释
器将规则转化成 原子操作序列,这样在保证可靠性的同时,系统的灵活性也很高。如果要添加一个
新的业务,如果没有加入新的原子操作,只需几分钟编写一个新的业务规则即可。
听完他的叙述,我第一个反映便是 cpu指令集,编译器,程序代码,是不是很像。
计算机体系中很多地方硬件和软件都有相同的设计思想,硬件体系中有cache,软件中很多服务器为了
提高性能也用cache。硬件体系中有分层思想,软件中也有。cpu技术中有流水线结构,软件中有并行处理。
等等。。。
所以,我觉得做软件的如果对硬件也了解一些,那会提高他的软件设计能力。因为硬件,软件很多地方是
相通的,很多思想可以借鉴。如果某人对硬件很精通,同时又对软件很精通,那么他在开发软件时,我想他
设计的系统,写出的代码可能远强于一般人。每个人的精力都有限,也许这是幻想。
本人水平有限,很多理解或者认识还不到位。误导之处,还请见谅。
要实现一个类似电信增值服务的软件(就像我们经常接触的系统:“话费查询请按1,缴费请按2...”)
他的设计思想是将拨号、话音操作等基础操作做成一个个原子操作。这些原子操作功能很单一,因而
他的实现很可靠。然后他又自己实现了一个业务规则层,相当于一个特殊的语言,然后还有一个解释
器将规则转化成 原子操作序列,这样在保证可靠性的同时,系统的灵活性也很高。如果要添加一个
新的业务,如果没有加入新的原子操作,只需几分钟编写一个新的业务规则即可。
听完他的叙述,我第一个反映便是 cpu指令集,编译器,程序代码,是不是很像。
计算机体系中很多地方硬件和软件都有相同的设计思想,硬件体系中有cache,软件中很多服务器为了
提高性能也用cache。硬件体系中有分层思想,软件中也有。cpu技术中有流水线结构,软件中有并行处理。
等等。。。
所以,我觉得做软件的如果对硬件也了解一些,那会提高他的软件设计能力。因为硬件,软件很多地方是
相通的,很多思想可以借鉴。如果某人对硬件很精通,同时又对软件很精通,那么他在开发软件时,我想他
设计的系统,写出的代码可能远强于一般人。每个人的精力都有限,也许这是幻想。
本人水平有限,很多理解或者认识还不到位。误导之处,还请见谅。