- 博客(18)
- 收藏
- 关注
翻译 57. 消息传递让并发系统有更好的可扩展性
消息传递让并发系统有更好的可扩展性 程序们在他们学习计算机的一开始就被教导:并发,特别是并行(并发的一个特殊子集),是非常困难的,只有少数很优秀的人才能正确处理,而且即使这些很优秀的人也可能会在上面犯错。对于线程、信号量、监视器以及线程安全地并发访问变量的困难,一直受到关注。 的确,这里有很多困难的问题,要解决起来很不容易。但问题的根源是什么呢?共享的存储。几乎
2013-10-31 23:41:39 1161
翻译 56. 让不可见的更可见
让不可见的更可见 隐蔽性的很多方面都被正确地宣扬为要遵循的软件开发准则,我们有很多隐喻隐蔽性的术语,机制透明和信息隐藏。软件及其开发过程,引用道格拉斯·亚当斯的话,“基本看不见”: · 源代码没有天生的表现,也没有天生的行为,而且也不用遵守物理定律。当将它载入一个编辑器时,我们就能看到它,但关上编辑器时,它就消失了。想它太多了以后,就像倒下了却没有听到的树,你开
2013-10-29 23:35:47 473
翻译 55. 让接口容易正确使用且难以错误使用
让接口容易正确使用且难以错误使用 件开发中最常见的一项任务便是接口规范了。接口遍布于抽象的最高级(用户接口)、最低层(函数接口)以及中间的层次(类接口、库接口等)。不管你的工作是指定用户如何与系统交互,与开发人员指定API,或者是声明类的私有函数,接口设计都是工作的一个重要部分。如何做得好,你的接口用起来很舒服,而且会激发他人的产出;如果做得不好,你的接口会成为失败和错误之源。
2013-10-26 20:03:00 555
翻译 54. 长命的临时解决方案
长命的临时解决方案 为什么我们要创建临时解决方案? 典型原因是因为我们有一些紧急的问题要解决。可能是开发团队内部的,某些填补工具链中的沟壑的方法;也可能是外部的,终端用户可见的,例如对某个缺失功能的变通方法。 在大多数的系统和团队中,你都能发现一些在某种程序上与系统不协调的软件,这些是在什么时候就会改变的草稿,不遵守限制其它代码的标准和指导。免
2013-10-21 20:59:14 548
翻译 53. 链接器不是魔法程序
链接器不是魔法程序 很令人沮丧地,许多程序员经常(在写这篇文章之前我刚刚遇到过)对编译型的语言中从源代码到静态的可执行程序的过程的看法是: 1. 编写源代码 2. 编译源代码,生成目标文件 3. 一些魔法发生 4. 运行可执行程序 第3步,当然就是链接了。为什么我说得这么夸张?我做技术支持已
2013-10-20 17:57:31 538
翻译 52. 让项目自己说话
让项目自己说话 你的项目可能已经有一个版本控制工具了,也许它连接到了一个通过自动化测试检查正确性的持续集成服务器。这很好。 你可以在持续集成服务器中包含一些静态代码分析工具进来,收集代码指标。这些指标提供代码某些方面的反馈以及随着时间推进时的进化状态。当使用代码指标时,总有一些红线是你不想逾越的。假设你以20%的测试覆盖率开始,并且不想低于15%。持续集成帮助你
2013-10-19 10:49:56 462
翻译 51. 学会说“Hello, world”
学会说“Hello, world” Paul Lee,用户名leep,更为人所知的名字是Hoppy,他在我们这里是一位有名的编程问题专家。我需要他的帮助,于是我直到他的桌子旁边问,能不能帮我看一些代码。 当然,Hoppy说,坐吧。我小心翼翼不要等到他身后由空的可乐罐组成的金字塔。 什么代码? 这个文件中的这个函数,我说。
2013-10-18 17:34:56 601
翻译 50. 学会评估
学会评估 作为程序员,你需要能够向管理者、同事们和用户们们提供对你需要完成的任务的评估,以便他们能够对自己达成目标所需要的时间、资金、技术和其它资源有个合理、准确的认识。 很明显,要好准确地评估就得先学会一些评估技巧。首先,最基础的却是知道什么是评估,以及评估什么。可能就像它看起来一样奇怪,很多开发者和管理者并不是真正懂这个。 下面这段一个项目经
2013-10-15 21:24:25 563
翻译 49. 学习外语
学习外语 程序员需要交流,很多的交流。 程序员生涯中有一些时期,似乎大部分的交流都是同一台计算机;更精确地说,是运行程序的计算机。这种交流是为了把想法转换为一种机器可读的方式,它有一个令人兴奋的期望:程序是想法到现实的转换,期间只有虚拟,没有现实。 程序员需要精通机器的语言,不管是现实的还是虚拟的,其中的抽象可以通过开发工具与编程语言关联起来。
2013-10-15 12:38:57 560
翻译 48. 关联的大数据属于数据库
关联的大数据属于数据库 如果你的应用程序需要处理一份很大的、持续的、关联的数据元素的集合,不要犹豫,将它存入一个关系数据库里。在过去,(RDBMS)关系数据库管理系统曾经昂贵、稀少、复杂且笨重;现在RDBMS已经很容易得到,很可能你正在使用的系统中就已经安装了一两个。有些功能强大的RDBMS,如MySQL和PostgreSQL,已经是开源软件了,于是得到时要花费的资金就不现进问题
2013-10-15 12:35:09 558
翻译 47. 明白你下一次提交什么
明白你下一次提交什么 我曾轻拍了三个程序员的肩膀,问他们正在做什么。“我在重构这些方法,”第一个回答。“我在为这些web行为加一些参数,”第二个回答。第三个回答说:“我在处理这些用户故事。” 可能看起来像是前两个程序员太专注于他们的工作的细节了,而只有第三个看得更全面一些,也就有对工作有更好地专注。然而,当我问到他们要提交什么时,就有了些戏剧性的变化。前两个非常
2013-10-10 21:30:38 478
翻译 46. 了解你的局限
了解你的局限 “人要知道他自己的局限。”——警探哈里 你的资源是有限的。你只有这些时间和金钱来工作,包括需要用于保持知识、技能和工具跟上时代的时间和金钱。你只能工作到这样努力,这样快,这样聪明,这样长的时间。你的工具也只能这样强大。你的目标机器也只能这样强大。所以,你必须重视你的资源的局限。 如何重视这些局限呢?了解自己,了解别人,了解预算
2013-10-07 16:07:27 549
翻译 45. 了解你的IDE
了解你的IDE 在20世纪80年代,我们最好的编程环境也不过是一些好看一点的文本编辑器...还得是运气好的情况。现在已理所当然的语法高亮,在那时还是一个奢侈品,不是每个人都能有的。能漂亮地格式化代码的美化打印则一般是外部工具,需要运行才能修正代码空白。单步运行代码的调试器也是单独的程序,有着很多难记的按键。 在20世纪90年代中,公司们开始意识到可以通过给程序员
2013-10-07 14:42:10 694
翻译 44. 精通多于二种的编程语言
精通多于二种的编程语言 程序开发心理学为人熟知已经很长一段时间了,现在编程专业程度与程序员掌握的不同编程范式的数量直接相关。不仅仅是听说过,或者知道一点点,而是真正可以使用它编写程序。 每个程序员都从一种编程语言开始,那种语言对程序员思考软件的方式有着决定性的影响。不管程序员使用那种语言有了多少年的经验,如果一直只使用那种语言的话,他们也就只知道那种语言。只
2013-10-06 16:54:53 872
翻译 43. 知道如何使用命令行工具
知道如何使用命令行工具 现今,很多软件开发工具都已包装成集成开发环境(IDE)的形式。微软的Visual Studio和开源的Eclipse是两个很受欢迎的例子,另外还有很多其它的,许多都像是IDE的形式。它们不仅容易使用,也让程序员不用关注很多构建过程中的细节问题。 然而,容易使用也有它不好的一面。典型情况是,如果一个工具很容易使用,是因为工具在幕后替你做决定
2013-10-06 16:52:01 576
翻译 42. 让构建保持干净
让构建保持干净 你是否曾经对着像一篇散文一样长的编译器警告并且暗自思量:“你知道,我真的想应该做点什么...可是我现在没有时间”?另一方面,你是不是看见编译中一个单独的警告并且立马修复它? 我从零开启一个新项目时,没有警告,没有杂乱,没有问题。但随着代码库的增长,如果我不注意的话,混杂,警告和问题就开始出现。到了已经存在很多杂音的时候,已经很难从成百上千个
2013-10-05 23:08:11 894
翻译 41. 进程间通信影响程序响应时间
进程间通信影响程序响应时间 响应时间对软件的可用性是至关重要的。没什么比等待软件响应更令人烦躁了,特别是与软件交互中涉及到了重复的激励和响应。我们会感觉软件是在浪费我们的时间、影响我们的产出。然而,糟糕的响应时间的产生原因并没有被认真分析,特别是现代程序中。很多性能管理的文艺仍然专注于数据结构与算法,一些在某些场景中可能导致不同结果的问题,但在现代的多层的企业应用程序中不太可能是
2013-10-05 23:05:44 1764
翻译 40. 安装我
安装我 我对你的程序一丁点兴趣都没有。 我周围的程序多的是,可以列一个有我手臂那么长的单子。我现在在你的网站上逛的唯一原因是听到一个不太可能的传言说你们的软件可以解决我所有的问题。如果我有点怀疑,你们也会原谅我吧。 如果眼球跟踪研究是正确的,那么我刚刚看完了标题,现在正在文本中扫描,寻找蓝色的、有下划线的文本“立即下载”。另一方面,如果我是通过
2013-10-05 23:01:08 663
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人