Properties and update semantics of consistent views
ACM Transactions on Database Systems (TODS)
Why no one uses functional languages
ACM SIGPLAN Notices
On the correct translation of update operations on relational views
ACM Transactions on Database Systems (TODS)
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Enforcing high-level protocols in low-level software
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
The C++ Programming Language
On propagation of deletions and annotations through views
Proceedings of the twenty-first ACM SIGMOD-SIGACT-SIGART symposium on Principles of database systems
The Definition of Standard ML
Smalltalk-80: The Language
ATEC '02 Proceedings of the General Track of the annual conference on USENIX Annual Technical Conference
Languages, Levels, Libraries, and Longevity
Queue - Programming Languages
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
CCured: type-safe retrofitting of legacy software
ACM Transactions on Programming Languages and Systems (TOPLAS)
ASTEC: a new approach to refactoring C
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Thirty years is long enough: getting beyond C
HOTOS'05 Proceedings of the 10th conference on Hot Topics in Operating Systems - Volume 10
DBPL'05 Proceedings of the 10th international conference on Database Programming Languages
Exploiting schemas in data synchronization
DBPL'05 Proceedings of the 10th international conference on Database Programming Languages
Boomerang: resourceful lenses for string data
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Three complementary approaches to bidirectional programming
SSGIP'10 Proceedings of the 2010 international spring school conference on Generic and Indexed Programming
Hi-index | 0.00 |
We propose multi-language synchronization, a novel approach to the problem of migrating code from a legacy language (such as C) to a new language. We maintain two parallel versions of every source file, one in the legacy language, and one in the new language. Both of these files are fully editable, and the two files are kept automatically in sync so that they have the same semantic meaning and, where possible, have the same comments and layout. We propose non-deterministic language translation as a means to implement multi-language synchronization. If a file is modified in language A, we produce a new version in language B by translating the file into a non-deterministic description of many ways that it could be encoded in language B and then choosing the version that is closest to the old file in language B. To demonstrate the feasibility of this approach, we have implemented a translator that can synchronize files written in a straw-man language, Jekyll, with files written in C. Jekyll is a high level functional programming language that has many of the features found in modern programming languages.