随笔 - 89  文章 - 0  评论 - 1250  阅读 - 31万
04 2012 档案
软件开发十年小史
摘要:注:十年是凑个整,讨个口彩,实际算来却是10多年了。这篇是口水文章,感兴趣的瞄瞄,不喜欢的莫踩。另,这里也不包含开源的各种发展。《不差钱》里的鸭蛋说,长江后浪推前浪,坚决要把他爹拍在沙滩上。我无意间一回想,软件开发上还真有点这个味道,十几年间,已是三代程序员。第一代程序员大致上是基于DOS来做开发,常用的开发环境叫TurboC。这个时候还没那么多API和类库,也没那么多层次,你要想干什么很容易直接操作到硬件。如果你不喜欢开发环境提供的库函数,大可以自己操作显卡显示点什么。现在回想起来,那一代程序员应该是国际水准,大家玩的东西是一样的能鼓捣出WPS,UCDOS,KV300的人绝对是超一流选手,世 阅读全文
posted @ 2012-04-25 00:32 理想流 阅读(3266) 评论(16) 推荐(9) 编辑
编码质量与命名
摘要:很多人以为提高编码质量,需要很多激动人心的创新,需要明显的飞跃,这也许对,但我个人感觉项目中提高编码质量是个水磨功夫,要一步步积累,方法论大多时候帮助不大。这次先从命名说起。当我们看到一份设计图或一份代码时,大多数人会【望文生义】。但使人【望文生义】却正是语言文字的根本使命。因此,如果一个函数被命名为Add(),但内部实际做的是减法,那么这份设计或者这份代码,一定是很难理解的。于是一个非常现实的问题就摆在了我们的面前:我们究竟应该如何为类,为方法等等命名?以命名而论,有两个较大的陷阱:一个是名实不符,一个是词义混淆。名实不符的常见情形又有两类。比如:以偏概全。假设说一个方法被命名为Output 阅读全文
posted @ 2012-04-23 00:17 理想流 阅读(2935) 评论(5) 推荐(5) 编辑
设计的核心任务之二:信息隐藏
摘要:假使说我们认同软件的构造是一个复杂的过程,那么管理这种复杂度必然需要一些技巧。而为了找出这些技巧,则需要先瞄一眼这种复杂度的基本构成。软件的构造过程牵涉了两个最为基本的要素:一是软件,一是构造软件的人。假设说存在着一个标准的人,这个人智力水平恒定,创新能力恒定,技能水平恒定。那么软件的复杂度只决定于其自身,比如软件所需要面对的业务规则,所需要的计算水平等。应对这类复杂度的有效手段是优化方法,好比说快速排序的效率大多时候就是比冒泡排序好。当我们开始考虑人的可变因素时,复杂度的来源则发生了变化。人是有着许多与生俱来的特质的,比如说:人是会犯错的,人同一时间可以处理的事情是有限度的。因为这些特性,人 阅读全文
posted @ 2012-04-18 00:03 理想流 阅读(2215) 评论(1) 推荐(4) 编辑
从一生的角度看程序员的学习和发展
摘要:很多人谈学习和发展的时候,往往忽略人的先天自然条件,在这里我们从这个视角切入,来探讨一下程序员一生的可能轨迹。如果把程序员的人生分为三个阶段,那么他们是:毕业~30岁:这个时间段里,大多数人无牵无挂,家里面父亲母亲不用太操心,也没娃,可能会犯愁找不到老婆或老公,但基本上自由时间较为充沛,身体比较健康。算是上升时期。30~45岁:这个时间段大多数人处在上有老,下有小。父亲母亲可能需要较多照顾,倒霉的话自己还有点小毛病。时间不是很充沛了,算是能发光发热的黄金时期。45岁~退休:这个时间段值得牵挂的事会变少,反倒又能回归到自身。脑力体力逐步开始衰减,算是守成时期。如果运气不好,也有英年早逝的可能。限 阅读全文
posted @ 2012-04-16 00:01 理想流 阅读(6389) 评论(33) 推荐(11) 编辑
开始工作后,一个人会失去什么?
摘要:程序员这个群体有一个典型的特征:那就是【技术能力】大多时候和【以自我为中心的程度】成正比。具体表现形式可能是目中无人,也可能是特立独行,诸如此类。但实质上,以当前的情势而论,大多时候一旦你选择打工,而非创业,大致上也就失去了目中无人或特立独行的资格。毕业生首先需要的是适应环境,而非是指望环境来适应你。这里的环境就包含了身边可能有点落伍的技术,可能有点繁杂的“人”“事”,可能有点愚蠢的规章制度,可能付出了却被苛责,可能努力了暂时却看不到回报。任何一个公司,不论牛或不牛终究有一份自己的传承,在不违背法律的时候,无所谓好或不好,只是一种不容漠视的存在。天下大势,浩浩汤汤,顺之者盛,逆之则亡。公司势小 阅读全文
posted @ 2012-04-11 00:19 理想流 阅读(4657) 评论(25) 推荐(16) 编辑
设计的核心任务之一:层次的控制
摘要:对于软件而言,层次是让人又爱又恨的东西。很多问题是通过增加层次解决的,但另外一部分问题也是因为层次而导入的。我们来分别看几个例子。例1:很多时候我们并不希望最终的应用绑定于某个指定平台,比如:Windows。为了达成这种跨平台的目的,就需要在OS和应用之间加入一个中间层,这个中间层负责屏蔽不同OS的差异。实际上,Java虚拟机等走的都是这样一条路线。例2:当使用XML文件保存配置信息的时候,我们并不希望XML的结构在整个程序中随处可见。比如说:现在我们在Configuration/OutputFolder节点下保存了缺省保存目录,但将来很可能节点变成了Configuration/OutputF 阅读全文
posted @ 2012-04-09 00:03 理想流 阅读(2107) 评论(1) 推荐(2) 编辑


点击右上角即可分享
微信分享提示