美文网首页
翻译—‘The Art of Computer Programm

翻译—‘The Art of Computer Programm

作者: 过来摸摸头丶 | 来源:发表于2018-11-08 16:39 被阅读0次

    原文链接:https://medium.freecodecamp.org/the-art-of-computer-programming-by-donald-knuth-82e275c8764f


    一些书架上的书看起来很漂亮。不仅仅是因为它们美观,还因为它们突出了作者。唐纳德·克努特(Donald Knuth)的4本精装书"计算机编程设计"。—所有的光芒都在深紫色的箱子里。—发出一个明确的信息:走开,麻瓜,因为你在一个真正的程序员面前。一个严谨的计算机科学实践者面前。

    比尔盖茨曾经说过:"如果你认为你是一名真正的程序员……读一读计算机编程设计……如果你能阅读整篇文章,你一定要给我发一份简历。"

    对我来说,订购这系列书籍感觉就像一项重要的专业成就。这些书送来之前,我在书架上给它们收拾出了一块特殊的地方,因为我可能要在谷仓里为新主机腾出空间。

    它们是很权威性的书籍,地位无法动摇。所以我从不阅读它们,这也不是这些咧书籍真正的书评。抱歉。

    这也不是像那些评论家早就厌恶的走出电影影评的情况。克努特的书是史诗级的作品,他真的是真正的计算机科学基础大师,它起源于数学以及这两个领域的交叉点。予以尊重。

    只是我还达不到"计算机编程设计"(TAOCP)的深度。

    我读了卷1的序言3、4次,我尝试想想了一下阅读整个系列书籍的情形。接下来的几个月我将不会上网,独自搬到美国怀俄明州山顶的小屋子里,里面装满了大量的纸,几盒铅笔,计算机编程设计系列书籍,还有几本需要补充的数学书籍,以及90多天的Adderall(药物,治疗注意力缺失)供应。

    我将会远足跋涉在山中,对算法基础进行深度思考。没有笔记本,没有无线网,没有电力—这些使注意力分散的事物。日落后我只能借着烛光阅读和解决问题,我的梦想是神游在调和级数、二项式系数和非线性数据结构中。

    这也就是想想…所以我昨天又看了一遍序言,到目前为止,我觉着我应该停下来反思一下我的学习之旅。

    上图就是克努特对计算机的热爱,整个系列都致力于一个计算机:IBM的650大型机。它是首个批量生成的计算机,一个卖出几十万美元。这是克努特咬紧牙关买的机器。

    对20世纪50年代的计算机的产生感到兴奋,也对那个时代数学的发展感到兴奋。早起的IBM650大型机有一个几本的数学运算和控制结构,它由十进制建立的而不是二进制。

    没有展示机器,也没有命令行。人们是这样来操作系统的:控制台允许操作员启动或停止程序等等。

    如果你想要用程序生成一段斐波那契数字。还不存在公式翻译程式语言(FORTRAN)——在650大型机发布4年后才出现。所以,在发展初期,你必须写出你想做的机器级操作代码,然后手工组装你的程序,然后把你的程序用钥匙打孔机打成一副卡片。

    有一些方法可以优化你的程序。你可以设计更高效的算法或者针对问题部署更适合的数据结构。

    你还可以从你的程序怎么样加载运行入手优化代码——用机器的纹理工作。磁鼓存储器,是现代硬盘驱动的先驱,是650大型机上主要的存储器,它运行是很缓慢的。所以你作为程序员的目标是最小化12500转/分钟鼓机的等待时间。这样在运行的时候,你所有的代码和数据会很轻易(以一个合理的时间)的到达CPU。你希望大型机的CPU周期和这些磁鼓存储器完美同步。

    计算机科学是在数学和机械工程粗糙的交点上诞生的。一个很聪明的人才能理解它。但这样理解已经不在正确了。克努特和那个年代的程序员必须比IBM650大型机更聪明。他们了解每一个电子管和控制开关。我们不再比我们的计算机更聪明了。

    这本书序言的第一段,克努特称编程是"一种审美体验就像作诗或绘画一样。"我认为这种审美观仍然吸引着每一个有抱负的程序员。自20世纪50年代以来沿着指数线走了很长一段路,知道审美观仍然完好无损是令人欣慰的。

    虽然我们不再使用控制台并将代码输入到一个发热、发躁的计算器里,但编程的美感仍然存在于每一层抽象中。

    我想知道编写软件的表演性质是如何从手工装配只有8kb内存的限制以及通过穿孔的工作来塑造的。我想象了一下克努特敲代码的时候是很有快感的,并且有走高丝的风险。因为小的错误让人很头疼。

    从那以后,几十年的抽象堆积起来就像一堆床垫,我们大多数人只是在顶部滚动。

    现代软件反复的小反馈和可塑性都需要一些代价。虽然今天的软件开发可能是更有趣的,但在我们没反应前黑客攻击也很容易,而且它也会造成很多问题。优秀的软件仍然需要大量的思考,我们很容易失去严谨性。

    IBM650大型机的限制是艰难和快速的,而今天的机器的限制是更轻量的并且经常是自我强加的。手机的微型屏幕掀起了经济软件和接口设计的新浪潮。让我感到惊讶的是,任何选择了目标开发环境限制的人,都在为我们未来的创新选择竞争环境。

    相关文章

      网友评论

          本文标题:翻译—‘The Art of Computer Programm

          本文链接:https://www.haomeiwen.com/subject/ytpmxqtx.html