专栏名称: 程序员的那些事
最有影响力的程序员自媒体,关注程序员相关话题:IT技术、IT职场、在线课程、学习资源等。
目录
相关文章推荐
码农翻身  ·  国外巨头们开始“抄”国产技术了! ·  昨天  
OSC开源社区  ·  全球5万衍生模型,阿里通义造出开源雨林 ·  5 天前  
OSC开源社区  ·  苹果“最强编程语言”10周年重磅更新——Sw ... ·  1 周前  
逸言  ·  项目札记004:多租户的领域建模设计 ·  1 周前  
码农翻身  ·  Chrome背后最大的秘密:印度人拯救了Go ... ·  1 周前  
51好读  ›  专栏  ›  程序员的那些事

没代码高亮工具的时候,程序员是这样写代码的

程序员的那些事  · 公众号  · 程序员  · 2017-08-23 21:55

正文

(点击上方公众号,可快速关注)


英文:JGC,编译:伯乐在线 - 奇风余谷

如有好文章投稿,请点击 → 这里了解详情


回到 1985 年,我还在给一个设计成给瓶子贴标签的机器计算机化。制造这个机器的公司用机电控制,将标签从卷轴上撕下帖到传送带传来的产品(例如洗发液瓶子)上。整个过程需要工作在毫米级精度上,因为消费者不喜欢没有完全对齐的标签。


不幸的是,机电控制不像电脑控制那样灵活,因此该公司与当地一所工学院(我正在该校学习电子学)签订了合同,用 KIM-1 来设计电脑控制原型。另一个学生整合机器,他把传送带,标签发放机制,步进电机控制,还有探测标签和产品的红外感应器进行组装。



我的工作是用 6502 汇编语言写软件。不幸的是,没有编译器,而且 KIM-1 只有一个十六进制的小键盘和一个小的显示屏。因此这意味着要手工写代码,手动编译和打字。代码是这样子的:



很快电脑控制需要变得更加灵活。程序首先自动校验:测量卷轴上的标签自身的长度,测量标签之间的距离,并且它启用了一个运算器快速设立”悬挂”距离(标签要伸出去多少才能让产品抓到)。


在运行中,它要能自动检测传送带移动的速度,还有当供应卷轴上的标签缺失时(当一个卷轴意外掉落时就会发生)进行补偿和标记。


当然像这样写代码是一种痛苦。你首先必须写完代码(蓝色),然后转化成机器码(红色),并计算每个指令的内存地址和相对跳转地址。那时候我没有能够计算十六进制的计算器,所以我自己完成大部分所需的计算(如在大脑里计算相对跳转地址)。


然而它教会了我两件事:在第一时间写对代码 学会在大脑中运行代码。后者至今仍然重要。我调试时还是会先在大脑里跑一遍。通常情况下我会先于 gdb 或类似的工具,使用我的大脑调试器。KIM-1 里只有最基本的调试功能,我在程序里也写了点,但是大部分调试都是盯着输出(十六进制显示屏上),(步进器的)行为看,还有在脑子里运行代码。


PS:一些读者指出在 1985 年 KIM-1 离先进水平还很远,而且我们有很多好东西例如编译器等等。是的。事实上比这还早的时候我用 BASIC 和 ZASM(Z80 编译器)在 CP/M 下编程,但是你是用你已有的条件来干活的,工学院有空闲的 KIM-1,它有不错的 I/O,因此它是制作嵌入式控制器的很好的原型系统。



看完本文有收获?请转发分享给更多人

关注「程序员的那些事」,提高编程技能