打字猴:1.70555771e+09
1705557710 当20世纪50年代末,IBM的约翰·巴克斯和他的团队开发FORTRAN语言,也就是“公式翻译”语言的时候,他们希望让程序员用这种语言来运算复杂的数学公式。编译程序必须将FORTRAN语言命令翻译成按顺序排列的儿童语言一般的机器编码,以便简单的计算机逻辑电路能够执行。编译程序不但需要将合理的命令翻译成儿童语言,还需要拒绝翻译不合理的或意义不明确的命令。如果你让它编译“狗这条!带散步”这样的命令,它必须要喊“犯规”,简而言之,编译程序要理解语法。
1705557711
1705557712 语法就是合理的句子要满足的一整套规则。成年人不用思考就能本能地认识到语法,但计算机必须按照规则来。巴克斯开发出一种数学形式,用来表述、分析语法,有助于完成语言翻译任务。这种形式在那些简单的编程语法上,也就是在不如自然表达的语法复杂和微妙的编程语法上很好用。巴克斯的这种形式被称为“巴克斯标准格式”(BNF),为创造语法上相一致的计算机语言提供了一种方法,可与诺阿姆·乔姆斯基发现的“生成语法”相提并论。利用“巴克斯标准格式”,我学会了如何设计短小的语法上相一致的计算机语言。
1705557713
1705557714 BNF可帮助你界定你的计算机语言的语法。它能让你设计出一种编程语言,对你的语言做句法分析并只接受那些语法上正确的句子。但到此为止,任务只完成了一半。任务的另一半就是完成编译程序的余下部分,将语法正确的句子翻译成儿童语言。这是一种极其乏味和困难的任务,对于人们赖以研究数学或控制航天器的程序而言,翻译上的一个小错误都是潜在致命的。
1705557715
1705557716 UNIX操作系统对于程序员而言具有令人激动的开放环境。它含有两个我见过的最美好的工具程序:分别被称为“lex”和“yacc”,它们让我毫不费力地创建编译程序。lex是“词汇分析器”的缩写,yacc代表“目前为止又一个编译程序的编译程序”(Yet Another Compiler-Compiler)。像很多UNIX工具程序一样,人们用短小、可爱的首字母缩写形式来命名“yacc”。你可以利用lex来创建子程序,识别你语言中的所有单词;可以利用yacc来创建另一个子程序,识别并分析合理的句子,然后执行你认为合适的命令。lex和yacc都是“非过程性”程序,你不需要写下词汇分析和句法分析的所有细节。相反,你只需要告诉它们你希望识别怎样的语法,它们就会编写出程序来完成这项任务,所利用的算法规则可以回溯到计算机先驱艾伦·图灵和史蒂芬·克林使用过的匹配模式。有lex和yacc作为帮手,我学会了创建我自己的计算机语言。
1705557717
1705557718 费曼图出现之前,只有像施温格和费曼这样的天才人物才能计算出量子力学的各种可行性,费曼图出现后,平凡的物理学家都可以不费脑子地进行计算。与此类似,这些句法分析工具允许普通程序员毫不费力地设计出计算机语言,而此前这样的工作需要付出极大的努力才能完成。
1705557719
1705557720 我过去总是将计算机应用等同于数值计算。现在,当接触到计算过程中的语言方面后,我非常遗憾以前没有认识到。我幻想着能够逃离商务分析系统中心的工作,而成为10号区域内一名真正研究计算机的科学家。我还曾尝试着调换部门,但我既没有相关证书又无工作背景,这几乎是不可能的。
1705557721
1705557722 尽管如此,我在贝尔实验室5年的大部分时间里,都在从事设计编译程序的工作。我花了好几年的时间设计并运行了一种我称之为“HEQS”的语言,也就是“分级方程式计算器”(Hierarchical Equation Solver)。这是一种关于方程式的语言,为那些知道如何列出方程式,但又缺少足够的数学知识或时间来解方程的商务人士而设计的。这一名字体现了UNIX操作系统工具程序所必备的短小、可爱,但它还是“邪咒”(hex)的音近义异词,简明地反映了我暗地里对在5号楼那段生活的病态看法。
1705557723
1705557724 与lex或yacc相似,HEQS是非过程语言,使用者可以说出他们想要做的事情(如“求解这些方程”)而不需要明确列出完成任务的过程(相反,FORTRAN语言和C语言都是过程语言,需要程序员极其痛苦地列出如何执行任务的详细细节)。在HEQS的最终版本中,你可以让它求解上千个代数方程(线性、非线性或二者都有),它也会告诉你因为在你输入方程式时所犯的哪些错误使得求解进行不下去。HEQS还为分析一组方程式提供了工具,使用者可以检验输入和输出之间的关系,从而弄清楚一个变量值的改变通过怎样的链条影响到另外一个变量值。从本质上说,HEQS使AT&T中的商务使用者把时间花在阐明他们的业务活动或是会计模型的关系上,而不必担心怎样去进行计算。
1705557725
1705557726 6年后,当个人计算机被广泛使用后,像Visicalc和Lotus这样的电子制表软件为完成相同的工作任务提供了工具。而在那之前,AT&T总部的各种商务人士都是利用HEQS来进行模型计算的,我们中心的很多程序员也将HEQS用在所开发的应用程序中,作为一种计算方程式的工具。在《AT&T技术杂志》(AT&T Technical Journal)的一期中,我对HEQS进行了介绍,很高兴借此涉足研究领域中。[4]
1705557727
1705557728 我通过研究lex和yacc来设计HEQS编程语言和它的编译程序,独立完成了HEQS的开发工作。当使用者输入想要求解的方程式后,我所开发的程序就会将这些方程式进行分组,重新分成更小的、可以同时计算的方程组,从而使得一组方程式计算出的结果可以作为进行下一组计算所需要的输入值。受到我在贝尔实验室上过的计算机科学课程的启发,我意识到我可以将一组方程式里的每一个变量都用一个定向坐标图里的点来表示,这样一来,重排方程式就相当于在坐标图里把图形分解成有着紧密关系的分向量。我天真地以为在做真正的数学研究,并以此为荣。
1705557729
1705557730 不管到了哪里,我都有很多可以求助的资源。我发现10号区域的计算机科学技术员克里斯·冯维克曾经写出一套求解联立方程组的UNIX工具。他在斯坦福大学完成他的博士论文时就开始这方面的工作了。那时他的博士生导师是唐纳德·努斯,努斯是著名的四卷本《计算机编程艺术》(The Art of Computer Programming)的作者,也是广为使用的、已成业界标准的数学公式排版和词语处理的计算机语言TeX的发明者。我在贝尔的那个粒子物理学家朋友史蒂夫·布拉哈告诉我说,努斯是他大学寝室室友。当我和克里斯在一起工作时,我对克里斯专业的编程技巧印象深刻。我只是一个业余爱好者,主要靠小聪明,而克里斯才真正是个人物,是在他专业领域内工作的研究人员。我觉得自己注定只能是一个业余爱好者。
1705557731
1705557732 HEQS是一个很好的想法。很快,中心里的人们就开始用它来求解规模更大的方程组,这时HEQS就需要比我所能提供的更加精巧和高效的设计了。我的HEQS版本只能让使用者用数字(数量)和一维向量来表示金融时间序列。于是,我的一位同事爱德·夏普德被派来和我一起工作,我们计划重写系统来加入多维矩阵变量,以便能够表示更一般的金融时间序列。当我与家人去火岛沙滩上度过两个星期的假期时,爱德突然完全投入系统再设计和重写整个系统的工作中,却没有提前通知我。当我回来后,面对这样一个“既定事实”:系统已经是全新的、增强的、带有APL语言风格的,几乎识别不出来了。现在,爱德的版本可以应用到复杂的动态链接数据结构里,这种结构的细节,我想我这辈子都掌握不了。爱德还聪明地修改了HEQS,当你交互使用它来开发、求解金融模型时,你可以利用它生成一个C语言程序,从而可以以快上好几倍的速度求解方程式。
1705557733
1705557734 编程对于爱德而言就是一件自然而然的事,而我从来就没有过这样的感觉,他在编程方面的娴熟程度也令我很沮丧。1984年年末的某个时候,爱德离开贝尔加入了一家保罗·艾伦创立的位于西雅图的Asymetrix公司。我在贝尔余下的日子里,成了我们成功的牺牲品:我常常要埋首于他的编码中,对留在那里的漏洞修修补补,而产生这些漏洞的算法我从来没有写过,也从来没有完全弄懂过,这种工作一次就要花上好几天工夫。
1705557735
1705557736 差不多也就是在看爱德所设计和编写的代码时,我意识到很多物理学家是如何误解非学术世界中工作和职业的性质了。物理学家总是认为自己很聪明,一旦自降身段从事了“外面世界”的工作,他们的聪明才智能让他们只需朝九晚五地工作,还能超过其他同事。但是在很多非学术工作中,总是有这样一些人:对他们来说,特定的工作并不是一种妥协,而是一份激情、一种投入,他们非常认真地看待这份工作。是他们,而不是那些聪明但漫无目的混日子的物理学家,给卓越确立了标准。
1705557737
1705557738 对我而言,HEQS的最终结果令我满意。克里斯·冯维克和我最终写了一篇关于HEQS的文章,发表在软件期刊《编程:实践与经验》1984年的某期上。我为能再次发表论文,为正在“搞科学研究”而感到欣喜若狂。即便现在,当我在网上偶尔看到有人引用这篇文章时,仍能感到一阵兴奋,尽管这些引用中的大部分是由于克里斯一直在从事非过程性语言研究的缘故。最近,我非常高兴地发现,贝尔实验室的后继者朗讯公司仍在他们的网站[5]上以89美元的价格销售HEQS。但在这Mathematica和Excel的时代,我不能想象还有谁会买它。
1705557739
1705557740 1980~1985年在商业分析系统中心工作期间,我几乎没有学到什么商业或金融知识。相反,我在那里学到的软件工程技巧却对我非常有好处,为我后来1987年在高盛设计固定收益金融模型中的很多工作奠定了基础。
1705557741
1705557742 尽管受过良好教育,我在贝尔实验室仍时常感到委屈和卑微。在那里工作约一个月的时候,我带着只有3岁大的约书亚去我们还住着的洛克菲勒大学的草坪上玩。他喜欢把鞋脱掉,光着脚在草地上跑来跑去。在他玩的时候,我坐在那里反复思考我都在做些什么。他突然跑过来,看着我问道:“爸爸,你为什么伤心啊?”我那时就知道了,我每天早晚往来于家和贝尔实验室之间不过是暂时的。我只是不知道,该怎样来结束这段旅程。
1705557743
1705557744 [1] 在华尔街,直到20世纪90年代晚期,有博士学位的工作人员还很少在名片卜列出学位,因为这样做很容易让人觉得他们不是商业人士。基于同样的原因,宽客和程序员们花了很长时间才开始经常性地在名片上列印电子邮件地址。在1996-1999年随着网络公司的兴起,博士学位才逐步受到重视。
1705557745
1705557746 [2] 利用C语言这种高级语言来编写操作系统是一种新的想法。最初,操作系统是在每一台新机器上用特殊的、低级的、难以阅读的、简单的“汇编语言”或“机器代码”从无到有、费尽心思写出来的。使用标准的C语言而非每台机器的特殊机器代码在新生产的计算机上编写操作系统时,仅仅需要在机器上运行C语言,然后就可以很快创造出一个UNIX版本的系统及所有工具。
1705557747
1705557748 [3] 配对交易是指寻找一对相似股票的价格价差变动在统计上显著的变动规律。如果你认为你找到了这种现象,就可以在价差扩大时卖出相对昂贵的股票,买人相对便宜的股票,然后在价差缩小时进行反向操作。自从塔泰格利业在摩根士丹利取得声名显赫但昙花一现的成功以来,交易公司、对冲基金和它们所雇用的科学家们就开始经常性地、满怀希望地试图建立由模型驱动的这种所谓“统计套利”的赚钱机器。
1705557749
1705557750 [4] 那时,我也开始参加各种各样的计算机科学研究讨论会和技术会议。在这些会议上,我总是惊讶于计算机科学研究和物理学研究的差异。在物理学中,学术研讨会上发言人全部是在讲所取得的成果,而在计算机科学中,发言人讲话的主要内容则是关于计算机系统的研究计划、新计算机语言的提纲以及还没有实施的设想。发表研究成果的门槛似乎是很低的。
1705557751
1705557752 [5] http://www.lucentssg.com/heqs.html.
1705557753
1705557754
1705557755
1705557756
1705557757 宽客人生:从物理学家到数量金融大师的传奇 [:1705556896]
1705557758 宽客人生:从物理学家到数量金融大师的传奇 第8章 休止时间
1705557759
[ 上一页 ]  [ :1.70555771e+09 ]  [ 下一页 ]