计算机科学箴言集 -- <编程珠玑续>

本文汇集了计算机科学领域的诸多箴言,涵盖了编码、用户界面、调试、性能、文档、软件管理和更多方面。例如,"π秒就是一个纳世纪"提醒我们在估算时间时如何简化记忆;"不要站立调试程序"强调调试需要专注;"最快的I/O就是不I/O"揭示了优化I/O的重要性。这些箴言揭示了编程实践中的智慧和经验教训。
摘要由CSDN通过智能技术生成
6 计算机科学箴言集

程序员常常要转换时间单位; e.g. 一个程序每秒能处理100条记录, 那处理100w条需要多久? 用除法算, 就知道要花100000秒, 按每小时3600秒算, 差不多3小时;
而一年有多少秒? 如果我直接告诉你 3.155x10^7秒, 你可能很快就忘了; 事实上, 要记住这个很简单, 在误差不超过0.5%的约束下:
          π 秒就是一个纳世纪    ——Tom Duff 贝尔实验室    [nano  1 × 10 −9  ]
所以, 如果程序要运行10^7秒, 就要准备等上4个月;

1985Feb的"ACM通讯"向读者征集与计算有关的箴言; 读者来稿中有些是无争议的, e.g. Duff法则是一种很方便的记忆常数的方法; 而下面这个关于程序测试方法的法则中的数字则不那么绝对(回归测试方法保存老版本的输入/输出数据, 以确保新版本程序能得出同样的输出);
        回归测试能将测试区间减半     ——Larry Bernstein 贝尔通信研究院
Bernstein的观点中所说的数可能是30%也可能是70%, 然而可以确定的是, 这些测试节约了开发时间; 

不怎么定量的忠告也存在问题; 相信大家都会同意;
        小别胜新婚;     ——佚名 
但也说 
        眼不见, 心不烦;    ——佚名
最后这句话对每个人都适用, 对这些话本身则不适用; 本章中的很多箴言也存在类似的矛盾; 尽管每句话都有真理存焉, 还是应该有所保留地看待它们;
  关于箴言的出处, 不得不声明一下; 箴言下的名字基本上都是最早把这句话发给我的人; 在一些地方我列出了更早的参考文献以及作者的单位; 我知道这样做对不起那些最早说出这句话的人, 只能用下面这句话表达遗憾:
  剽窃即是最诚恳的恭维      ——佚名

6.1  编码
  如果还没想清楚, 就用蛮力算法吧         ——Ken Thompson,贝尔实验室

  不要使用反正弦和反余弦函数——总能用优美的恒等式, 或者是计算向量点积来更好地解决这些问题         ——Jim Conyngham, Arvin/Calspan高级技术中心

  在存储日期中的年份的时候, 请使用四位数字: 千禧年快到了         ——David Martin, 宾夕法尼亚州诺里斯敦

  避免不对称结构         ——Andy Huber, Data General公司

  代码写得越急, 程序跑得越慢             ——Roy Carlson, 威斯康星大学

  用英语都写不出来的东西就别指望用代码写了         ——Peter Halpern, 纽约州布鲁克林

  注意细节         ——Peter Weinberger, 贝尔实验室
优化这段代码<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>图书购物车</title> <style> </style> <script src="js/vue.js"></script> </head> <body> <div id="demo"> <table border="1"> <tr> <td></td> <td>书籍名称</td> <td>出版日期</td> <td>价格</td> <td>购买数量</td> <td>操作</td> </tr> <tr> <td></td> <td>{{books1.name}}</td> <td>{{books1.date}}</td> <td>¥{{books1.price}}</td> <td><button @click="down(books1)">-</button>{{books4.count}}<button @click="up(books1)">+</button></td> <td><button @click="del">移除</button></td> </tr> <tr> <td></td> <td>{{books2.name}}</td> <td>{{books2.date}}</td> <td>¥{{books2.price}}</td> <td> <button @click="down(books2)">-</button>{{books4.count}}<button @click="up(books2)">+</button> </td> <td><button @click="del">移除</button></td> </tr> <tr> <td></td> <td>{{books3.name}}</td> <td>{{books3.date}}</td> <td>¥{{books3.price}}</td> <td> <button @click="down(books3)">-</button>{{books4.count}}<button @click="up(books3)">+</button> </td> <td><button @click="del">移除</button></td> </tr> <tr> <td></td> <td>{{books4.name}}</td> <td>{{books4.date}}</td> <td>¥{{books4.price}}</td> <td> <button @click="down(books4)">-</button>{{books4.count}}<button @click="up(books4)">+</button> </td> <td><button @click="del">移除</button></td> </tr> </table> <div>总价: ¥{{sum}}</div> </div> <!-- js部分 --> <script> const vm = new Vue({ el: "#demo", data: { books1: { name: '《算法导论》', date: '2006-9', price: 85.00, count: 1 }, books2: { name: '《UNIX编程艺术》', date: '2006-2', price: 59.00, count: 1 }, books3: { name: '《编程珠玑》', date: '2008-10', price: 39.00, count: 1 }, books4: { name: '《代码大全》', date: '2006-3', price: 128.00, count: 1 } }, computed: { sum () { return this.books1.price * this.books1.count + this.books2.price * this.books2.count + this.books3.price * this.books3.count + this.books4.price * this.books4.count } }, methods: { down (books1) { this.books1.count = books1.count - 1; } } }) </script> </body> </html>
04-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值