2,090 research outputs found
Database independent Migration of Objects into an Object-Relational Database
This paper reports on the CERN-based WISDOM project which is studying the
serialisation and deserialisation of data to/from an object database
(objectivity) and ORACLE 9i.Comment: 26 pages, 18 figures; CMS CERN Conference Report cr02_01
C to O-O Translation: Beyond the Easy Stuff
Can we reuse some of the huge code-base developed in C to take advantage of
modern programming language features such as type safety, object-orientation,
and contracts? This paper presents a source-to-source translation of C code
into Eiffel, a modern object-oriented programming language, and the supporting
tool C2Eif. The translation is completely automatic and supports the entire C
language (ANSI, as well as many GNU C Compiler extensions, through CIL) as used
in practice, including its usage of native system libraries and inlined
assembly code. Our experiments show that C2Eif can handle C applications and
libraries of significant size (such as vim and libgsl), as well as challenging
benchmarks such as the GCC torture tests. The produced Eiffel code is
functionally equivalent to the original C code, and takes advantage of some of
Eiffel's object-oriented features to produce safe and easy-to-debug
translations
Portability of Prolog programs: theory and case-studies
(Non-)portability of Prolog programs is widely considered as an important
factor in the lack of acceptance of the language. Since 1995, the core of the
language is covered by the ISO standard 13211-1. Since 2007, YAP and SWI-Prolog
have established a basic compatibility framework. This article describes and
evaluates this framework. The aim of the framework is running the same code on
both systems rather than migrating an application. We show that today, the
portability within the family of Edinburgh/Quintus derived Prolog
implementations is good enough to allow for maintaining portable real-world
applications.Comment: Online proceedings of the Joint Workshop on Implementation of
Constraint Logic Programming Systems and Logic-based Methods in Programming
Environments (CICLOPS-WLPE 2010), Edinburgh, Scotland, U.K., July 15, 201
Abmash: Mashing Up Legacy Web Applications by Automated Imitation of Human Actions
Many business web-based applications do not offer applications programming
interfaces (APIs) to enable other applications to access their data and
functions in a programmatic manner. This makes their composition difficult (for
instance to synchronize data between two applications). To address this
challenge, this paper presents Abmash, an approach to facilitate the
integration of such legacy web applications by automatically imitating human
interactions with them. By automatically interacting with the graphical user
interface (GUI) of web applications, the system supports all forms of
integrations including bi-directional interactions and is able to interact with
AJAX-based applications. Furthermore, the integration programs are easy to
write since they deal with end-user, visual user-interface elements. The
integration code is simple enough to be called a "mashup".Comment: Software: Practice and Experience (2013)
Lost in Translation: A Study of Bugs Introduced by Large Language Models while Translating Code
Code translation aims to convert source code from one programming language
(PL) to another. Given the promising abilities of large language models (LLMs)
in code synthesis, researchers are exploring their potential to automate code
translation. The prerequisite for advancing the state of LLM-based code
translation is to understand their promises and limitations over existing
techniques. To that end, we present a large-scale empirical study to
investigate the ability of general LLMs and code LLMs for code translation
across pairs of different languages, including C, C++, Go, Java, and Python.
Our study, which involves the translation of 1,700 code samples from three
benchmarks and two real-world projects, reveals that LLMs are yet to be
reliably used to automate code translation -- with correct translations ranging
from 2.1% to 47.3% for the studied LLMs. Further manual investigation of
unsuccessful translations identifies 15 categories of translation bugs. We also
compare LLM-based code translation with traditional non-LLM-based approaches.
Our analysis shows that these two classes of techniques have their own
strengths and weaknesses. Finally, insights from our study suggest that
providing more context to LLMs during translation can help them produce better
results. To that end, we propose a prompt-crafting approach based on the
symptoms of erroneous translations; this improves the performance of LLM-based
code translation by 5.5% on average. Our study is the first of its kind, in
terms of scale and breadth, that provides insights into the current limitations
of LLMs in code translation and opportunities for improving them. Our dataset
-- consisting of 1,700 code samples in five PLs with 10K+ tests, 43K+
translated code, 1,748 manually labeled bugs, and 1,365 bug-fix pairs -- can
help drive research in this area.Comment: Published in ICSE 202
A Toolkit for ADM-based Migration: Moving from PHP Code to KDM Model in the Context of CMS-based Web Applications
In the last few years, many organizations have based their Web applications on Content Management Systems (CMS) because of the advantages they provide to manage their huge amount of digital content. The objectives of these organizations change, for this reason they may see the necessity of migrating their CMS-based Web applications to other CMS platforms meeting better their needs. Thus, we propose a method based on Architecture-Driven Modernization (ADM) to automate this migration process. In this paper we present the toolkit supporting this ADM-based migration method. For space restrictions, we focus on the implementation of two modules of this ADM-based toolkit: i) the ASTM_PHP DSL, a modeling language which allows to model the code of a system implemented in PHP (ASTM_PHP models) and ii) the model-to-model transformation rules which allow to generate KDM models from the information captured in the ASTM_PHP models. To show its usability, we present a case study where a widget listing online users of a CMS-based Web application is migrated from Drupal to Wordpress
Lock-free atom garbage collection for multithreaded Prolog
The runtime system of dynamic languages such as Prolog or Lisp and their
derivatives contain a symbol table, in Prolog often called the atom table. A
simple dynamically resizing hash-table used to be an adequate way to implement
this table. As Prolog becomes fashionable for 24x7 server processes we need to
deal with atom garbage collection and concurrent access to the atom table.
Classical lock-based implementations to ensure consistency of the atom table
scale poorly and a stop-the-world approach to implement atom garbage collection
quickly becomes a bottle-neck, making Prolog unsuitable for soft real-time
applications. In this article we describe a novel implementation for the atom
table using lock-free techniques where the atom-table remains accessible even
during atom garbage collection. Relying only on CAS (Compare And Swap) and not
on external libraries, the implementation is straightforward and portable.
Under consideration for acceptance in TPLP.Comment: Paper presented at the 32nd International Conference on Logic
Programming (ICLP 2016), New York City, USA, 16-21 October 2016, 14 pages,
LaTeX, 4 PDF figure
- …