backup

这里是王垠发表的历史文章的一个私人备份。所有文章都属于王垠版权所有,放在这里仅仅是为了自己查看方便,因为原始文章会lost in future。

---------------------------------
王垠自己的博客:
http://yinwang0.wordpress.com/
http://www.yinwang.org/

王垠曾经用过的博客:
http://blog.sina.com.cn/yinwang0

数学和编程

作者:王垠

数学和编程

好些人来信问我,要成为一个好的程序员,数学基础要达到什么样的程度?十八年前,当我成为大学计算机系新生的时候,也为同样的问题所困扰。面对学数学,物理等学科的同学,我感到自卑。经常有人说那些专业的知识更加精华一些,难度更高一些,那些专业的人毕业之后如果做编程工作,水平其实比计算机系毕业的还要高。直到几年前深入研究程序语言之后,对这个问题我才得到了答案和解脱。由于好多编程新手遇到同样的困扰,所以我想在这里把这个问题详细的阐述一下。

数学并不是计算机科学的基础

很多人都盲目的认为,计算机科学是数学的一个分支,数学是计算机科学的基础,数学是更加博大精深的科学。这些人以为只要学...

谈程序的正确性

作者:王垠

谈程序的正确性

不管在学术圈还是在工业界,总有很多人过度的关心所谓“程序的正确性”,有些甚至到了战战兢兢,舍本逐末的地步。下面举几个例子:

  • 很多人把测试(test)看得过于重要。代码八字还没一撇呢,就吵着要怎么怎么严格的测试,防止“将来”有人把代码改错了。这些人到后来往往被测试捆住了手脚,寸步难行。不但代码bug百出,连测试里面也很多bug。

  • 有些人对于“使用什么语言”这个问题过度的在乎,仿佛只有用最新最酷,功能最多的语言,他们才能完成一些很基本的任务。这种人一次又一次的视一些新语言为“灵丹妙药”,然后一次又一次的幻灭,最后他们什么有用的代码也没写出来。

  • 有些人...

DRY原则的误区

作者:王垠

DRY原则的误区

