p*o
2 楼
抛除语义,数学定理的证明,就是一个符合逻辑语法的长句子。句子一端是已知布尔值
为1的公理,定理,或者引理。另一端是预期的结果:命题X 为 1。
软件的一端是已知可用的类库和资源。另一端是预期的结果。
连接这两端,用的也是逻辑规则或者说是形式化的逻辑语法。
解决这两种问题,绝大多数人都是在脑子里用搜索的办法。
软件的设计过程,和寻找数学定理的证明过程非常类似。找一张纸,架构师写出来计
划用的tool chain。另一张纸,应用支持工程师,写出来预期看到的软件的行为的描述。
连接这两张纸的,就是设计工作。一般情况下,搜索逻辑链条的难度不会超过中学数学
。理想计算机中,对一般的任务,中学生就可以找到很多可行的,连接两端的逻辑链条
。设计的难点在于在这些可行的逻辑链条中,找到真实可行的,甚至最优的。这需要对
实际的计算机的资源,以及各种其他不完美的行为有所了解。所以這種活動一般叫做設
計,而不叫尋找。
如何了解这个途径的软件设计办法的不同之处?最好的途径是练习写定理及其证明的程
序,或者符号计算的程序(这两者是一回事)。
假如一个读者看到这里,还没有疑问或者疑义。那麼應該可以同意,程序语言的设计過
程,和寻找数学定理的证明過程也是一样的。
可以写出来和本文同样的,以程序语
言的设计的另類approach為題的另一个短文。
为1的公理,定理,或者引理。另一端是预期的结果:命题X 为 1。
软件的一端是已知可用的类库和资源。另一端是预期的结果。
连接这两端,用的也是逻辑规则或者说是形式化的逻辑语法。
解决这两种问题,绝大多数人都是在脑子里用搜索的办法。
软件的设计过程,和寻找数学定理的证明过程非常类似。找一张纸,架构师写出来计
划用的tool chain。另一张纸,应用支持工程师,写出来预期看到的软件的行为的描述。
连接这两张纸的,就是设计工作。一般情况下,搜索逻辑链条的难度不会超过中学数学
。理想计算机中,对一般的任务,中学生就可以找到很多可行的,连接两端的逻辑链条
。设计的难点在于在这些可行的逻辑链条中,找到真实可行的,甚至最优的。这需要对
实际的计算机的资源,以及各种其他不完美的行为有所了解。所以這種活動一般叫做設
計,而不叫尋找。
如何了解这个途径的软件设计办法的不同之处?最好的途径是练习写定理及其证明的程
序,或者符号计算的程序(这两者是一回事)。
假如一个读者看到这里,还没有疑问或者疑义。那麼應該可以同意,程序语言的设计過
程,和寻找数学定理的证明過程也是一样的。
可以写出来和本文同样的,以程序语
言的设计的另類approach為題的另一个短文。
相关阅读
wp7.5 govoice 打电话的问题Sprint 这个周末出 Nexus LTE看了amazon上路咪呀的Customer Reviews, 很震惊啊!在恶霸买了个G2X请推荐个ereader/padwp上软件求推荐Lumia 900 在ATT店里买有没有unlock的?有人用 ZTE 设置 qnc 么?占通话时间么?最喜欢Titan的专职照相键RP问题?Lumia 900 无法连接wifi有人关心ORCL和GOOG的官司么?三星5月3日将召开Galaxy S III发布会Lumia 900的那100刀花费不装zune就不能换手机铃声吗苹果iPad Mini三季度推出?用了两天Lumia 900感受haha, sent from my lumia 900庵主使用问题Vitality上pageplus的3g问题为啥GV号码不能被识别为手机号码?