您的位置:首页 > 编程语言

优秀的代码永垂不朽!

2019-07-27 13:00 986 查看

Steve Wozniac,全名斯蒂芬·加里·沃兹尼亚克(Stephen Gary Wozniak,生于1950年8月11日)。美国计算机工程师,曾与斯蒂夫·乔布斯合伙创立苹果计算机(今之苹果公司)。Wozniac在1970年代中期创造出了第一代苹果计算机和第二代苹果计算机,随着第二代苹果计算机风靡普及,苹果成为了1970年代及1980年代初期销量最佳的个人计算机,Wozniac被誉为引领计算机进入大众家庭的工程师。

作者 | jamesbowman

译者 | 弯月,责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

以下为译文:

很久以前,当计算还是一项非常无聊的业务时,发生了一件意想不到的事情。为电传打字机和交通灯设计的廉价微处理器被年轻的黑客们用作了个人电脑。有一群以Steve Wozniak代表的年轻人开始挑战有限的计算机能力,潜心研究并让这些小机器承担起了不起的工作。其中一项工作就是博士Dobbs Jounal于1976年8月发表的如下文章。

这是一组实数算术的例程。图中的微处理器(6502,第一代和第二代苹果计算机曾采用该处理器)只能计算字节——即0到255之间的整数。更糟糕的是,该微处理器只能做加减法。但是,你可以利用这个库计算1.2627  -  1099.56,甚至是pi的平方根。令人惊讶的是,Wozniac总共只用了127条指令、239个字节就完成了基本运算:加减乘除。

这是一段了不起的代码,在数次阅读之后,我依然惊叹于其巧夺天工。例如,乘法和除法的例程需要循环23次,每一次计算一位。在这段代码中,Wozniac是否在两个地方重复写了常量23?当然没有!他在两个例程都会执行的一段前值代码中加载了常量23:

再举一个例子,求M1和M2绝对值的算法通常如下:

M1 = abs(M1);

M2 = abs(M2);

然而,Wozniac却没有像这样重复。他写了一个求M1绝对值的例程,然后交换M1和M2。之后,他调用了两次该例程,因此用一半的代码量实现了相同的功能。更令人欣喜的是,其他地方也需要交换M1和M2,因此这部分代码一举两得。

当然,这种紧凑的代码很难让人理解,但是如此超前的代码确实让人唏嘘不已。阅读1976年期刊中的其他文章时,就会发现里面有很多不是特别优秀的代码。这也无可厚非,因为当时的人们只是想弄清楚利用新型微处理器的方法。但在一众代码中,Wozniac的这段代码无疑给现代的演景(demoscener)工作一记响亮的耳光。相比之下,Wozniac代码的创新水平堪称与30年后出现的这段6502代码(https://github.com/pfusik/zlib6502)并驾齐驱。

讲完历史,现在来想一想:为什么我会在2019年反过头来查看这段古老的代码?因为我正在做有关I²CDriver和SPIDriver的开发,它需要在8位CPU上进行浮点运行,在之前的项目中我使用的是基于8051的Silicon Labs EFM8。它可以很好地执行浮点计算,就像6502库一样。虽然我的代码不像原来那么短,但速度很快,比Keil好要快一点。

优秀的代码永垂不朽!

原文:https://tinyletter.com/jamesbowman/letters/i-have-found-an-excellent-programmer-named-steve-wozniac

本文为 CSDN 翻译,转载请注明来源出处。

【END】

 热 文 推 荐 

小米将开源进行到底!

AI 会替代程序员?超好用的自动补全代码工具 Deep TabNine!

苹果收购英特尔手机芯片业务;西门子将在华建立 5G 研发中心;React Native 0.60.4 发布 | 极客头条

17 岁成为 iOS 越狱之父,25 岁造出无人车,黑客传奇!

抢程序员饭碗?自动写代码的Deep TabNine真如此神奇?

又是GAN!这个AI让周杰伦、罗永浩“变脸”古典画像

☞你硬盘里的那些电影都是如何被保存的?

孙宇晨深夜发文致歉: “我年轻, 涉世未深”……

☞中国第一程序员,微软得不到他就要毁了他!

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

你点的每个“在看”,我都认真当成了喜欢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: