想知道措辞的威力有多大,可以看看《通天塔-17》。里面星际战役的一方只需让另一方学习了一门措辞,即让对方弃明投暗。编程措辞也具有类似的威力,它授予了软件公司重塑自我的能力,它不仅能改变问题的办理办法们乃至还可以改变提出什么样的问题。这大概是Google、苹果等推出自己措辞的缘故原由所在,而初创企业想要造诣什么样的愿景,编程措辞的选择很关键。
Ruby措辞帮助开拓出了Twitter、Hulu以及许多的当代Web网站。其发明者这天本人松本行弘。松本行弘发明Ruby则是受到了美国作家Samuel R. Delany揭橥于1966年的一部科幻小说《通天塔-17》。
这部小说里面有一个核心的思想—措辞会改变人的思想、影响人的行动。故事里面讲到,星际战役的一方发明了一种名为Babel-17的措辞,敌方的人学了这门措辞之后,思想和觉得都会发生改变,从而变成了本方的叛徒。这本书解释了措辞的多少特点—即生活条件塑造了措辞形式和意义,但是措辞本身也会塑造人的行动。

小说主角对通天塔-17的评价是:
Babel-17是那么精确的一门剖析措辞,险些可以确保你在技能上应对面临的任何情形。
松本行弘也希望实现同样的事情—用一门措辞重组并改进程序员的思考办法。实际上开拓者这种群体也方向于认为,编程措辞不仅能改变问题的办理办法,乃至也能改变提出什么样的问题。以是这些人衡量公司规模、产品好坏或者同事强弱时每每会问一个问题:
你用什么措辞?
这有助于外界理解软件公司为什么会变得如此强大、为什么会那么有代价,有助于理解那些影响我们日常生活的产品和做事。一项看似与我们无关的最内部的决定,比方说新产品的开拓究竟是用Ruby、PHP还是C措辞,溘然之间却会影响到我们所有人。以是,如果你想知道Facebook为什么会是这个样子,为什么这么运作,接下来又会干什么,那就得理解一下PHP—扎克伯格开拓Facebook用的措辞。
PHP大概是所有编程措辞当中最不受程序员待见的措辞了。编程问答网站Stack Overflow的联合创始人Jeff Atwood用了非常毒辣的措辞点评PHP,称PHP设计糟糕、东拼西凑,是 “步履蹒跚的怪物”、“瘟疫”、鬼屋,说在里面住的人都是喜好鬼的人,称用PHP的都是业余爱好者。“有人误以为进入Facebook的都是才华横溢的工程师,但实在他们是一群用Windows XP写PHP的人。说他们是黑客险些跟骂人差不多。”
大多数成功的编程措辞都有整体哲学或者一套用于组织词汇语法的原则指南,但是PHP没有—PHP的创始人Rasmus Lerdorf早在2003年就承认,自己不知道如何写编程措辞,只是走一步看一步,想到什么加什么。
比方说防止恶意数据攻击的PHP函数“mysql_escape_string”被创造存在漏洞之后,其补救方法不是对这个函数打补丁,而是重新开拓了一个名为“mysql_real_escape_string”的函数,这就好比是在飞机驾驶舱安装了两个类似的按钮,按下个中一个可以让飞机放下起落架,而按下另一个则会让飞机掉下。
虽然很多人都说PHP很烂,但是却不能阻挡它的火。据估计环球有39%的网站用PHP编写,个中就包括了Facebook、Wikipedia、WordPress著名网站等。缘故原由在于PHP只管有缺陷,但是做动态内容上手简单,不须要专业人士也能弄。
PHP的持续发展对付Wikimedia(维基百科)的成功非常关键。由于严重依赖PHP,维基百科遭遇了大规模的设计毛病,并且直到2008年才推出了能适应移动设备的版本,到2013年才做出对用户友好的编辑界面。但是PHP让那些不是软件工程师的人也能贡献新功能,维基百科之以是能展示古埃及的象形笔墨、处理散页乐谱正是由于此。
但是Google不能用PHP来开拓,由于Google哀求搜索要快要精确,实在现须要更加风雅和强大的措辞,比方说Java或者C++。Facebook与之比拟就相称于是小型试验的集市,加几个按钮、feeds或者小玩意来吸引你的把稳力。PHP是为了迅速炮制出新功能而生的。
你险些可以想象得出在决定命运的那一天里,扎克伯格在哈佛大学宿舍里是如何琢磨着以最快的速率和最小的代价让Facebook上线的。Web的节奏太快,用户又太善变了,要想捕捉到这一刻唯有成为第一个。程序写得再怎么烂都不要紧,最关键是把事情干完,让别人用上。那一刻他满脑筋想的不是如何把代码写俊秀,而是让他的朋友登录上“Thefacebook”对认识的姑娘评头论足一番。
现在的Facebook市值已超过2000亿美元,办公室的墙上贴的都是这样的东西:“完成好过完美”,“快速行动、冲破陈规。”扎克伯格希望用这些话让员工与Facebook的“黑客”文化保持同等。但实在这些正好是PHP的代价不雅观。快速行动冲破陈规实际上正是PHO的真髓,只假如“讲”这门措辞的人都不可避免要按照这种办法思考。可以说是这门措辞本身造就和维系了Facebook的文化。
秘密武器
如果要找跟PHP这种自然实验措辞完备相反的例子,没有地方比下曼哈顿区的金融交易机构Jane Street Capital更得当。这家400人的公司每天处理着美国大约2%的股权交易。
他们用的编程措辞是OCaml,10年前,公司的技能卖力人Yaron Minsky说服了老板用这门晦涩的措辞重写了公司的全体交易系统。这措辞原来由法国的一家研究机构的学者开拓,目的是想改进某个用来自动证明数学定理的打算机系统,此前险些没人用这门措辞进行过实际事情。但是Minsky在读研时打仗到OCaml之后,认为这门措辞可以替代Jane Street 交易系统的那些Excel表。
OCaml的一大卖点是它的“类型系统”,类型系统跟Word的语法检讨器有点类似,不同的是语法检讨器只是用绿色波浪线标出有问题的笔墨,而类型系统检讨出错误后会阻挡系统运行。写有类型系统的程序的可靠性每每要比没有的高很多—这一点对付一个日交易量高达300亿美元的系统来说是非常有用的。
OCaml的类型系统帮忙拦截了bug,Jane Street的程序员就可以专注于更加高等的问题。有人乃至预测随着韶光转移这些人是不是已经内化了系统的不断纠缠,OCaml变成了某种新语(Newspeak),没人敢打任何坏主张。
其要点在于,要想充分得到类型检讨器的好处,程序员必须给自己的代码增加繁芜的表明。就彷佛Word的语法检讨器须要你对所有的句子进行阐明一样。写代码还要进行类型约束是令人讨厌乃至灰心的事情。更糟的是,OCaml频年夜部分的编程措辞哀求都要高,须要对数学抽象有很深的理解,这已经超出了大部分开拓者的能力范畴。但是这种措辞的严格对付某些人来说却相称于猫薄荷,这反而让Jane Street在紧张的招聘市场里有了一项分歧凡响的上风。OCaml就像猫薄荷一样替Jane Street源源不断地吸引了一批批的高本色人才候选人。那些人被吸引的不仅是由于这门措辞,更是由于利用这门措辞的人。人以群分,这里的人平时玩的都是四人国际象棋。看起来竞争情报的文化与一门奇特措辞的利用密切干系。
类似地,Google彷佛也打算通过Go措辞的推广利用来达到类似目的。Go是Google开拓的一种高性能编程措辞,目的是要让Web的处理事情更加优雅和高效。开拓此类高风险软件是有好处的,由于大型Web做事背后的那一大群做事器的运行须要这样的措辞。对付喜好新奇和寻衅的开拓者来说Go尤其具有吸引力。
发展的烦恼
2010年末,Facebook遭遇了一次危急。PHP本身并不是针对性能优化而开拓的,而Facebook网站又发展得太快,若不进行相称彻底的改造网站看起来快要瘫掉了。
换措辞根本不在考虑的范围之内。Facebook网站上有着数千专家工程师撰写的上百万行PHP代码,还有超过5亿用户在利用它。因此Facebook叮嘱消磨了一支由资深工程师组成的特种部队,让这批人去攻关一个分外项目,找出让Facebook不放弃它那带黑客口音(hacky)母语的情形下坚持运转的办法。
办理方案个中的一部分是开拓出一种编译器软件,将Facebook的PHP代码编译为更快的C++代码。而项目的其余一项事情则成为了打算机措辞工程的一大壮举,它使得Facebook的程序员在保持PHP血统文化的同时还可以编写出更加可靠的代码。
这支接济分队发明了一门PHP方言,名字叫做Hack。Hack是带可选类型传系统的PHP,也便是说,你可以还连续写原来随性写意的PHP,也可以选择增加表明让类型系统检讨代码的精确性。跟Jane Street一样,这种类型检讨器完备是用OCaml编写的,这绝非巧合。Facebook希望自己的码农用感到舒畅的母语连续快速行动(move fast),但是同时不肯望他们在这么做时不得不冲破一些东西(break things)。(去年扎克伯格宣告了新的口号:“稳定构造、快速行动”)
与此同时,Twitter也经历了类似的变革。Twitter原来是用盛行的Web框架Ruby on Rails开拓的,而后者则是在Ruby根本上受PHP启示做出来的。然后Twitter的用户开始暴涨。一旦大V发布了新的推特,数十万粉丝的tinemline也必须立时更新。此轮情形每每会令系统不堪重负,Twitter工程师不得不把网站暂时关闭才能搪塞。由于常常干这种事情,掩护页面的那头失落败的鲸鱼形象都变得臭名卓著了。后来Twitter用Scala措辞替代了公司很大一部分的做事实现。不出猜想,跟OCaml一样,Scala也是由学者开拓,一样拥有强大的类型系统,都因此程序员的自由和开拓的惬意为代价来确保准确和性能。
跟初创企业终极找到收入来源而走向“成熟”类似,他们同样也可以借助编程措辞的力量来操控组织生理。在Google干过7年、现在Dropbox事情的编程措辞设计师Guido van Rossum说,软件公司到达一定规模之后要想避免陷入混乱,唯一的办法是借助预先须要程序员做更多事情的编程措辞。“便是那种让你放慢下来的觉得,由于所有事情你都须要说上三遍。”这便是为什么许多初创企业尽可能拖延切换措辞的缘故原由所在。换上更严谨的措辞有可能会让你失落去一些NB的创业元老黑客,迸发出新功能的可能性也会降落。但是这能帮助全体公司更好地理解别人的代码,担保产品日常运营必要的稳定性。
软件初创企业能够进行这样的机动乃至可能还阐明了他们为什么会如此强大。部分缘故原由是由于打算机规模的扩大。但是这些公司也有着独特的重塑自我的能力。随着公司的改变与发展,这些公司能做的不仅仅只有重写画画组织构造图而已。由于他们是用代码书写成的,以是可以做一些更加激进的事情—他们可以重新组织自己、再造企业文化,改变思考办法。
编译自:MIT TR