关于Git的礼节

关于Git的礼节 (这里的内容本来是《[怎样尊重一个程序员](http://www.yinwang.org/blog-cn/2015/03/0

怎样尊重一个程序员

怎样尊重一个程序员 得知一位久违的同学来到了旧金山湾区,然而我见到他时,这人正处于一生中最痛苦的时期。他告诉我,自己任职的公司在他加入之前和之

所谓“人为错误”

所谓“人为错误” 昨天是一个让人悲哀的日子。旧金山湾区主要的上下班交通工具Caltrain,在24小时之内发生三次事故,撞死三人。其中一次事故

其他人的BUG

其他人的BUG 在软件行业,经常看到有的公司管理让一个人修补另一个人代码里的BUG。有时候有人写了一段代码,扔出来不管了,然后公司管理让其他工

创造者的思维方式

创造者的思维方式 我不知道人们是怎么回事,缺乏想象力还是怎么的,所以我跟其他人对话常常遇到类似的问题。 我:A其实不怎么好。 其他人:你说A不好,

小费和中国人的尊严

小费和中国人的尊严 小费,一个尴尬的话题,一般是中国人来到美国之后第一个不习惯的文化现象。在中国,吃饭理发等活动是不需要付小费的,而在美国,付

关系式模型的实质

关系式模型的实质 每当我调侃关系式数据库,就会有人说,SQL 和关系式数据库的设计偏离了 E. F. Codd 最初的关系式理论,关系式理论和关系式模型本身还是很

对 Go 语言的综合评价

对 Go 语言的综合评价 以前写过一些对 Go 语言的负面评价。现在看来,虽然那些评价大部分属实,然而却由于言辞激烈,没有点明具体问题,难以让某些人信服。

一个对 Dijkstra 的采访视频

一个对 Dijkstra 的采访视频 ![](http://www.yinwang.org/images/dijkstra- interview.jpg) (也可以访问 YouTube 或者从源地址下载 [MPEG1](http://www.cs.utexas.edu/users/EWD/video- audio/NoorderlichtVideo.html),300M) 之前在微博上推荐

程序员的心理疾病

程序员的心理疾病 由于程序员工作的性质,他们长期以来受到的所谓“黑客”式的“熏陶”,形成了一种行业性的心理疾病。患了这种病的人对于很多新入行的

程序语言与它们的工具

程序语言与它们的工具 谈论了这么多程序语言的事情,说得好像语言的好坏就是选择它们的决定性因素。然而我一直没有提到的一个问题是,“程序语言”和“

王垠和权威的故事

王垠和权威的故事 每个人小时候心里都是没有权威的,就像每个人小时候也都不相信广告一样。可是权威就像广告,它埋伏在你的潜意识里。听一遍不信,听两

丘奇和图灵

丘奇和图灵 丘奇(Alonzo Church)和图灵(Alan Turing)是两位对计算机科学具有最大影响力的人物,然而他们却具有非常对立的观点

原因与证明

原因与证明 证明 我在 Cornell 的时候经常遇到这样的问题,那就是教授们一上课就在黑板上写长篇的“定理证明”,全体同学认认真真在下面抄笔记,就连只有十来个

编辑器与IDE 无谓的编辑器战争

编辑器与IDE 无谓的编辑器战争 很多人都喜欢争论哪个编辑器是最好的。其中最大的争论莫过于 Emacs 与 vi 之争。vi 的支持者喜欢说:“看 vi 打起字来多快,手

关于语言的思考

关于语言的思考 之前写了那么多 Haskell 的不好的地方,却没有提到它好的地方,其实我必须承认我从 Haskell 身上学到了非常重要的东西,那就是对于“类型”的思考。虽

软件行业里几个超炫的专业词汇

软件行业里几个超炫的专业词汇 从同事的博客上学会了几个超炫的专业词汇,激动不已。觉得这些词汇可以言简意赅的概括我的好几篇博文,自己的文章水准真

Markdown 的一些问题

Markdown 的一些问题 把我之前的博文基本上转换成了 markdown 格式。我发现 markdown 虽然在编辑器里看起来比 HTML 清晰一些,但也有一些不足。 这些 markup 语言的格式都有点像我本科的时

谈程序的“通用性”

谈程序的“通用性” 在现实的软件工程中,我经常发现这样的一种现象。本来用很简单的代码就可以解决的问题,却因为设计者过分的关注了“通用性”,“可

Scheme 编程环境的设置

Scheme 编程环境的设置 介绍了这么久的 Scheme,却没有讲过如何配置一个高效的 Scheme 的编程环境。有些人开始学习 Scheme 的时候感觉无从下手,所以今天讲一下它的

测试驱动开发

测试驱动开发 现在的很多公司,包括 Google 和我现在的公司 Coverity,都喜欢一种“测试驱动的开发”(test-driven development

Currying 的局限性

Currying 的局限性 很多基于 lambda calculus 的程序语言,比如 ML 和 Haskell,都习惯用一种叫做 currying 的手法来表示函数。比如,如果你在 Haskell 里面这样写一个函数: f x y = x

惰性求值

惰性求值 从之前的几篇博文里面你也许已经看到了,Haskell 其实是问题相当严重的语言,然而这些问题却没有引起足够的重视。我能看到的 Haskell 的问题在

函数式语言的宗教

函数式语言的宗教 很早的时候,“函数式语言”对于我来说就是 Lisp,因为 Lisp 可以在程序的几乎任意位置定义函数,并且把它们作为值来传递(这叫做 first-class f