博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
顺序结构程序代码之间的相互关系
阅读量:6341 次
发布时间:2019-06-22

本文共 680 字,大约阅读时间需要 2 分钟。

  hot3.png

先看代码:

a();

b();

c();

假设a, b, c分别是我要做的三件事。一般的特别是新生程序员喜欢这么写程序。因为他们不知道顺序结构的特征,不知道怎么处理这样的东西。

这里面有很多的问题。

第一个问题就是,比如,如果这三个方法都更新了某一个状态,如果任何一个点出异常怎么办?内存的状态一致性就被破坏了。这个在数据库叫数据的完整性。完整性包括三个要素:正确性,有效性,相容性。刚开始的程序员都不知道这个,都以为好东西只是数据库才有的东西,没想到内存也有吧。

但是有。

第二,a, b, c不是同等地位的。比如,如果a失败,那么b就做不了啦;如果b失败,c就做不了了。试想如果你且个调用了100个方法的过程......是不是?所以说语义很重要,语义很重要。形式化的手段往往跟你要的语义相差十万八千里。要了解你的问题域,还要了解你的程序。

要构建强壮的程序,必须要了解顺序代码,在冯诺依曼体系下。在数据流体系下没这个问题,因为它就没有顺序执行的概念,它就没有执行的概念,它只有计算的概念。在那种环境下,它能犯的错只能是计算意义上的错,不可能有状态上与执行顺序上的问题。在函数式语言下,根据需要,所有的程序都会得到执行。

为什么会有人喜欢FP呢?这就是原因。

计算是一种哲学,执行是另一种。执行你需要TAKE CARE OF A LOT OF THINGS,而计算你只需要TAKE CARE OF FORMULAS。

为什么我不考虑一下erLang呢?

多好的语言啊!

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

你可能感兴趣的文章
工作中MySql的了解到的小技巧
查看>>
loadrunner-2-12日志解析
查看>>
C# Memcached缓存
查看>>
京东基于Spark的风控系统架构实践和技术细节
查看>>
什么时候使用CountDownLatch
查看>>
C#之MemberwiseClone与Clone
查看>>
Android性能优化之利用Rxlifecycle解决RxJava内存泄漏
查看>>
转: 如何为你的开源项目选择一个合适的开源协议?
查看>>
关系型数据库和NOSQL数据库对比
查看>>
Atitit 记录方法调用参数上下文arguments
查看>>
webstorm常用功能FTP,及常用快捷键
查看>>
eclipse html 打开方式
查看>>
[求助] win7 x64 封装 出现 Administrator.xxxxx 的问题
查看>>
人类投资经理再也无法击败电脑的时代终将到来了...
查看>>
一个最小手势库的实现
查看>>
HoloLens开发手记 - Vuforia开发概述 Vuforia development overview
查看>>
Android支付之支付宝封装类
查看>>
<亲测>CentOS中yum安装ffmpeg
查看>>
【分享】马化腾:产品设计与用户体验
查看>>
【机器学习PAI实践十】深度学习Caffe框架实现图像分类的模型训练
查看>>