Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Producer: A tool for translating Smalltalk-80 to Objective-C
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
Garbage collection in an uncooperative environment
Software—Practice & Experience
TS: an optimizing compiler for smalltalk
OOPSLA '88 Conference proceedings on Object-oriented programming systems, languages and applications
A overview of modular smalltalk
OOPSLA '88 Conference proceedings on Object-oriented programming systems, languages and applications
Experiences creating a portable cedar
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
The portable common runtime approach to interoperability
SOSP '89 Proceedings of the twelfth ACM symposium on Operating systems principles
An efficient implementation of SELF a dynamically-typed object-oriented language based on prototypes
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
An accidental translator from Smalltalk to ANSI C
ACM SIGPLAN OOPS Messenger
POPL '81 Proceedings of the 8th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type declaration and inference system for smalltalk
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Efficient implementation of the smalltalk-80 system
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Generation Scavenging: A non-disruptive high performance storage reclamation algorithm
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Back to the future: the story of Squeak, a practical Smalltalk written in itself
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The Realities of Language Conversions
IEEE Software
Code migration through transformations: an experience report
CASCON '98 Proceedings of the 1998 conference of the Centre for Advanced Studies on Collaborative research
Automating Language Conversion: A Case Study
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Mining API mapping for language migration
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Code migration through transformations: an experience report
CASCON First Decade High Impact Papers
A framework for analyzing programs written in proprietary languages
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
Lexical statistical machine translation for language migration
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Hi-index | 0.00 |
Smalltalk-80 (hereafter referred to as Smalltalk), which is one of the most productive programming languages/ environments, is very well suited for prototyping of applications but it is less well suited for delivering applications because applications can neither run in isolation from the Smalltalk environment nor be combined with other programs written in other languages. One way to make Smalltalk suitable for delivering applications is to translate Smalltalk into a compiler language such as C. By translating Smalltalk code into portable and interoperable C code, it is possible to deliver a stand-alone version of Smalltalk applications, and to develop an application partly in Smalltalk and partly in C. However, there are some difficulties in translating Smalltalk code into such a C code. First, the execution model of Smalltalk, which creates activation records as objects, is very different from that of C, and second, Smalltalk and C have very different approaches to storage management. We have implemented SPiCE, a system for translating Smalltalk into C. Our approach to the translation is to create runtime replacement classes implementing the same functionality of Smalltalk classes that are inherently part of the Smalltalk execution model, and to provide semi-conservative real-time compacting garbage collection that works without language support. Our approach fills the gaps of the execution model and storage management in a safe and efficient manner, and enables the generation of portable and interoperable C code while preserving the semantics of Smalltalk. Currently, the performance of the generated C code is roughly the same as the original Smalltalk.