自从计算机出现以来,计算机硬件和软件的发展轨迹完全不同,计算机硬件的发展可以用波澜壮阔来形容,从电子管、晶体管发展到集成电路、大规模集成电路,CPU从单核发展到多核,显示器从电子屏发展到液晶屏,硬件技术和产品不断更新换代,硬件生产力不断出现飞跃式发展;而计算机软件却一直以一种缓慢的速度发展,虽然编程语言从二机制、汇编语言发展到了高级语言,各种软件技术和框架不断涌现,但软件产品生产力的提升非常缓慢。回头看近二十年计算机硬件生产力和软件生产力的发展速度,我们会发现,软件生产力的发展速度,远远低于硬件生产力的发展速度。
分析这种巨大反差的根本原因,可以发现,计算机硬件的发展是站着工业化生产这个巨人的肩膀上的,而计算机软件仍然处于低水平的手工业生产阶段。不是吗?一个软件产品需求出来,需要建立一个团队负责软件需求、设计、开发、测试、安装部署等软件产品生产周期的各个阶段,需要程序员一行行手工编写代码去实现软件产品功能,下一个软件产品的开发,重复上述过程,无一例外,社会化的分工与协作、标准化、模块化、快速迭代与大规模生产等工业化概念,在软件产品的生产过程中很难见到,现在的开发团队、组织、公司,恰如古代的手工作坊。所以,目前的软件开发还处于手工业生产阶段。
软件的未来和发展趋势就在于软件生产的工业化。有人说软件太复杂了,各种依赖包、版本控制、协议和编程语言不同等一系列问题,导致想要实现类似硬件的工业化生产几乎不可能。但是,这种软件的复杂性又来自哪里呢?对于全世界的软件开发人员来说,从来没有一个统一的规范来约束其开发过程,文件名称、方法名称、参数变量等等随便定义,数据存储与返回值没有约束,这样开发出来的软件很难重用和互联互通。各种编程语言有各自的编码规范,而这些编码规范在哪个软件产品中起作用,要看开发团队或开发人员的自觉。所以,软件的复杂性在于没有一个工业化规范来约束软件产品的开发和生产。
那么,软件工业化实现起来真的很难吗?我们摒弃软件复杂性的说法,看看如何用功件和面向功件编程,实现软件工业化生产。
在阐述功件之前,我们先澄清一下功件和目前软件开发中的组件(构件)的区别。
首先看一个软件产品中的组件,如下图:
延伸阅读
- ssh框架 2016-09-30
- 阿里移动安全 [无线安全]玩转无线电——不安全的蓝牙锁 2017-07-26
- 消息队列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 论文笔记【图片目标分割】 2017-07-26
- 词向量-LRWE模型-更好地识别反义词同义词 2017-07-26
- 从栈不平衡问题 理解 calling convention 2017-07-26
- php imagemagick 处理 图片剪切、压缩、合并、插入文本、背景色透明 2017-07-26
- Swift实现JSON转Model - HandyJSON使用讲解 2017-07-26
- 阿里移动安全 Android端恶意锁屏勒索应用分析 2017-07-26
- 集合结合数据结构来看看(二) 2017-07-26