20110720

为什么我们要一直深入底层

为什么我们要一直深入底层

我们喜欢说啥啥东西自古有之。别的我不知道,不追根问底并视为美德,这个自
古有之。后人曲解过陶先生的一句"不求甚解",并且引申义远比原意用得更广
泛,可见一斑。

老祖宗喜欢说"自然之理也",然后就不管了;后来喜欢认为老祖宗说得都是有道
理的,也不管了。

可是,为什么那是自然之理也,那是哪部分自然的什么理,我们不喜欢管;老祖
说的为什么都可能有道理,我们也不喜欢管。

有人引述陈丹青先生的话说,中国人的哲学是,X,不管什么烂糟的,先活下去
再说。有人引述谁谁的观点,说我们要活在当下--似乎我们只活在当下,只活下
去就行。至于以后,X。

我们正为此付出代价。

今天,花了大半宿的时候,跟包师弟评估驱动程序开发的技术路线。以前,我们
的设备驱动使用driverstudio+vc6.0+ddk开发的。当时典典同学就劝过我,用
DDK吧,用DDK吧,driverstudio那玩艺的代码是不可靠的。我没听。时间总是太
紧迫,而众所周知,DDK的学习曲线贼拉地陡峭。

现如今,有了新的需求,要支持windows7啦。windows7下连VC6.0都装不上去,
所以我去查替代品,说是用vs2008可以。

顺便,我还看到,driverstudio的那家公司,似乎黄了。或者卖给了谁谁,然后
那个谁谁改做 云 了。

QTMD云吧。netscape好好的公司就做了电子商务。

不得不插感慨,技术好也只有被卖的命。这个世界,如果真的如偶像想让我告诉
学生的,前途啊,美好啊,我想说,那真的令人绝望。

黑岛没了,我们说,那不过是游戏而已,做出花来能怎样。赛班没了,我们说,
那不过是个手机而已,做出花来能怎样。

如今,driverstudio也没了。

有的人可能对这个词不太熟悉。生产这个软件的公司,名字叫numega。这个名字
可能也不令你激动。

他们的产品还包括BoundsChecker自动运行时错误检测用的,CodeReview源代码
级别的错误检测用的,TrueTime做性能评估的,SmartCheck做VB错误检测的。

如果以上都不令你有感觉,以前还有个非常有名气的东西,叫做SoftIce,也是
他们的作品。那是真正的盗版工具和游戏加密啥的克星。

ICE的意思是硬件模拟器,SoftICE的意思是就是那是用软件实现的硬件模拟器。

当年,10多年前,我们用SoftICE破解游戏光盘加密,把它们安装在硬盘上,安
装在服务器上。

我们按Ctrl-D切换到黑地绿字的界面--现在我仍然在沿用这样的风格,无比眷
恋--然后用bpx,bpe这样的指令设置断点。

然后一行行一个函数一个函数地跟踪下去。直到找到在千百万行代码中,根据条
件跳转到可以执行游戏或者报告盗版的那行指令。

然后,我们现在知道,开发这个工具的那家公司消失了。我们用以开发驱动程序
的那个工具的公司消失了。

这,就是我们基于高级的工具,而没有深入底层所付出的代价。之一。

当driverstudio消失,我看不懂DDK。当软件公司开始瞄准小企业,收取
ultraedit收取photoshop的版权费用,小企业只有两个选择。

1. 花上大笔的钱,而且没完没了;2.从底层开发。

凡是让你省时间省钱省学习成本的,一定是一个产品,这个产品终究是要收钱的。

从底层开发,当然也有代价。比如,小企业没有能力养活底层的程序员。那应该
怎么办?买一个底层的产品,或者黄掉。我们还有别的选择吗?

当某位同学由别人架设了环境,写出测试的hello world,代替你跑起来。我想
说,小心了,他还会替你取得学分--他的学分,不能分给你的。以后的工资也是
一样。

深入底层,亲自地,然后从底层开始开发。从那里开始,这些工作是你的贡献。
这也是我告诉黄同学,为什么web程序设计没有前途的原因--因为它太简单,依
赖太多的工具,太顶层。

在高层中,你所依赖的技术不稳定的因素以乘法而不是加法递增。建立在这样的
基础之上,一丁点动摇就会让大厦倒掉。

你会做一个程序,只有在哈雷慧星回归那天的第10秒才能正确运行?

可靠,就是当遇到任何困难的时候,你能把困难与别人隔离开来,而不是传递下
去。一个解决方案就是,你直接地与基础接触,而尽可能地不依赖别人。

或者,只依赖可靠的人。

大哥在两三年前,喜欢说一句说,现在不说了,"这是底线,不能讨论的。"我们
怎么会有很多底线的。我们不是相信世界是依赖简单的规则可以推导而出的么。

沿着这许多底线挖掘下去,它们是不是有共同的基础,它们之间是不是有矛盾。
向底层,我们有无穷的空间可以探索,这些更坚实地基础支持我们在其上建立更
稳固的结构。

这就是为什么我们应该学习操作系统,计算机体系结构,数据结构,算法,离散
数学。

这就是为什么我们应该学习电子线路模拟电路数字电路。

这就是为什么我们应该学习高等数字普通物理。

因为我们不相信任何人的结论,我们要知道为什么会是这样,我们要亲见亲历亲
自决定。然后我们才能为我们的决定负责。

费曼说过,底层有足够空间。他指的是在原子之下,纳米尺度的世界和规则。其
实,工程、学习莫不如此。

附:

有同学收到过我的邮件,说你看的太细了。我得这样说,其实全文是:

我对有的同学说,你看的太细;而同时,当你不知道原因的时候,我又会抱怨你
看得太粗了。

是不是好象我既要求你看细,又要求你不花时间,又要马儿跑,又不让马儿吃草?

不是的。我的真正目的是:让你发现,什么才是重要的,需要细看,什么是可以
粗看的;粗看的东西,当发现需要细致了解的时候,又如何弥补。

这些,也只能训练,不能传授。

No comments: