下书网

风险-收益分析:理性投资的理论与实践(第2卷)全文阅读

外国小说文学理论侦探推理惊悚悬疑传记回忆杂文随笔诗歌戏曲小故事
下书网 > 哲学心理 > 风险-收益分析:理性投资的理论与实践(第2卷)

IBM EAS-E的特性

书籍名:《风险-收益分析:理性投资的理论与实践(第2卷)》    作者:哈里·马科维茨
推荐阅读:风险-收益分析:理性投资的理论与实践(第2卷)txt下载 风险-收益分析:理性投资的理论与实践(第2卷)笔趣阁 风险-收益分析:理性投资的理论与实践(第2卷)顶点 风险-收益分析:理性投资的理论与实践(第2卷)快眼 风险-收益分析:理性投资的理论与实践(第2卷)sodu
上一章目录下一章
    《风险-收益分析:理性投资的理论与实践(第2卷)》IBM EAS-E的特性,页面无弹窗的全文阅读!



IBM EAS-E提供了一个非常宝贵的机会,来证明SIMSCRIPT M概念的可行性和合意性,以及获得实施的经验。这一经验在设计怎样实现SIMSCRIPT M时可能有重要价值。关于我们的实施方法,参见帕泽尔、马尔霍特拉和马科维茨(Pazel,Malhotra,and Markowitz,1983)的文章;进一步的信息,特别是关于排序集的实现,参见马尔霍特拉、马科维茨和帕泽尔(Malhotra,Markowitz,and Pazel,1983)的文章。帕泽尔等和马尔霍特拉等的文章对怎样实施的描述透彻而简明,这里没有必要对其做进一步的全面总结。本节仅简述一些旨在提高灵活性和性能的IBM EAS-E解决方案,以及对更深层可选方案的思考。

每一个IBM EAS-E数据库(包含了任意数目的实体类型,以及这些实体类型的属性和集合关系)都由自己的监管程序副本来监管。有了纽约州约克敦海茨的托马斯·约翰·沃森研究中心(T.J.Watson Research Center)正在使用的虚拟机操作系统(the VM operating system),用户(每一个都在各自的虚拟机上)可同时向其虚拟机中的监管程序传递他们的请求,包括最新的资料。IBM EAS-E不处理分布式数据库,但为分布式数据库或数据库之间的数据请求增加监管程序间通信功能,并非一个特别大的挑战。IBM EAS-E锁定了个别实体层面的信息(“READ-WRITE”或“READ-ONLY”),这与一些数据库系统在页或表的层面锁定信息相区别。后一种方法锁定了那些能够被其他用户安全使用的信息。与其他数据库系统一样,崩溃保护功能确保一旦电脑发生崩溃,程序对数据库所做的更改要么全部要么都不成为数据库的“正式内容”。例如,如果计算机的操作系统在执行

CREATE A JOB



FILE JOB IN QUEUE(MG)

期间崩溃,或是在所有有关更改都能被恰当记录之前崩溃,那么数据库就不会显示这些更改。这是通过在构建新的数据库状态描述时保留旧的数据库状态,然后用一个基本操作(即记录一个新的版本号)将正式版本从旧的切换到新的而实现的。这种“全部或都不”数据库更新也适用于程序开始执行后或程序最后一个RECORD命令执行后的更改。

监管程序能够识别“死锁”的情形。在这种情形中,用户1有实体A,需要B,而用户2已经有实体B,现在对实体A有相冲突的需要(如果至少有一个是WRITE请求,那么针对给定实体的两个锁定请求就是相互冲突的)。监管程序退出用户2的请求,用户2等待用户1完成并释放它所有的锁定。IBM EAS-E也提供备份功能,以防存储器出现物理损坏。

我现在认为,在READ-ONLY和READ-WRITE访问外,我们还应该提供一致副本访问。它将报告一个或多个数据库实体截至某个时点的状态,但不保证信息传输时该状态仍然是准确的。在准备直到某个时点的系统状态的汇总统计量时,这可能是有用的。为了解效率方面的考量是否会对这种形式的访问施加限制,需要弄清楚其实施的细节(最好是通过与一两个同事进行交流的方法)。

IBM EAS-E允许对一个或多个实体类型的EAS结构做出更改,而不要求立即将更改了EAS结构的实体类型的所有现存实体转换为新的格式。如果一个旧格式的个体被读入主存储器,那么它在主存储器中将被保存为“双重形式”,即新旧两种版本都得以体现,之后以新格式写回数据库中。尽管在主存储器中被保存为双重形式,执行程序可以将旧格式属性和新格式属性称作例如O.和N.。对于集合,情形是类似的。如果没有具体的修改,那么属性值和集合内容将以新格式重写并保持不变。将数据库实体从旧格式转换为新格式的例程,在被调用时(如在转换该类型所有现存实体的批处理运行中),或者在需要尚未转换格式之个体的例程遇到旧格式的实体时,就会被激活(invoked)。

IBM EAS-E设计的目的是有效处理大型排序集——比我们在一生的应用中所碰到的那些集合要大得多。这通过将足够大的集合划分为多个子集来实现。对于更大的集合,可以将子集进一步划分为任何层面的子集之子集。通过将这一结构存储为平衡树,可实现快速访问存储和检索(详细内容参见Malhotra等的文章)。尽管这一结构的目的在于快速存储和检索,但我们将会看到,该结构也能促进并行处理在非常大型的SIMSCRIPT M应用程序中的使用。在编译规定对满足某个“WITH”条件的集合所有元素采取行动的代码时,用户虚拟机中编译了的程序需要与监管程序相协调,以有效利用可用的排序集,而非机械地从一个可能的大型集中获取每一个元素来检验该条件。

CSS应用程序的用户,是IBM研究部使用研究部虚拟机系统的员工。当时还没有互联网。与用户同监管程序的交流相比,受信任的监管程序之间的交流并非特别大的挑战。接入互联网后,防范黑客攻击,无论是大规模的还是单独的攻击,成为巨大的挑战。不过,不管使用哪种编程语言,这一挑战总是存在的。



凤凰涅槃


直到第6层的SIMSCRIPTⅡ只短暂地作为IBM EAS-E而出现过,之后就不复存在了。5然而,会有人再次构建它,如果不在下一个10年,那么就在下下个或者再下一个10年,我对此保持乐观态度。基于两个原因,这在商业上是行得通的。首先,由于具备适于构建详尽的模拟程序和DSS的特性,直到第6层的SIMSCRIPTⅡ在竞争性软件市场上将是一个突破。特别地,我之前已经对比了基于EAS的DSS程序生成器和SAP,前者使用起来很容易,而后者的使用非常困难。其次,与IBM或微软公司的语言实现相比,直到第6层的SIMSCRIPTⅡ的构建,所耗费的工时微不足道。直到第5层的兰德公司版本耗费了一两个程序员外加一个手册编写者大约4年的时间。IBM的EAS-E版本,由于加上了第6层,耗费的工作量更多。如果大型的软件开发商忽视了它,那么仅仅启动工作就会使之成为他们的一项大工程。基于近期我与安娜·马里杨斯基在午餐会上的交谈,CACI公司可能自己承担第6层的开发任务。不过在写作本书时,这还不确定。要想经济地开发SIMSCRIPTⅡ,必须运用下一节简要介绍的SIMSCRIPTⅡ的语言编辑语言。



第7层


第7层的目的是使SIMSCRIPTⅡ的语言编写语言(language writing language,LWL)可为应用程序员使用,或许是为特定的库(类似于C语言的库)开发命令或数据类型。例如,使用矩阵代数库的程序,可能被允许有如下的涉及矩阵的算术或逻辑表达式:

IF AX>0

其中,A是一个矩阵,X是一个向量,0可根据上下文理解为0向量。

一般性地说到SIMSCRIPTⅡ的LWL,或许我的LWL解决方案——针对因我希望SIMSCRIPTⅡ所具备功能而产生的实现问题,借用了20世纪60年代初可用的计算机科学解决方案。但我的专业背景是运筹学(OR),而非计算机科学,并且那时我在兰德公司的经济学部工作,而不是在IBM研究院的计算机科学部工作(20年后我才在这里工作)。在1962年的时候,对我而言,解决我的实现问题,比起研究这些问题是否已经得到解决,要更为容易些。

为SIMSCRIPTⅡ构建编译器,要比为一种语言例如C语言构建编译器要求更高。这至少有两个原因:一个是由于SIMSCRIPTⅡ具有高阶命令,如COMPUTE、FIND、ACCUMULATE和TALLY命令。另一个则与语言设计的选择有关,这些选择涉及需要记住的易读性规则。

例如,C语言的关键字是保留字。特别地,C89有32个关键字,包括“auto”“break”“case”“char”“const”等。程序员不能将这些关键字用于其他任何目的,而只能用作关键字。因此,程序员必须记住不能将一个变量命名为“case”,或将一个函数命名为“float”或其他30个保留字。在SIMSCRIPT语言的情形中,这一点将会特别麻烦,因为该语言十分丰富。例如,SIMSCRIPTⅡ的报告生成工具包含了一个语句PAGE IS FIRST(虽非标准的英语,但它的含义应该是清楚的)。通用格式是包含如下形式的语句:

IS EMPTY or

IS NOT EMPTY.

因此,SIMSCRIPTⅡ程序员需要记住不将“page”,或许还有“is”“not”“empty”和许多其他的字用作变量、子例程、函数或存储单元的名称。不管怎样,SIMSCRIPTⅡ的确有大量的变量和函数名(例如TIME.V或N.)是程序员必须避开的。这很容易做到,因为所有这样的名称都是字母.名称或名称.字母的形式(或偶尔两种形式都有)。

便利编译器编写者的第二种规则,是在英语文本中不需要并且通常不会出现括号的地方,要求用到括号。这一规则并非SIMSCRIPTⅡ所必需的。例如,如下的声明:

IF y>0

在C语言中要求逻辑表达式有一个括号(y>0),而在SIMSCRIPTⅡ中括号则是可选的。

旨在减少编译器编写者而非程序员的麻烦,但对非程序员阅读程序确定没有任何益处的C语言声明的第三个例子如下:命令

X=5

指示计算机设定X等于5,而

X==5

则指示执行程序检查X是否等于5。在两种情形中,SIMSCRIPTⅡ都使用X=5,就像在书面英语中那样。从上下文中总是可以清楚地看出究竟是要赋值还是要进行检验。

在SIMSCRIPTⅡ中,赋值命令以一个关键字开始,如在

LET X=5

中这样。SIMSCRIPTⅡ.5也允许

X=5

以方便那些熟悉这样的赋值命令的程序员。SIMSCRIPTⅡ.5(运用SIMSCRIPTⅡLWL)识别这两种形式没有任何问题。

所有这种灵活性都使编译过程变慢。但即使到了1962年,建模成本依然高于编译成本太多,以至于是否值得为灵活性和清晰的优点花上更长的编译时间不成为一个问题(至少在我看来是如此)。

SIMSCRIPTⅡ是用SIMSCRIPTⅡ编写的。首先,该语言的基本“内核”需要用一种不同的语言SIMSCRIPT(Ⅰ)编写,但一旦这个内核在SIMSCRIPT(Ⅰ)中运行,内核本身以及该语言的其余部分,就可以用SIMSCRIPTⅡ进行编程和编译。

SIMSCRIPTⅡ编译器的很多方面都是数据驱动的。特别地,数据表包含了那些有待SIMSCRIPTⅡ编译器写出的“代码”。最初,使用的是针对特定电脑的汇编语言代码。现在,SIMSCRIPTⅡ.5和Ⅲ生成C语言代码,这有赖于针对特定机器的C编译器为该机器编写汇编语言。

马科维茨(1979)的文章中有SIMSCRIPTⅡ语言编辑语言的详细描述,本章注释6对其进行了简要总结。6



上一章目录下一章
推荐书籍:银行审慎监管 充分就业与价格稳定 宏观经济思想七学派 经济增长黄金律 为什么我也不是保守派:古典自由主义的典型看法 经济增长理论 衰老的真相:你不可不知的37个迷思 微行动:成长就是从做好每件小事开始 未来生活简史:科技如何塑造未来 销售的常识:回归销售的本质,重构你的销售思维