时间: MW 3:00-4:15
地点: 安德森霍尔309
向以下人员提问: 广场
教练: 诺曼·拉姆齐,Halligan哈利根222

快速参考:教学大纲、日历、照片、球探

此时,类的主要资源是教学大纲,两者都有HTML格式PDF格式。我会逐渐建立一个日历.

即将提供有关阅读的信息;为了避免破坏第一天的上课,我暂时不提。

侦察报告中的资源

Erlang资源:

案例研究资源

除了下面的策划阅读,有

诅咒阅读

设计

Andrew Appel,运行时系统,Lisp与符号计算, 1990.

通过做出一些简化的假设,Appel构建了一个相对简单、性能相对较好的运行时系统,并且可以支持像Standard ML这样雄心勃勃的语言

垃圾收集

亨利·利伯曼和卡尔·休伊特。1983基于对象生命周期的实时垃圾收集器.Commun公司。ACM公司26,6(1983年6月),419-429。http://dx.doi.org/10.1145/358141.358147

关于世代GC的早期论文。同样值得注意的是将堆划分为页面。收集是增量的。包含许多有趣的观察结果,但当一个旧对象指向一个新对象时,它会有一定程度的间接性。

大卫·恩加。1984生成清理:一种无中断的高性能存储回收算法.英寸首届ACM SIGSOFT/SIGPLAN实用软件开发环境软件工程研讨会论文集(SDE 1)美国纽约州纽约市ACM,157-167。http://dx.doi.org/10.1145/800020.808261

一种谨慎的内存管理性能方法。将内存管理成本降低了8倍,使Berkeley Smalltalk的总体运行速度提高了1.7倍。系统包括一个“旧对象区域”,其中对象终身制的因此从未回收。收集不是增量的,但暂停时间很短,但对于实时动画来说不够短。

安德鲁·W·。上诉。1989年(2月)。简单的代际垃圾收集和快速分配。软件实践与经验, 19(2):171–183.

构建自己的代际收藏家的“简单方法”。轻而易举地卖出。

检查堆栈

(即将推出。)

消息传递并发

书籍和论文

C.答。对。霍尔。1978年(8月)。通信顺序过程.ACM通信, 21(8):666–677.

最初的论文是关于使用通信原语而不是锁进行同步的。一旦你克服了基于Dijkstra的保护命令符号的符号,你就会发现这篇论文主要是示例。

关键构造是“替代命令”(如果语句),它使用通信原语作为“保护”。此构造使您能够根据准备进行的通信进行选择。它是模型的一个重要组成部分,但很难实现,因此基于霍尔的思想,它已经从许多图书馆中删除。

还有一个.

罗伯·派克。1989年4月。Newsqueak:一种与老鼠交流的语言技术报告143,AT&T贝尔实验室,计算科学部。

罗伯·派克。1990年7月。Newsqueak的实现.软件实践与经验, 20(7), 649-659.

Newsqueak是基于同步消息传递的并发编程语言的一个很好的解释器实现。

罗伯·派克。1989年(春季)。并发窗口系统.计算机系统,2(2):133-153。

使用同步消息传递实现窗口系统的一个很好的案例研究。这是基于事件循环的时代系统的巨大进步。

约翰H。Reppy公司。1988同步操作作为一级值.SIGPLAN注意事项(程序SIGPLAN’88程序语言设计与实现会议), 23(7):250–59.

约翰·H·。Reppy公司。1991年6月。CML:一种高阶并发语言.英寸ACM SIGPLAN’91编程语言设计和实现会议记录.

约翰·雷皮(John H.Reppy)。1999年,《ML并行编程》,剑桥大学出版社,英国剑桥。

John Reppy发明了同步通信的一个漂亮的泛化:调用“send”和“receive”事件,并允许程序员通过组合现有事件来创建新事件。通过支持同步通信来支持抽象和组合,Reppy使其成为编程语言的一流公民。

1998年的论文描述了这个想法。1991年的论文以高阶设置(ML)显示了这一点。1999年的这本书详细介绍了相关的编程技术。

设计说明

关于消息传递的一些大问题:

路易斯安那州

上下文中的Lua

Roberto Ierusalimschy,Luiz H。de Figueiredo和Waldemar Celes。1996年6月。Lua-an可扩展扩展语言.软件实践与经验, 26(6):635–652.

语言简介,以及几个示例应用程序。

Roberto Ierussalimschy,Luiz H。de Figueiredo和Waldemar Celes。2007年(6月)。Lua的演变.英寸第三届ACM SIGPLAN编程语言历史会议记录,第2-1至2-26页。

二十年后,一场回顾赛。除了详细介绍更多技术细节外,本文还指出了一些使Lua在其细分市场中变得重要和成功的因素。

罗伯托·伊鲁萨利姆西(Roberto Ierusalimschy)、路易斯·恩里克·德菲格雷多(Luiz Henrique de Figueiredo)和沃尔德马尔·塞莱斯(Waldemar Celes)。2005年Lua 5.0的实现.通用计算机科学杂志, 11(7):1159–1176.

本文并不是对实现的概述,而是侧重于Lua5.0的几个关键方面。从我们的角度来看,最有趣的部分可能是关于协同程序的部分。但是关于虚拟机的部分可能有助于提供一些上下文,以便理解实现。

Lua实现的详细信息

Ravi编程语言文档,Lua 5.3字节码参考.

包含Lua机器状态的漂亮图片,以及实现中使用的一些符号。有为调用执行的字节码示例。

Ravi编程语言文档,Lua分析和代码生成内部.

大部分超出了我们的范围。与字节码引用重叠,但也包含寄存器窗口的简短描述。

Kein-Hong Man,2006年。Lua 5.1虚拟机指令的无漏洞介绍.

对虚拟机指令集的更详细、更详细的描述,包括更多图片和示例。比我们想知道的要详细得多。

Lua Coroutines公司

Lua程序设计,第9章,Coroutines公司.

对协同程序的简短介绍。强调常见的使用模式。

Moura,A.L.D.和Ierusalimschy,R.,2009年。重新访问协同程序.美国计算机学会程序设计语言与系统汇刊(TOPLAS),第31(2)页,第6页。

对协同程序的设计空间进行彻底的学术研究。提倡将协同程序作为一种有用的并发控制机制进行复兴,并表明它们在表达能力上等同于一次性延续。本文主要包含早期的一篇论文“Lua中的Coroutines”,尽管早期的论文确实包含了对协同程序和其他语言中类似功能的简短调查。

其他协同程序

Wample,S.B.和Griswold,R.E.,1983年。图标中的共同表达.计算机杂志,26(1),第72-78页。

拉尔夫·格里斯沃尔德(Ralph E.Griswold)和玛姬·格里斯沃德(Madge T.Griswold.)。1996图标编程语言.第三版,第9章(共同表达)。

Coroutines是以表达为导向,而不是以语句为导向的语言。这是Lua的“非对称”协同程序的“对称”替代方案。如果不了解Icon的共同表达,你可能无法理解发电机它们非常值得理解-这是一个精心设计且有效的评估模型,尤其适用于搜索问题和字符串处理-但这对我们的课程来说有点离题。

未净化读数

有一个一团糟.