前进有人来信问我为什么把之前那两篇文章删了,问我是不是因为有人抨击我。实际上我根本不会因为别人的抨击而删掉文章的。我也不会在意任何人的抨击。我删掉它们往往意味着我自己觉得那文章没有意义,或者言语混淆。 说实话,经过一段时间的面试和了解,我觉得这样的公司真的不是个别特例,但这并不说明我们应该忍受它们。一个不尊重员工的公司,是绝对不值得为它工作的。正是因为这种能忍耐的人,才造成了它们的气焰嚣张和泛滥。虽然处理工程问题的方式有很大差别,但是我绝不会因为自己水平比别人高就瞧不起人。实际上,我的水平显然高于 Coverity 的几乎所有 Principle Engineer 和 Architect,但我跟他们相处都比较友好。我愿意帮助他们,他们也愿意帮助我,因为我们都坐在同一条船上。 然而,似乎每一个IT业的公司都有那么几个人,自持会玩一点某些语言的小把戏,就对同事缺乏基本的尊重。这才是我应该重点指出的问题。这些人虽然在大学受到了“训练”(training),但却没有受到“教育”(education)。爱因斯坦说,所谓“教育”就是把学校学到的知识都忘掉之后,剩下来的东西。 这就是我为什么喜欢批评一些语言,因为它们总是助涨这种气焰。在我看来 C++ 和 Java 是这里面的重灾区。很多 C++ 程序员不明白 C++ 的缺陷,滥用 C++ 的“特性”,喜欢耍一些小聪明,并且喜欢“教训”不会这些“特性”的人。Java 程序员沉醉于所谓的“设计模式”,也很喜欢“教训”不懂设计模式的人。 可是真正的懂得程序语言的人,往往对它们的各种“小技巧”持怀疑态度,一般都避免使用特别“聪明”的做法。造诣越深的人越是谦虚,越是谦虚就越容易被这些人嘲笑。比如 Dan Friedman 就经常被人嘲笑,然而他却是是世界上最高明的程序语言研究者之一。 如果其它的人都鄙视这些自大狂的话,那这种公司还有可能值得为它工作,因为这种人会被慢慢的压制下去。然而,如果这种人的做法得到了高层的庇护和支持,那这个公司离失败就不远了,因为真正的高手不会为它工作。显然,根本没有一流的程序语言专家愿意为 Coverity 工作。我是一个例外,因为我曾经对它的技术感到好奇。 虽然我能够做出非常强大的静态分析,但这确实是一个吃力不讨好的行业。为了找出程序里面的问题,你必须几乎完整的实现这些程序语言的语义。这种实现必须精确的再现这种语言设计的错误和丑陋之处。久而久之,这些丑陋的东西就会印在你的心里,从而让你没法发现更加简单美好的东西。当你分析的语言不再流行,你就失去了辛辛苦苦得来的市场。 困难的问题经常是不需要解决的,它们的困难往往是由于早期的设计失误。如果我们改变了这些设计,很多问题就根本不存在了。所以真正的聪明人应该改造旧的设计,发明新的设计,而不是去给别人设计的蹩脚东西找错,并且打心眼里希望别人一直错下去。所以我不打算继续做程序分析了,我要设计自己的语言。这种语言将不再需要外部的程序分析工具。Coverity 枯燥的工作和压抑的气氛,让我失去了大量的精力。空闲的时间都用来休息了,没有心情做自己的东西。现在是一个恢复的好时机。 我最近参加了一些 Scala 和 Clojure 程序员的“meetup”。我觉得里面有挺多开明的人。虽然我明白它们的设计肯定还有需要改进之处,至少我看到了它们在朝着好的方向前进。 |