一线研发之声 https://bbs.21ic.com/?567930 [收藏] [复制] [RSS] ------最底层、最深邃、最负重的编程之歌

日志

浅谈C语言软件的本质

热度 1已有 789 次阅读2017-9-6 23:26 |个人分类:一线研发之声|系统分类:职场生涯| C语言, 本质, 软件

      悠忽毕业十年,我对C语言的认知,经历无知的畏缩,未知的冒进,半桶水的狂妄,再到已知的敬畏。先哲告诉我们  软件 = 算法 + 数据结构,但这终究还是太过高大上,让人体验不够深刻,隔绝了一片C的朝圣者。且让我接地气地定义它,软件其实就是加工和搬运数据,如果要更精确的定义,那就是加工得尽量的快、搬运得尽量的稳。至少在嵌入式C语言领域,这个定义可以比较好的引发共鸣。其实,加工就是算法,搬运就涉及结构。 

    数据如流水,软件若管道。一环衔接一环,一层架构一层,如积木,如套叠的沙漏,如化学实验室里面的桥接试管,最终汇成蔚为壮观的软件工程。

    让我们由浅入深来理解这一点:

1. 从基本语法看

   a = b  b的值搬运到a

   a = b+c;  加工bc的数据,汇总搬运到a处。

   P1.1 = 1 你以为是拉高一个pin脚的电平,其实不过是把1搬运到准确的那个ram bit

2. 从函数看

   void func(......)

   一个独立的过程,这里面执行的必定是某种加工,它的输出必定汇总到某种全局变量那边。

  UINT8 func(...)

  这是一个执行函数,所有的动作用于加工输入的参数,最终返回这个UINT8

3. c文件看

一个c文件,对外通常提供如下接口。

必定有写入的、或发送的、或读取的、或接收的,用于操作数据。

可能还有控制的、读取控制状态的,用于控制数据的操作模式,返回当前加工的状态。

当然,别忘了,还有initdeinit等,这些用于铺平整个舞台,清空管道,让加工和搬运可预测,可重现。

4. 从软件模块看

必有那种输入的接口,不管是按键、通信接口,亦或是读取什么文件,总之,软件模块为输入而存在。

必有那种输出的功能,它输出到终端,或屏幕,或led灯,或把数据透过通信接口发给下一个模块。


所有的变量,有人写,就需有人读。

所有的函数,必有输入和输出,它因加工和过程而存在和消亡。

所有的软件模块,必有输入和输出,中间就是一个加工的系统。

所有的软件系统验收,都是组合各种前端的输入方案,验收到结果的输出正确性。


数据如流水,程序如管道。

流水应管道而生灭,管道因流水而存活。


路过
1

鸡蛋

鲜花

握手

雷人

刚表态过的朋友 (1 人)

评论 (0 个评论)