想知道语言的威力有多大,可以看看《通天塔-17》。里面星际战争的一方只需让另一方学习了一门语言,即让对方弃明投暗。编程语言也具有类似的威力,它赋予了软件公司重塑自我的能力,它不仅能改变问题的解决方式们甚至还可以改变提出什么样的问题。这也许是Google、苹果等推出自己语言的原因所在,而初创企业想要成就什么样的愿景,编程语言的选择很关键。 3 {4 O3 D# u/ l. m u! K: o1 f1 z- O ) }" I* G7 }' mRuby语言帮助开发出了Twitter、Hulu以及许多的现代Web网站。其发明者是日本人松本行弘。松本行弘发明Ruby则是受到了美国作家Samuel R. Delany发表于1966年的一部科幻小说《通天塔-17》。+ n! F- R. ~7 I0 X1 R
' k P2 p. L' _0 Y; t+ W4 \ ; w; a2 r2 I7 Y; }# Z2 A$ Q) w c7 _5 d" a
这部小说里面有一个核心的思想—语言会改变人的思想、影响人的行动。故事里面讲到,星际战争的一方发明了一种名为Babel-17的语言,敌方的人学了这门语言之后,思想和感觉都会发生改变,从而变成了本方的叛徒。这本书说明了语言的若干特点—即生活条件塑造了语言形式和意义,但是语言本身也会塑造人的行动。$ z# y7 k7 m5 ]& b: i. P8 a
: H) J& x8 Z* Z& Y. ^) d* ` # ^5 O$ \7 d6 C0 @+ U- }+ g e& ?0 I3 P
小说主角对通天塔-17的评价是:/ Z+ N# n( v3 j- u
* r0 f9 Z% @2 U) @$ l( a" V/ x" ~7 x: }" x
) m9 s0 T! b; H( c! ]
Babel-17是那么精确的一门分析语言,几乎可以确保你在技术上应对面临的任何情况。 5 }- r. ?+ w4 K( p6 M }4 u+ j9 j- b5 T5 B7 { 9 a$ J; k+ B) b$ r. C6 A( l7 T $ X$ X5 \7 N/ f7 O+ o8 y松本行弘也希望实现同样的事情—用一门语言重组并改进程序员的思考方式。实际上开发者这种群体也倾向于认为,编程语言不仅能改变问题的解决方式,甚至也能改变提出什么样的问题。所以这些人衡量公司规模、产品好坏或者同事强弱时往往会问一个问题:, t+ O" C) K+ R1 U) w* k
0 X4 b6 e5 u$ i# j. Z# b4 _6 l" Y+ H. y. x 9 ~% f9 I; r. w1 a6 X3 K0 Q0 v( \9 G8 F( }2 z' y- Z) @: A4 A
你用什么语言? , l- G$ y* e8 q0 S9 E, Q' `8 p" `' e& @/ z
这有助于外界理解软件公司为什么会变得如此强大、为什么会那么有价值,有助于了解那些影响我们日常生活的产品和服务。一项看似与我们无关的最内部的决定,比方说新产品的开发究竟是用Ruby、PHP还是C语言,突然之间却会影响到我们所有人。所以,如果你想知道Facebook为什么会是这个样子,为什么这么运作,接下来又会干什么,那就得了解一下PHP—扎克伯格开发Facebook用的语言。 , _" u4 }) g1 ?3 i4 e1 D; [ & X+ D$ W1 [, y B: CPHP也许是所有编程语言当中最不受程序员待见的语言了。编程问答网站Stack Overflow的联合创始人Jeff Atwood用了非常恶毒的语言点评PHP,称PHP设计糟糕、东拼西凑,是 “步履蹒跚的怪物”、“瘟疫”、鬼屋,说在里面住的人都是喜欢鬼的人,称用PHP的都是业余爱好者。“有人误以为进入Facebook的都是才华横溢的工程师,但其实他们是一群用Windows XP写PHP的人。说他们是黑客几乎跟骂人差不多。” . {% a5 p5 a5 K% U/ V
/ K; l3 i! P/ l大多数成功的编程语言都有整体哲学或者一套用于组织词汇语法的原则指南,但是PHP没有—PHP的创始人Rasmus Lerdorf早在2003年就承认,自己不知道如何写编程语言,只是走一步看一步,想到什么加什么。 6 v" N/ m1 ]& g ! Q& q% \( J/ K, q. B7 F: F比方说防止恶意数据攻击的PHP函数“mysql_escape_string”被发现存在漏洞之后,其补救措施不是对这个函数打补丁,而是重新开发了一个名为“mysql_real_escape_string”的函数,这就好比是在飞机驾驶舱安装了两个类似的按钮,按下其中一个可以让飞机放下起落架,而按下另一个则会让飞机掉下。 . o/ {8 V4 k) r8 b& ?: @* D5 w5 R) Y
虽然很多人都说PHP很烂,但是却不能阻止它的火。据估计全球有39%的网站用PHP编写,其中就包括了Facebook、Wikipedia、WordPress著名网站等。原因在于PHP尽管有缺陷,但是做动态内容上手简单,不需要专业人士也能弄。 ! f! V. O. S( V: z: W 2 j- x: U% y' a2 m! T9 f TPHP的持续发展对于Wikimedia(维基百科)的成功非常关键。由于严重依赖PHP,维基百科遭遇了大规模的设计缺陷,并且直到2008年才推出了能适应移动设备的版本,到2013年才做出对用户友好的编辑界面。但是PHP让那些不是软件工程师的人也能贡献新功能,维基百科之所以能展示古埃及的象形文字、处理散页乐谱正是因为此。 6 |. h# c8 K3 Y* @6 }0 w; w 7 }5 I& f0 S* ? b t2 ]8 ]+ o# m但是Google不能用PHP来开发,因为Google要求搜索要快要精确,其实现需要更加精细和强大的语言,比方说java或者C++。Facebook与之对比就相当于是小型试验的集市,加几个按钮、feeds或者小玩意来吸引你的注意力。PHP是为了迅速炮制出新功能而生的。 N9 y- R+ e# u
+ ]& R) B& ]2 K- ~你几乎可以想象得出在决定命运的那一天里,扎克伯格在哈佛大学宿舍里是如何琢磨着以最快的速度和最小的代价让Facebook上线的。Web的节奏太快,用户又太善变了,要想捕捉到这一刻唯有成为第一个。程序写得再怎么烂都不要紧,最关键是把事情干完,让别人用上。那一刻他满脑子想的不是如何把代码写漂亮,而是让他的朋友登录上“Thefacebook”对认识的姑娘评头论足一番。 ! }7 S6 h% q- N- S. ]4 g$ @) y* v y& Y" Q" x
现在的Facebook市值已超过2000亿美元,办公室的墙上贴的都是这样的东西:“完成好过完美”,“快速行动、打破陈规。”扎克伯格希望用这些话让员工与Facebook的“黑客”文化保持一致。但其实这些恰恰是PHP的价值观。快速行动打破陈规实际上正是PHO的真髓,只要是“讲”这门语言的人都不可避免要按照这种方式思考。可以说是这门语言本身造就和维系了Facebook的文化。 2 b* a, Z8 \$ y& L2 r2 u9 |' S6 i3 e) r4 p5 w x. s0 T' c
秘密武器4 f# E: r* o" i
3 t$ I- r, A5 ~* m
如果要找跟PHP这种自然实验语言完全相反的例子,没有地方比下曼哈顿区的金融交易机构Jane Street Capital更合适。这家400人的公司每天处理着美国大约2%的股权交易。1 T' `; l. ~( o f; O
- d0 j) [8 G' I, [他们用的编程语言是OCaml,10年前,公司的技术负责人Yaron Minsky说服了老板用这门晦涩的语言重写了公司的整个交易系统。这语言原本由法国的一家研究机构的学者开发,目的是想改进某个用来自动证明数学定理的计算机系统,此前几乎没人用这门语言进行过实际工作。但是Minsky在读研时接触到OCaml之后,认为这门语言可以替代Jane Street 交易系统的那些Excel表。$ j) ]; |, z- @$ ~
1 i" g. k# ?4 e( _2 v# w' l
OCaml的一大卖点是它的“类型系统”,类型系统跟Word的语法检查器有点类似,不同的是语法检查器只是用绿色波浪线标出有问题的文字,而类型系统检查出错误后会阻止系统运行。写有类型系统的程序的可靠性往往要比没有的高很多—这一点对于一个日交易量高达300亿美元的系统来说是非常有用的。* i7 C# x. L: E6 y" x
, l4 w) d" ?' O! J( Q$ U
OCaml的类型系统帮忙拦截了bug,Jane Street的程序员就可以专注于更加高级的问题。有人甚至猜测随着时间转移这些人是不是已经内化了系统的不断纠缠,OCaml变成了某种新语(Newspeak),没人敢打任何坏主意。7 o. m( Z/ v, \5 M! r& R" f
0 \8 `; [! P1 H与此同时,Twitter也经历了类似的变革。Twitter原先是用流行的Web框架Ruby on Rails开发的,而后者则是在Ruby基础上受PHP启发做出来的。然后Twitter的用户开始暴涨。一旦大V发布了新的推特,数十万粉丝的tinemline也必须马上更新。此轮情况往往会令系统不堪重负,Twitter工程师不得不把网站暂时关闭才能应付。由于经常干这种事情,维护页面的那头失败的鲸鱼形象都变得臭名卓著了。后来Twitter用Scala语言替代了公司很大一部分的服务实现。不出意料,跟OCaml一样,Scala也是由学者开发,一样拥有强大的类型系统,都是以程序员的自由和开发的惬意为代价来确保准确和性能。- b5 Q/ `& i X" m i3 X. [1 u+ y
/ o$ a+ Y( y2 D( h6 D5 }跟初创企业最终找到收入来源而走向“成熟”类似,他们同样也可以借助编程语言的力量来操控组织心理。在Google干过7年、现在Dropbox工作的编程语言设计师Guido van Rossum说,软件公司到达一定规模之后要想避免陷入混乱,唯一的办法是借助预先需要程序员做更多事情的编程语言。“就是那种让你放慢下来的感觉,因为所有事情你都需要说上三遍。”这就是为什么许多初创企业尽可能拖延切换语言的原因所在。换上更严谨的语言有可能会让你失去一些NB的创业元老黑客,迸发出新功能的可能性也会降低。但是这能帮助整个公司更好地理解别人的代码,保证产品日常运营必要的稳定性。( d- s' d+ ?+ V! o7 \8 H6 w( I! C* A
2 j t- `+ y3 P5 K6 r
软件初创企业能够进行这样的机动甚至可能还解释了他们为什么会如此强大。部分原因是由于计算机规模的扩大。但是这些公司也有着独特的重塑自我的能力。随着公司的改变与发展,这些公司能做的不仅仅只有重写画画组织结构图而已。因为他们是用代码书写成的,所以可以做一些更加激进的事情—他们可以重新组织自己、再造企业文化,改变思考方式。 ' `9 L4 D: a. y6 t4 b1 u9 g3 e# y& @9 O