ARTICLE · 1124854
软件是怎样炼成的:从指令到系统
软件是怎样炼成的:从一行指令到一个系统
互联网技术通俗讲义 · 第 9 篇|软件开发基础
刷短视频、查话费、远程开户——这些互联网应用的背后都是软件。计算机只认识 0 和 1,程序员明明写的是"人话",机器怎么就乖乖照做了?这一篇,我们沿着"语言 → 代码 → 工程"的链条,把软件开发的基本功聊清楚。
一、和计算机说话的三代语言
程序就是一组指挥计算机干活的有序指令。写程序的语言,经历了三代演进:
· 机器语言:直接用 0 和 1 写指令,像发电报——机器一看就懂,人看着崩溃。换个型号的机器就不通用,如今只有硬件厂商的专业人员才碰它。
· 汇编语言:给指令起"外号",用 ADD 表示加、MOV 表示搬数据,好记多了。但它仍是面向机器的语言,得懂硬件结构才玩得转,写完还要靠"汇编程序"翻译成机器码。
· 高级语言:接近自然语言的表达,C、Java、Python 都是。程序员终于可以把精力从硬件挪到问题本身上,可移植性也好——代价是执行前必须先"翻译"。
翻译有两条路。编译像出书前请翻译把整本书译完再出版:源程序一次性译成目标代码,运行时飞快,C 语言走这条路;解释像请个同声传译:翻译一句执行一句,不留译本,灵活跨平台但慢,Python、JavaScript 是代表。Java 则走了条折中路:先编译成"字节码",再由各平台上的 Java 虚拟机(JVM)逐条解释执行——"一次编写,到处运行"就是这么来的。
二、面向对象:把现实世界装进程序
早期的"面向过程"编程把数据和操作分开管,软件一大就乱成一锅粥。面向对象的思路是:把数据和对数据的操作打包成一个"对象",让程序像现实世界一样运转。
类和对象:类是月饼模具,对象是用模具压出来的月饼。"圆"是类,半径为 5 的那个圆就是对象(也叫类的实例)。类定义了属性(状态,如半径)和方法(行为,如"算面积")。
封装:像家里的电视机——你只需按遥控器上的按钮,不用碰里面的电路板。对象把内部细节藏起来,只对外暴露几个方法当接口,安全又好维护。
继承:子类自动拥有父类的全部属性和方法。"工作人员"有的本事,"办公室工作人员"天生就有,"办公室主任"再往上叠自己的新功能。写新类时不用从零开始,代码量大减,模型也更贴合现实。
多态:同一句指令,不同对象各干各的。就像同样喊一声"刹车",轿车、货车、电动车的制动表现各不相同——程序里给不同对象发同一条消息,它们各自按自己的方式响应。
对象之间靠消息协作:你点一下按钮,就是给对话框对象发了条消息,它收到后执行相应动作。整个程序,就是一群对象互相发消息完成任务的"小社会"。
三、数据结构与算法:程序的两条腿
数据结构回答"数据怎么摆"。按逻辑关系分三类:线性结构像排队打饭,每人只有一个前驱一个后继(栈=一摞盘子,只能从顶上拿;队列=排队买票,先来先服务);非线性结构像家谱树和地铁线路图,一个节点可以连着好几个;集合结构则是一堆互不相关的元素。
算法回答"事情怎么做",是解题步骤的精确描述,好比菜谱。好算法要满足五条:确定性(每一步无歧义)、可行性(每步都能办到)、有输入、有输出、有穷性(干有限步必须停)。评价算法看四个维度:正确性、可读性、健壮性(喂它乱数据也不崩)、时间/空间复杂度——省时间往往费空间,两全难,实际工程中总是在权衡取舍。
四、软件工程:从手工作坊到正规军
1968 年,软件业爆发"软件危机":项目越做多,超支、延期、烂尾越严重。人们意识到光靠程序员个人经验不行,得像盖楼一样搞工程化管理——"软件工程"由此诞生。
软件的一生叫生命周期,分六个阶段,每个阶段结束都留下一份文档作为下一阶段的依据:

【配图建议:此处可插入教材图 9-3《软件生命周期基本模型》】
其中运行维护是时间最长的阶段,分纠错性维护和改进性维护。怎么组织这六个阶段,有几种经典过程模型:
软件测试不是"最后调一调",而是贯穿全程的质量手段:测试要尽早介入、由第三方来做、用例要覆盖合法与非法输入及边界条件,还要警惕"群集现象"——发现缺陷越多的模块,藏着的缺陷往往也越多。
软件文档分管理、开发、用户三类,写文档的铁律是"站在读者角度写"。质量保证(QA)管"过程做得对不对",质量控制(QC)管"产品结果合不合格",两者别混淆;业界常用 CMMI 和 ISO 9000 族标准来体系建设,日常工作则遵循 PDCA"计划—实施—检查—改进"的循环。
本篇小结:语言从机器码进化到接近人话,编译求快、解释求活;面向对象用"类+对象"模拟现实,靠封装、继承、多态管好大型程序;数据结构管"怎么摆"、算法管"怎么做";软件工程则用生命周期、过程模型、测试、文档和质量体系,把写代码从手艺变成工业。
软件跑起来了,下一篇轮到当下最热的运行方式——云计算架构与应用,看看计算能力是怎样像自来水一样"拧开就用"的。
系列说明:本系列依据通信中级《通信专业实务·互联网技术》教材逐章解读,用大白话讲清核心技术概念,适合通信从业者与备考同学收藏慢读。