时序型编码系统所蕴含的逻辑与被需要的逻辑 分析

a;

b;

c;

...

这样的程序蕴含着如果a成功那么执行b, 如果b成功那么执行c的逻辑.

代码只能这样列. 或者说至少当前来说, 绝大多数编码型的系统都是这么列的. 这意味着所有手动编码的程序都默认承认或接受了这个逻辑.

但是, 实际上在大多数时候我想要的并不是这样的. 比如, 我想要的其实是: 做a, b, c. 不管中间出现什么问题, 我想要事情这样工作. 那么这时就应该至少用try...catch块把它们给分别包起来.

我承认大多数程序都有按顺序执行的要求. 但是这样的要求太简单, 很容易出问题. 因为它没有提及在异常产生的时候怎么办.

错误必须得到正确的处理. 否则正常的流程都将受到影响.

还有一个隐含的逻辑是, a, b, c三者是同等重要的. 但这其实并不是所有的情形. 比如 b 只是一个日志方法, 它可能成功, 也可能不成功, 但是我觉得它不够a与c同等重要. 也就是说, 当b失败时, 我不认为整个流程就失败了. 我认为b失败了就是b失败了. 但如果a或c失败了, 我则认为整个流程都失败了. 我甚至可能回滚整个操作, 如果可能的话. 这也是事务的一个由来.

a的不出错, 是b与c的前置条件. 同时, b的不出错, 是c的前置条件. 这些并不符合事实. 比如, 我说停掉机器1, 停掉机器2, 停掉机器3. 因为大多数语言都没有提供"完全无依赖"的语义(这就是高级语言由机器语言发展而来的一个坏处------因为机器只能执行顺序指令------可能部分函数式编程语言有提供这种语义), 所以在大多数语言中, 指令将最终被编译成时间相关(依赖)的操作集.

 

  

转载于:https://my.oschina.net/digerl/blog/33281

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值