一个运维人员的编程思维5
程序
既然是讲一个运维人员的编程思维,那就回到程序这个核心概念(脚本也是程序的一种)
我们花那么多时间精力是要整出一个什么玩意儿
概念
什么是程序?
程序(Program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合
这貌似一个再简单不过的问题,但这里我还是想分享一下自己的理解,在此仅代表一家之言(不过欢迎与我交流和探讨)
上面的定义绝对没错,但是视野却过于狭窄,运维人员头脑中永远都要有宏观的系统观和架构观,系统永远都不是静止的,而上面的文字却将程序定义为了一具尸体(一个标本),不能与其它组件交互的程序是没有任何意义的
我也不打算重新给出自己的定义去推翻任何哪个权威的定义(语言总有它描述不到的地方,于是沦为了口水战),我只是尝试将程序放回到它的活动场景中看看它们 到底是什么,到底在干什么
程序到底是什么
计算机只能存储和处理代表0和1的电位序列(可以高0低1,也可以高1低0),其实哪些代表数据,哪些代表对数据的处理,计算机也不知道,它自己完全没有能力分辨,而这些都是由人来指定的
数据 和 指令 (对数据的处理方式) 有什么本质区别么,并没有,在机算机眼里,都不过是一串电位序列,它们所代表的意义是由人来指定的,人会以电位序列的方式指定计算机如何使用自己的逻辑门或哪一批逻辑门对当前寄存器中的这串序列(另一串)进行加工,然后将产生的结果放到哪里(所谓的 哪里 ,其实又是一串序列标定的寄存器地址),在计算机的世界里一切皆电位序列
它们的本质都是数据,只是其中一部分被人为指定成被加工的对象,另一部分被人为映射成CPU里的加工方法(CPU载入了这串序列后,就被驱动得应用对应的逻辑门,CPU绝对是被动的)
那么这里程序(准确来说是写着操作序列的文档)就分化为了两部分 :数据 和 加工方法
其实仔细想想,目前为止的所有编程语言(机器语言、汇编语言,高级语言,不论是编译型还是解释型语言)无不是在围绕这两类进行优化和调整,不断重组,以期带来能更高效利用有限计算资源的方法(编程人员的人力资源也囊括在内)
程序到底在干什么
其实很简单: 就是输入数据,加工数据然后输出数据
Tip: 准确来说数据的移动(输入输出或加载返回)也算是数据加工的一种
归根结底, 程序就是在对数据进行加工处理
我们将 数据的移动 和 数据的加工 分开来看,是为了便于理解,因为移动要求除了位置不能对数据内容产生修改,而加工处理可能产生内容变化
相关文章
- 金融服务领域的大数据:即时分析
- 影响大数据、机器学习和人工智能未来发展的8个因素
- 从0开始构建一个属于你自己的PHP框架
- 如何将Hadoop集成到工作流程中?这6个优秀实践必看
- SEO公司使用大数据优化其模型的5种方法
- 关于Web Workers你需要了解的七件事
- 深入理解HTTPS原理、过程与实践
- 增强分析:数据和分析的未来
- PHP协程实现过程详解
- AI专家:大数据知识图谱——实战经验总结
- 关于PHP的错误机制总结
- 利用数据分析量化协同过滤算法的两大常见难题
- 怎么做大数据工作流调度系统?大厂架构师一语点破!
- 2019大数据处理必备的十大工具,从Linux到架构师必修
- OpenCV中的KMeans算法介绍与应用
- 教大家如果搭建一套phpstorm+wamp+xdebug调试PHP的环境
- CentOS下三种PHP拓展安装方法
- Go语言HTTP Server源码分析
- Go语言HTTP Server源码分析
- 2017年4月编程语言排行榜:Hack首次进入前五十