zl程序教程

您现在的位置是:首页 >  其他

当前栏目

一个运维人员的编程思维5

2023-03-20 14:52:43 时间

程序

既然是讲一个运维人员的编程思维,那就回到程序这个核心概念(脚本也是程序的一种)

我们花那么多时间精力是要整出一个什么玩意儿


概念

什么是程序?

程序(Program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合

这貌似一个再简单不过的问题,但这里我还是想分享一下自己的理解,在此仅代表一家之言(不过欢迎与我交流和探讨)

上面的定义绝对没错,但是视野却过于狭窄,运维人员头脑中永远都要有宏观的系统观和架构观,系统永远都不是静止的,而上面的文字却将程序定义为了一具尸体(一个标本),不能与其它组件交互的程序是没有任何意义的

我也不打算重新给出自己的定义去推翻任何哪个权威的定义(语言总有它描述不到的地方,于是沦为了口水战),我只是尝试将程序放回到它的活动场景中看看它们 到底是什么,到底在干什么


程序到底是什么

计算机只能存储和处理代表0和1的电位序列(可以高0低1,也可以高1低0),其实哪些代表数据,哪些代表对数据的处理,计算机也不知道,它自己完全没有能力分辨,而这些都是由人来指定的

数据指令 (对数据的处理方式) 有什么本质区别么,并没有,在机算机眼里,都不过是一串电位序列,它们所代表的意义是由人来指定的,人会以电位序列的方式指定计算机如何使用自己的逻辑门或哪一批逻辑门对当前寄存器中的这串序列(另一串)进行加工,然后将产生的结果放到哪里(所谓的 哪里 ,其实又是一串序列标定的寄存器地址),在计算机的世界里一切皆电位序列

它们的本质都是数据,只是其中一部分被人为指定成被加工的对象,另一部分被人为映射成CPU里的加工方法(CPU载入了这串序列后,就被驱动得应用对应的逻辑门,CPU绝对是被动的)

那么这里程序(准确来说是写着操作序列的文档)就分化为了两部分 :数据加工方法

其实仔细想想,目前为止的所有编程语言(机器语言、汇编语言,高级语言,不论是编译型还是解释型语言)无不是在围绕这两类进行优化和调整,不断重组,以期带来能更高效利用有限计算资源的方法(编程人员的人力资源也囊括在内)


程序到底在干什么

其实很简单: 就是输入数据,加工数据然后输出数据

Tip: 准确来说数据的移动(输入输出或加载返回)也算是数据加工的一种

归根结底, 程序就是在对数据进行加工处理

我们将 数据的移动数据的加工 分开来看,是为了便于理解,因为移动要求除了位置不能对数据内容产生修改,而加工处理可能产生内容变化