首页 > 最新文献

International Workshop on Smalltalk Technologies最新文献

英文 中文
On the integration of Smalltalk and Java: practical experience with STX:LIBJAVA 关于Smalltalk和Java的集成:STX:LIBJAVA的实践经验
Pub Date : 2012-08-28 DOI: 10.1145/2448963.2448968
Marcel Hlopko, Jan Kurs, J. Vraný, Claus Gittinger
After decades of development in programming languages and programming environments, Smalltalk is still one of few environments that provide advanced features and is still widely used in the industry. However, as Java became prevalent, the ability to call Java code from Smalltalk and vice versa becomes important. Traditional approaches to integrate the Java and Smalltalk languages are through low-level communication between separate Java and Smalltalk virtual machines. We are not aware of any attempt to execute and integrate the Java language directly in the Smalltalk environment. A direct integration allows for very tight and almost seamless integration of the languages and their objects within a single environment. Yet integration and language interoperability impose challenging issues related to method naming conventions, method overloading, exception handling and thread-locking mechanisms. In this paper we describe ways to overcome these challenges and to integrate Java into the Smalltalk environment. Using techniques described in this paper, the programmer can call Java code from Smalltalk using standard Smalltalk idioms while the semantics of each language remains preserved. We present STX:LIBJAVA --- an implementation of Java virtual machine within Smalltalk/X --- as a validation of our approach.
经过几十年的编程语言和编程环境的发展,Smalltalk仍然是为数不多的提供高级特性的环境之一,并且仍然在业界广泛使用。然而,随着Java的普及,从Smalltalk调用Java代码的能力变得非常重要。集成Java和Smalltalk语言的传统方法是通过单独的Java和Smalltalk虚拟机之间的低级通信。我们没有注意到任何在Smalltalk环境中直接执行和集成Java语言的尝试。直接集成允许在单个环境中非常紧密且几乎无缝地集成语言及其对象。然而,集成和语言互操作性带来了与方法命名约定、方法重载、异常处理和线程锁定机制相关的挑战性问题。在本文中,我们描述了克服这些挑战并将Java集成到Smalltalk环境中的方法。使用本文中描述的技术,程序员可以使用标准的Smalltalk习惯用法从Smalltalk调用Java代码,同时保留每种语言的语义。我们提出STX:LIBJAVA——Smalltalk/X中Java虚拟机的实现——作为对我们方法的验证。
{"title":"On the integration of Smalltalk and Java: practical experience with STX:LIBJAVA","authors":"Marcel Hlopko, Jan Kurs, J. Vraný, Claus Gittinger","doi":"10.1145/2448963.2448968","DOIUrl":"https://doi.org/10.1145/2448963.2448968","url":null,"abstract":"After decades of development in programming languages and programming environments, Smalltalk is still one of few environments that provide advanced features and is still widely used in the industry. However, as Java became prevalent, the ability to call Java code from Smalltalk and vice versa becomes important. Traditional approaches to integrate the Java and Smalltalk languages are through low-level communication between separate Java and Smalltalk virtual machines. We are not aware of any attempt to execute and integrate the Java language directly in the Smalltalk environment. A direct integration allows for very tight and almost seamless integration of the languages and their objects within a single environment. Yet integration and language interoperability impose challenging issues related to method naming conventions, method overloading, exception handling and thread-locking mechanisms.\u0000 In this paper we describe ways to overcome these challenges and to integrate Java into the Smalltalk environment. Using techniques described in this paper, the programmer can call Java code from Smalltalk using standard Smalltalk idioms while the semantics of each language remains preserved. We present STX:LIBJAVA --- an implementation of Java virtual machine within Smalltalk/X --- as a validation of our approach.","PeriodicalId":393791,"journal":{"name":"International Workshop on Smalltalk Technologies","volume":"55 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-08-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129306836","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 4
Refactoring support for Smalltalk using static type inference 使用静态类型推断重构Smalltalk支持
Pub Date : 2012-08-28 DOI: 10.1145/2448963.2448964
Martin Unterholzner
Refactoring is a crucial activity in agile software development. As a consequence, automated tools are expected to support refactoring, both for reducing the developer's effort as well as for avoiding errors due to manual changes. In this context, the chosen programming language has a major impact on the level of support that an automated refactoring tool can offer. One important aspect of a programming language concerning the automation of refactoring is the type system. While a static type system, present in languages such as Java, provides information about dependencies in the program, the dynamic type system of the Smalltalk programming language offers little information that can be used by automated refactoring tools. This paper focuses on the challenges in the context of refactoring raised by the dynamic type system of Smalltalk. It highlights the problems caused by the absence of static type information and proposes the use of static code analysis for performing type inference to gather information about the dependencies in the program's source code. It explains the mechanism of the static code analysis using sample code and presents a prototype of an enhanced refactoring tool, which uses the structural information extracted through static code analysis. Empirical samples build the base for evaluating the effectiveness of the approach.
重构是敏捷软件开发中的一项关键活动。因此,自动化工具被期望支持重构,既可以减少开发人员的工作量,又可以避免由于手动更改而导致的错误。在这种情况下,所选择的编程语言对自动化重构工具所能提供的支持级别有很大的影响。编程语言关于重构自动化的一个重要方面是类型系统。Java等语言中的静态类型系统提供了有关程序中依赖关系的信息,而Smalltalk编程语言的动态类型系统提供的信息很少,无法被自动化重构工具使用。本文主要关注Smalltalk的动态类型系统在重构环境中所带来的挑战。它强调了由于缺乏静态类型信息而导致的问题,并建议使用静态代码分析来执行类型推断,以收集有关程序源代码中依赖项的信息。通过示例代码解释了静态代码分析的机制,并给出了一个增强重构工具的原型,该工具利用静态代码分析提取的结构信息。实证样本为评估该方法的有效性奠定了基础。
{"title":"Refactoring support for Smalltalk using static type inference","authors":"Martin Unterholzner","doi":"10.1145/2448963.2448964","DOIUrl":"https://doi.org/10.1145/2448963.2448964","url":null,"abstract":"Refactoring is a crucial activity in agile software development. As a consequence, automated tools are expected to support refactoring, both for reducing the developer's effort as well as for avoiding errors due to manual changes. In this context, the chosen programming language has a major impact on the level of support that an automated refactoring tool can offer. One important aspect of a programming language concerning the automation of refactoring is the type system. While a static type system, present in languages such as Java, provides information about dependencies in the program, the dynamic type system of the Smalltalk programming language offers little information that can be used by automated refactoring tools.\u0000 This paper focuses on the challenges in the context of refactoring raised by the dynamic type system of Smalltalk. It highlights the problems caused by the absence of static type information and proposes the use of static code analysis for performing type inference to gather information about the dependencies in the program's source code. It explains the mechanism of the static code analysis using sample code and presents a prototype of an enhanced refactoring tool, which uses the structural information extracted through static code analysis. Empirical samples build the base for evaluating the effectiveness of the approach.","PeriodicalId":393791,"journal":{"name":"International Workshop on Smalltalk Technologies","volume":"90 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-08-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134344498","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Tracking down software changes responsible for performance loss 跟踪导致性能损失的软件更改
Pub Date : 2012-08-28 DOI: 10.1145/2448963.2448966
Juan Pablo Sandoval Alcocer
Continuous software change may inadvertently introduce a drop in performance at runtime. The longer the performance loss remains undiscovered, the harder it is to address. Current profilers do not efficiently support performance comparison across multiple software versions. As a consequence, identifying the cause of a slow execution caused by a software change is often carried out in an ad-hoc fashion. We propose multidimensional profiling as a way to repeatedly profile a software execution by varying some variables of the execution context. Having explicit execution variation points is key to understanding precisely how a performance aspect evolves along with the version history of the software. We present the key ingredients to make multidimensional profiling effective, and sketch the design of Rizel, an implementation in the Pharo programming language.
持续的软件更改可能会无意中导致运行时性能的下降。性能损失未被发现的时间越长,就越难解决。当前的分析器不能有效地支持跨多个软件版本的性能比较。因此,识别由软件更改引起的缓慢执行的原因通常是以一种特别的方式进行的。我们提出多维分析作为一种通过改变执行上下文的一些变量来重复分析软件执行的方法。具有显式的执行变化点是准确理解性能方面如何随着软件的版本历史而演变的关键。我们提出了使多维分析有效的关键因素,并概述了Rizel的设计,这是一个在Pharo编程语言中的实现。
{"title":"Tracking down software changes responsible for performance loss","authors":"Juan Pablo Sandoval Alcocer","doi":"10.1145/2448963.2448966","DOIUrl":"https://doi.org/10.1145/2448963.2448966","url":null,"abstract":"Continuous software change may inadvertently introduce a drop in performance at runtime. The longer the performance loss remains undiscovered, the harder it is to address. Current profilers do not efficiently support performance comparison across multiple software versions. As a consequence, identifying the cause of a slow execution caused by a software change is often carried out in an ad-hoc fashion.\u0000 We propose multidimensional profiling as a way to repeatedly profile a software execution by varying some variables of the execution context. Having explicit execution variation points is key to understanding precisely how a performance aspect evolves along with the version history of the software. We present the key ingredients to make multidimensional profiling effective, and sketch the design of Rizel, an implementation in the Pharo programming language.","PeriodicalId":393791,"journal":{"name":"International Workshop on Smalltalk Technologies","volume":"15 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-08-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131050319","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 5
Spec: a framework for the specification and reuse of UIs and their models 规范:用于规范和重用ui及其模型的框架
Pub Date : 2012-08-28 DOI: 10.1145/2448963.2448965
Benjamin Van Ryseghem, Stéphane Ducasse, J. Fabry
Implementing UIs is often a tedious task. To address this, UI Builders have been proposed to support the description of widgets, their location, and their logic. A missing aspect of UI Builders is however the ability to reuse and compose widget logic. In our experience, this leads to a significant amount of duplication in UI code. To address this issue, we built Spec: a UIBuilder for Pharo with a focus on reuse. With Spec, widget properties are defined declaratively and attached to specific classes known as composable classes. A composable class defines its own widget description as well as the model-widget bridge and widget interaction logic. This paper presents Spec, showing how it enables seamless reuse of widgets and how these can be customized. After presenting Spec and its implementation, we discuss how its use in Pharo 2.0 has cut in half the amount of lines of code of six of its tools, mostly through reuse. This shows that Spec meets its goals of allowing reuse and composition of widget logic.
实现ui通常是一项乏味的任务。为了解决这个问题,UI构建器被提议用来支持小部件的描述、它们的位置和逻辑。然而,UI builder缺少的一个方面是重用和组合小部件逻辑的能力。根据我们的经验,这会导致大量的UI代码重复。为了解决这个问题,我们为Pharo构建了Spec:一个专注于重用的UIBuilder。使用Spec,小部件属性是声明式定义的,并附加到称为可组合类的特定类。可组合类定义自己的小部件描述以及模型-小部件桥接和小部件交互逻辑。本文介绍了Spec,展示了它如何实现小部件的无缝重用以及如何定制这些小部件。在介绍了Spec及其实现之后,我们将讨论它在Pharo 2.0中的使用是如何将其中六个工具的代码行数减少一半的,主要是通过重用。这表明Spec满足了允许重用和组合小部件逻辑的目标。
{"title":"Spec: a framework for the specification and reuse of UIs and their models","authors":"Benjamin Van Ryseghem, Stéphane Ducasse, J. Fabry","doi":"10.1145/2448963.2448965","DOIUrl":"https://doi.org/10.1145/2448963.2448965","url":null,"abstract":"Implementing UIs is often a tedious task. To address this, UI Builders have been proposed to support the description of widgets, their location, and their logic. A missing aspect of UI Builders is however the ability to reuse and compose widget logic. In our experience, this leads to a significant amount of duplication in UI code. To address this issue, we built Spec: a UIBuilder for Pharo with a focus on reuse. With Spec, widget properties are defined declaratively and attached to specific classes known as composable classes. A composable class defines its own widget description as well as the model-widget bridge and widget interaction logic. This paper presents Spec, showing how it enables seamless reuse of widgets and how these can be customized. After presenting Spec and its implementation, we discuss how its use in Pharo 2.0 has cut in half the amount of lines of code of six of its tools, mostly through reuse. This shows that Spec meets its goals of allowing reuse and composition of widget logic.","PeriodicalId":393791,"journal":{"name":"International Workshop on Smalltalk Technologies","volume":"73 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-08-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127395918","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 7
Challenges to support automated random testing for dynamically typed languages 支持动态类型语言的自动随机测试的挑战
Pub Date : 2011-08-23 DOI: 10.1145/2166929.2166938
Stéphane Ducasse, M. Oriol, Alexandre Bergel
Automated random testing is a proven way to identify bugs and precondition violations, and this even in well tested libraries. In the context of statically typed languages, current automated random testing tools heavily take advantage of static method declaration (argument types, thrown exceptions) to constrain input domains while testing and to identify errors. For such reason, automated random testing has not been investigated in the context of dynamically typed languages. In this paper we present the key challenges that have to be addressed to support automated testing in dynamic languages.
自动随机测试是一种被证明可以识别错误和前提条件违反的方法,即使在经过良好测试的库中也是如此。在静态类型语言的上下文中,当前的自动化随机测试工具大量利用静态方法声明(参数类型、抛出异常)来约束测试时的输入域并识别错误。由于这样的原因,在动态类型语言的上下文中还没有研究自动随机测试。在本文中,我们提出了在动态语言中支持自动化测试必须解决的关键挑战。
{"title":"Challenges to support automated random testing for dynamically typed languages","authors":"Stéphane Ducasse, M. Oriol, Alexandre Bergel","doi":"10.1145/2166929.2166938","DOIUrl":"https://doi.org/10.1145/2166929.2166938","url":null,"abstract":"Automated random testing is a proven way to identify bugs and precondition violations, and this even in well tested libraries. In the context of statically typed languages, current automated random testing tools heavily take advantage of static method declaration (argument types, thrown exceptions) to constrain input domains while testing and to identify errors. For such reason, automated random testing has not been investigated in the context of dynamically typed languages. In this paper we present the key challenges that have to be addressed to support automated testing in dynamic languages.","PeriodicalId":393791,"journal":{"name":"International Workshop on Smalltalk Technologies","volume":"27 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-08-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114214827","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 8
Memoization aspects: a case study 记忆方面:一个案例研究
Pub Date : 2011-08-23 DOI: 10.1145/2166929.2166935
S. Vidal, C. Marcos, Alexandre Bergel, G. Arévalo
Mondrian, an open-source visualization engine, uses a number of caches to avoid redundant computation. These caches are structured along Mondrian purpose: generating static two-dimensional visualizations. We have noticed that the caches are meaningless for the evolution being made on Mondrian. Using aspect-oriented programming, we have refactored these caches into well defined aspects to address the evolution problem. We have achieved it without paying the price of runtime problems.
Mondrian是一个开源的可视化引擎,它使用了大量的缓存来避免冗余计算。这些缓存是按照蒙德里安的目的构建的:生成静态的二维可视化。我们已经注意到,这些藏物对于蒙德里安的进化是毫无意义的。使用面向方面的编程,我们将这些缓存重构为定义良好的方面,以解决演进问题。我们在没有付出运行时问题代价的情况下实现了这一目标。
{"title":"Memoization aspects: a case study","authors":"S. Vidal, C. Marcos, Alexandre Bergel, G. Arévalo","doi":"10.1145/2166929.2166935","DOIUrl":"https://doi.org/10.1145/2166929.2166935","url":null,"abstract":"Mondrian, an open-source visualization engine, uses a number of caches to avoid redundant computation. These caches are structured along Mondrian purpose: generating static two-dimensional visualizations. We have noticed that the caches are meaningless for the evolution being made on Mondrian. Using aspect-oriented programming, we have refactored these caches into well defined aspects to address the evolution problem. We have achieved it without paying the price of runtime problems.","PeriodicalId":393791,"journal":{"name":"International Workshop on Smalltalk Technologies","volume":"14 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-08-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133553044","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
MDE-based FPGA physical design: fast model-driven prototyping with Smalltalk 基于mde的FPGA物理设计:使用Smalltalk进行快速模型驱动原型设计
Pub Date : 2011-08-23 DOI: 10.1145/2166929.2166936
C. Teodorov, Loïc Lagadec
The integrated circuit industry continues to progress rapidly deepening the gap in between the technological breakthroughs and the electronic design automation industry. This gap is even more problematic in the context of physical design, the last automation level between applications and the technology. The challenges of meeting the physical and performance constraints necessitate innovation at the algorithmic level, and at the methodological level. This study presents a methodological approach to physical design automation relying on model-driven engineering. Relying on the flexibility, and adaptability of the Smalltalk environment we propose an agile framework enabling fast physical design tool-flow prototyping. We illustrate our approach by using the Madeo FPGA toolkit as a legacy codebase that is incrementally changed to adopt this model-driven development strategy. Some pragmatic achievements are presented to illustrate the principal axes of this approach: algorithmic improvements through plug-and-play routines, domain-model extension for emerging technologies, as well as model evolution toward a meta-described environment.
集成电路产业持续快速发展,技术突破与电子设计自动化产业之间的差距不断加深。在物理设计的背景下,这种差距甚至更成问题,这是应用程序和技术之间的最后一个自动化级别。满足物理和性能限制的挑战需要在算法层面和方法层面进行创新。本研究提出了一种基于模型驱动工程的物理设计自动化方法。基于Smalltalk环境的灵活性和适应性,我们提出了一个敏捷框架,可以实现快速的物理设计工具流原型。我们通过使用Madeo FPGA工具包作为遗留代码库来说明我们的方法,该代码库是增量更改的,以采用这种模型驱动的开发策略。一些实用的成果被提出来说明这个方法的主轴:通过即插即用例程的算法改进,新兴技术的领域模型扩展,以及向元描述环境的模型进化。
{"title":"MDE-based FPGA physical design: fast model-driven prototyping with Smalltalk","authors":"C. Teodorov, Loïc Lagadec","doi":"10.1145/2166929.2166936","DOIUrl":"https://doi.org/10.1145/2166929.2166936","url":null,"abstract":"The integrated circuit industry continues to progress rapidly deepening the gap in between the technological breakthroughs and the electronic design automation industry. This gap is even more problematic in the context of physical design, the last automation level between applications and the technology. The challenges of meeting the physical and performance constraints necessitate innovation at the algorithmic level, and at the methodological level.\u0000 This study presents a methodological approach to physical design automation relying on model-driven engineering. Relying on the flexibility, and adaptability of the Smalltalk environment we propose an agile framework enabling fast physical design tool-flow prototyping. We illustrate our approach by using the Madeo FPGA toolkit as a legacy codebase that is incrementally changed to adopt this model-driven development strategy.\u0000 Some pragmatic achievements are presented to illustrate the principal axes of this approach: algorithmic improvements through plug-and-play routines, domain-model extension for emerging technologies, as well as model evolution toward a meta-described environment.","PeriodicalId":393791,"journal":{"name":"International Workshop on Smalltalk Technologies","volume":"524 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-08-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130603577","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Using first-class contexts to realize dynamic software updates 使用一级上下文实现动态软件更新
Pub Date : 2011-08-23 DOI: 10.1145/2166929.2166931
Erwann Wernli, David Gurtner, Oscar Nierstrasz
Applications that need to be updated but cannot be easily restarted must be updated at run-time. We evaluate the reflective facilities of Smalltalk with respect to dynamic software and the state-of-the-art in this field. We conclude that while fine for debugging, the existing reflective facilities are not appropriate for dynamically updating production systems under constant load. We propose to enable dynamic updates by introducing first-class contexts as a mechanism to allow multiple versions of objects to coexist. Object states can be dynamically migrated from one context to another, and can be kept in sync with the help of bidirectional transformations. We demonstrate our approach with ActiveContext, an extension of Smalltalk with first-class contexts. ActiveContext eliminates the need for a system to be quiescent for it to be updated. ActiveContext is realized in Pinocchio, an experimental Smalltalk implementation that fully reifies the VM to enable radical extensions. We illustrate dynamic updates in ActiveContext with a typical use case, present initial benchmarks, and discuss future performance improvements.
需要更新但不容易重新启动的应用程序必须在运行时更新。我们根据动态软件和该领域的最新技术来评估Smalltalk的反射功能。我们得出的结论是,虽然对于调试来说很好,但现有的反射工具不适合在恒定负载下动态更新生产系统。我们建议通过引入一级上下文作为允许多个版本对象共存的机制来实现动态更新。对象状态可以动态地从一个上下文迁移到另一个上下文,并且可以在双向转换的帮助下保持同步。我们用ActiveContext来演示我们的方法,ActiveContext是Smalltalk的扩展,带有一等上下文。ActiveContext消除了系统在更新时处于静止状态的需要。ActiveContext是在Pinocchio中实现的,这是一个实验性的Smalltalk实现,它完全实现了VM以支持激进扩展。我们用一个典型的用例说明ActiveContext中的动态更新,给出最初的基准测试,并讨论未来的性能改进。
{"title":"Using first-class contexts to realize dynamic software updates","authors":"Erwann Wernli, David Gurtner, Oscar Nierstrasz","doi":"10.1145/2166929.2166931","DOIUrl":"https://doi.org/10.1145/2166929.2166931","url":null,"abstract":"Applications that need to be updated but cannot be easily restarted must be updated at run-time. We evaluate the reflective facilities of Smalltalk with respect to dynamic software and the state-of-the-art in this field. We conclude that while fine for debugging, the existing reflective facilities are not appropriate for dynamically updating production systems under constant load. We propose to enable dynamic updates by introducing first-class contexts as a mechanism to allow multiple versions of objects to coexist. Object states can be dynamically migrated from one context to another, and can be kept in sync with the help of bidirectional transformations. We demonstrate our approach with ActiveContext, an extension of Smalltalk with first-class contexts. ActiveContext eliminates the need for a system to be quiescent for it to be updated. ActiveContext is realized in Pinocchio, an experimental Smalltalk implementation that fully reifies the VM to enable radical extensions. We illustrate dynamic updates in ActiveContext with a typical use case, present initial benchmarks, and discuss future performance improvements.","PeriodicalId":393791,"journal":{"name":"International Workshop on Smalltalk Technologies","volume":"36 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-08-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132093309","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 7
A Smalltalk implementation of Exil, a component-based programming language Exil的Smalltalk实现,Exil是一种基于组件的编程语言
Pub Date : 2011-08-23 DOI: 10.1145/2166929.2166932
P. Spacek, C. Dony, Chouki Tibermacine, L. Fabresse
The component-based development paradigm brings various solutions for software reusability and better modular structure of applications. When applied in programming language context it changes the way dependencies and connections between software pieces are expressed. In this paper we present the Smalltalk implementation of "Exil", a component-based architecture description and programming language that makes it possible to use component related concepts (ports, interfaces, services,...) at design and if wished at programming time. This proposal enables Smalltalk users to develop their applications in the component-oriented style.
基于组件的开发范式为软件的可重用性和更好的应用程序模块化结构提供了多种解决方案。当应用于编程语言环境时,它改变了软件块之间的依赖关系和连接的表达方式。在本文中,我们介绍了“Exil”的Smalltalk实现,Exil是一种基于组件的体系结构描述和编程语言,可以在设计时使用与组件相关的概念(端口、接口、服务等),也可以在编程时使用。这个建议使Smalltalk用户能够以面向组件的风格开发他们的应用程序。
{"title":"A Smalltalk implementation of Exil, a component-based programming language","authors":"P. Spacek, C. Dony, Chouki Tibermacine, L. Fabresse","doi":"10.1145/2166929.2166932","DOIUrl":"https://doi.org/10.1145/2166929.2166932","url":null,"abstract":"The component-based development paradigm brings various solutions for software reusability and better modular structure of applications. When applied in programming language context it changes the way dependencies and connections between software pieces are expressed. In this paper we present the Smalltalk implementation of \"Exil\", a component-based architecture description and programming language that makes it possible to use component related concepts (ports, interfaces, services,...) at design and if wished at programming time. This proposal enables Smalltalk users to develop their applications in the component-oriented style.","PeriodicalId":393791,"journal":{"name":"International Workshop on Smalltalk Technologies","volume":"90 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-08-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128602670","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
A programming environment supporting a prototype-based introduction to OOP 一种支持基于原型的OOP引入的编程环境
Pub Date : 2011-08-23 DOI: 10.1145/2166929.2166934
Carla F. Griggio, Germán Leiva, G. Polito, Gisela Decuzzi, Nicolás Passerini
This paper describes the features that a programming environment should have in order to help learning the object-oriented programming (OOP) paradigm and let students get the skills needed to build software using objects very quickly. This proposal is centered on providing graphical tools to help understand the concepts of the paradigm and let students create objects before they are presented the class concept [14]. The object, message and reference concepts are considered of primary importance during the teaching process, allowing quick acquisition of both theory and practice of concepts such as delegation, polymorphism and composition [7]. Additionally, a current implementation of the proposed software and the experience gained so far using it for teaching at universities and work trainings. Finally, we describe possible extensions to the proposed software that are currently under study.
本文描述了编程环境应该具备的功能,以帮助学习面向对象编程(OOP)范式,并让学生获得使用对象快速构建软件所需的技能。该建议的核心是提供图形工具来帮助理解范式的概念,并让学生在展示类概念[14]之前创建对象。在教学过程中,对象、消息和参考概念被认为是最重要的,允许快速获得理论和实践概念,如委托、多态性和组合[7]。此外,建议的软件的当前实施情况以及迄今为止在大学教学和工作培训中使用它所获得的经验。最后,我们描述了目前正在研究的拟议软件的可能扩展。
{"title":"A programming environment supporting a prototype-based introduction to OOP","authors":"Carla F. Griggio, Germán Leiva, G. Polito, Gisela Decuzzi, Nicolás Passerini","doi":"10.1145/2166929.2166934","DOIUrl":"https://doi.org/10.1145/2166929.2166934","url":null,"abstract":"This paper describes the features that a programming environment should have in order to help learning the object-oriented programming (OOP) paradigm and let students get the skills needed to build software using objects very quickly. This proposal is centered on providing graphical tools to help understand the concepts of the paradigm and let students create objects before they are presented the class concept [14]. The object, message and reference concepts are considered of primary importance during the teaching process, allowing quick acquisition of both theory and practice of concepts such as delegation, polymorphism and composition [7]. Additionally, a current implementation of the proposed software and the experience gained so far using it for teaching at universities and work trainings. Finally, we describe possible extensions to the proposed software that are currently under study.","PeriodicalId":393791,"journal":{"name":"International Workshop on Smalltalk Technologies","volume":"48 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-08-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115828115","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 4
期刊
International Workshop on Smalltalk Technologies
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1