云霞资讯网

被二进制折磨到崩溃?符号语言意外成救星,老程序员至今念叨.

二战后美国军队用计算机计算导弹轨迹,程序员得自己打二进制代码到纸卡上。要是打错了哪个孔得从头来,曾有团队为修正一张错卡花

二战后美国军队用计算机计算导弹轨迹,程序员得自己打二进制代码到纸卡上。要是打错了哪个孔得从头来,曾有团队为修正一张错卡花了一整天。这种原始工作方式在1950年代持续折磨着全美不足200名程序员,直到符号语言的诞生改变一切。当时计算机只懂0和1的机器码,每个操作都要程序员死记硬背。比如把A加到B得记住对应的二进制串,弄错顺序程序就跑不起来。IBM的机器和另一牌子的机器编码还不通用,移植代码等于全部重写。打孔卡片虽是主要载体,但物理错误率超高,曾有天气预报项目因孔位偏差导致计算完全错误。1947年起几支团队开始尝试用英语单词代替二进制,比如把加法写成ADD。程序员把写好的代码交由"汇编器"翻译成机器能懂的0和1。这工具能自动换算地址和参数,不用再手动计算内存位置。最早的汇编器1949年用在IBM机型上,让编写同样程序所需时间减少一半多。红石导弹项目组1952年切换新语言后效率大幅提升。他们用变量名称代替二进制位,调整燃料参数时改动量仅1%,测试周期缩短三分之二。商业领域也受益,早期财务软件通过循环指令快速累加工资数据,差错率从7%降到0.3%。联合国电脑专家霍珀开发的流程系统,甚至把多个基础指令封装成宏,减少重复劳动。但新语言仍依赖硬件差异。IBM的加法指令写成ADD,另一台计算机可能要用FAD,代码无法通用。这缺陷直接刺激出更高级的语言开发。1957年一种能用数学公式的语言出现,程序员终于不用再考虑机器底层结构。尽管如此,现代操作系统底层依然保留汇编代码,芯片驱动也依赖对硬件的直接控制。这些改进背后藏着无数试错,初期调试错误率居高不下,1955年某航天项目因系统不兼容导致轨道计算偏差23公里。但正是这些痛苦推动语言发展,今天的编程工具看似简单,实则建立在过去半世纪无数技术员的错误和修正之上。计算机学会读懂人类文字的过程,和人类学习任何新技能一样,充满试错与反复。