很多编程的人,喜欢鼓吹各种各样的“原则”,比如KISS原则,DRY原则…… 总有人把这些所谓原则奉为教条或者秘方,以为兢兢业业地遵循这些,空喊几个口号,就可以写出好的代码。同时,他们对违反这些原则的人嗤之以鼻——你不知道,不遵循或者藐视这些原则,那么你就是菜鸟。所谓“DRY原则”(Don't Repeat Yourself,不要重复你自己)就是这些教条其中之一。盲目的迷信DRY原则,在实际的工程中带来了各种各样的问题,却经常被忽视。

简言之,DRY原则鼓励对代码进行抽象,但是鼓励得过了头。DRY原则说,如果你发现重复的代码,就把它们提取出去做成一个...

所谓软件工程

作者:王垠

所谓软件工程

很多编程的人包括我,头衔叫做“软件工程师”(software engineer),然而我却不喜欢这个名字。我喜欢把自己叫做“程序员”(programmer)或者“计算机科学家”(computer scientist)。这是为什么呢?这需要从“软件工程”(software engineering)在现实中的涵义谈起。

有人把软件工程这个领域的本质总结为:“How to program if you cannot?”(如果你不会编程,那么你如何编程?)我觉得这句话说得很好,因为我发现软件工程这整个领域,基本就是吹牛扯淡卖“减肥药”的。软件行业的大部分莫名其妙的愚昧行...

编程的宗派

作者:王垠

编程的宗派

总是有人喜欢争论这类问题,到底是“函数式编程”(FP)好,还是“面向对象编程”(OOP)好。既然出了两个帮派,就有人积极地做它们的帮众,互相唾骂和鄙视。然后呢又出了一个“好好先生帮”,这个帮的人喜欢说,管它什么范式呢,能解决问题的工具就是好工具!我个人其实不属于这三帮人中的任何一个。

面向对象编程(Object-Oriented Programming)

如果你看透了表面现象就会发现,其实“面向对象编程”本身没有引入很多新东西。所谓“面向对象语言”,其实就是经典的“过程式语言”(比如Pascal),加上一点抽象能力。所谓“类”和“对象”,基本是过程式语言里面的记录(...

怎样尊重一个程序员

作者:王垠

怎样尊重一个程序员

得知一位久违的同学来到了旧金山湾区,然而我见到他时,这人正处于一生中最痛苦的时期。他告诉我,自己任职的公司在他加入之前和之后,判若两人。录取的时候公司对他说,我们对你在实习期间的表现和学术背景非常满意,你不用面试,甚至不用毕业拿学位,直接就可以加入我们公司成为正式员工。然而短短一年后的今天,这位同学已经完全感觉不到公司对自己技能的尊重。Manager让他做一些乱七八糟没技术含量的事情,还抱怨说他做事太慢,并且在他的evaluation上很是写了一笔。在人格尊严和工作安全感的双重打击之下,这位同学压力非常大,周末经常偷偷地加班,仍然无法让manager满意。...

我和 Google 的故事(2015 修订版)

作者:王垠

我和 Google 的故事(2015 修订版)

2009 和 2010 年,两年的夏天我都在 Google 实习,然而最后毕业的时候我却没有为 Google 工作。虽然我心里很清楚这里面的原因,可总有些人觉得不解,为什么居然有人不想为 Google 工作?如果你是这些人其中之一,那你可能想知道我在 Google 时的切身感受。

直到将近 2015 年新年的今天,我发现这篇文章仍然具有普遍的意义。面对 Google 的员工,我仍然是同样的感觉。他们很多人太拿自己的公司当回事了,自高自大,放弃自己的尊严来舔这个公司的屁股。这些人总觉得好像所有人都希望为 Google...

关系模型的实质

作者:王垠


关系模型的实质

每当我批评关系式数据库,就会有人说,SQL和关系式数据库的设计,其实偏离了E.F.Codd最初的关系式理论。关系式理论和关系式模型,本身还是很好的,只不过被人实现的时候搞砸了。如果你看透了本质,就会发现这只是一个托词。关系式数据库的问题是根源性的,这个问题其实源自关系式理论本身,而不只是具体的实现。

人们总是喜欢制造这些概念上的壁垒,用以防止自己的理论受到攻击。把过错推到SQL或者IBM身上,是关系式数据库领域常见的托词,用以掩盖其本质上的空洞和设计上的失误。在下面的讨论里为了方便,我会使用少量SQL来表示关系模型里面对应的概念,但这并不削弱我对关系模型的...

对 Go 语言的综合评价

作者:王垠

对 Go 语言的综合评价

以前写过一些对 Go 语言的负面评价。现在看来,虽然那些评价大部分属实,然而却由于言辞激烈,没有点明具体问题,难以让某些人信服。在经过几个月实际使用 Go 来构造网站之后,我觉得现在是时候对它作一些更加“客观”的评价了。

定位和优点

Go 比起 C 和 C++ 确实有它的优点,这是很显然的事情。它比起 Java 也有少数优点,然而相对而言更多是不足之处。所以我对 Go 的偏好在比 Java 稍低一点的位置。

Go 语言比起 C,C++ 的强项,当然是它的简单性和垃圾回收。由于 C 和 C++ 的设计有...

黑客文化的精髓

作者:王垠

黑客文化的精髓

听说“黑客文化”这个词,就像在昨天。想起它,眼前就出现一些头发蓬乱,穿黑色道袍的人。最早的时候,他们努力地向人们澄清:“黑客”不是贬义词,不是指那些入侵电脑网络的罪犯。当人们明白过来之后,他们开始告诉人们如何成为一个黑客,并且把黑客与画家相提并论。当人们受到鼓舞,决心成为黑客之后,他们开始向这些人灌输黑客的“行为守则”,“提问的艺术”等等。总之就是说,你得显示出一些非常重要的特征以证明你是高手,并且教育那些菜鸟们。否则按照我们的标准,你就不是个黑客!

于是忽然间,我来到了这个黑客遍地的世界。体验着,忍受着自己向往已久的“黑客文化”。

某大牛说……

一个中等水平...

© backup | Powered by LOFTER