Guest Editorial

Programming is at the heart of the activity of any software engineer or computer scientist. Because computer science, by its nature and by the context in which it evolves, is in perpetual mutation, the concepts, techniques and tools for programming suffer from a continual reinvention.

For instance, one assists today to the profusion of multicore architectures or to the advent of ubiquitous computing. The needs for reliability, efficiency, reusability or ease of development are still an important issue. New programming paradigms, such as aspect oriented programming and design by contracts, arise, become a reality or gain maturity and popularity. Of course, many other promising development approaches are omitted here and many others will happen.

All these, put together, form continuously changing challenges that programming methodologies and tools must handle and provide an adequate support. This explains in part why there is no and will not exist an ultimate solution in compilers, programming languages or execution platform design. These are exciting, extremely active and constantly evolving research areas.

A reader will find in this special issue of the ComSIS journal revised versions of selected papers from the Conference on Compilers, Related Technologies and Applications" (CoRTA'2008), held the 11th July of 2008 in Bragança -Portugal ( The conference was organized by Microsoft-Portugal, the Departments of Computer Science of the Polytechnic Institute of Bragança, University of Minho and University of Beira Interior.

The aim of CoRTA was to provide a forum where researchers, developers, educators, research students, and practitioners exchange ideas and information on the latest academic or industrial work in compiler technology, programming language design and implementation, and their application. The conference emphasized theoretical, practical and experimental work and hosted contributions on methods and tools for all aspects of compiler technology and all language paradigms. In particular, the following topics were covered:

- compilation and interpretation techniques;

- run-time techniques;

- programming tools;

- techniques for specific domains or environments;

- formal techniques and tools;

- design of novel language constructs and their implementation;

- programming language concepts and methodologies.

This special issue contains 8 papers, Those are extensively revised versions of the original presentations published in CoRTA'2008 Proceedings.

Maria João Varanda Pereira, Marjan Mernik, Daniela da Cruz, and Pedro Rangel Henriques in the invited paper “Program Comprehension for Domain-Specific Languages” provide a survey on how techniques and tools for the comprehension of traditional programming languages fit into the understanding of Domain specific Languages (DSL).

In the paper “From Lisp S-Expressions to Java Source Code”, António Menezes Leitão proposes how to use S-expression syntax in a Java code generation environment.

Nuno Lopes, Cláudio Fernandes, and Salvador Abreu describe in the paper “Representing and Querying Multiple Ontologies with Contextual Logic Programming” how contextual logic programming can be used as a computational hub for representing and reasoning over knowledge modeled by web ontology.

João Costa Seco, Ricardo Silva, and Margarida Piriquito introduce in their paper “ComponentJ: a component-based programming language with dynamic reconfiguration” an evolution of the ComponentJ programming language, a component-based Java-like programming language, where composition is a chosen structuring mechanism.

Elisabete Ferreira, Rogério Paulo, Daniela da Cruz, and Pedro Henriques in their paper “Integration of the ST Language in a Model-Based Engineering Environment for Control Systems – An Approach for Compiler” present an industrial experience on the use of compilers design principles. In particular, they describe the integration of a DSL language in a tool core meta-model. The DSL compiler is presented as an application case study.

Ricardo Dias, João Lourenço, and Gonçalo Cunha, the authors of the paper “Developing Libraries Using Software Transactional Memory”, propose in the context of software transactional memory, a generic and an elegant approach based on a handler system, which provide the means to create and execute compensation actions at key moments, during the life-time of a transaction.

Daniela da Cruz, Pedro Rangel Henriques, and Maria João Varanda Pereira, in their paper “Alma vs DDD”, present how a program animator Alma can be used for the purpose of understanding programs. In order to highlight the key features of Alma, they compare this approach with a well known debugger. David Pereira and Nelma Moreira introduce in the paper "KAT and PHL in Coq" an implementation of Kleene algebra with tests (KAT) in the Coq theorem prover. In particular, the authors show how this can be used to prove the correctness of programs in the context of source-level Proof-Carrying-Code.

In conclusion, we would like to thanks the authors for their valuable contribution to this special issue. We also like to thanks the referees for their high-quality work and great efforts.

Publishing this special issue would not be possible without a great enthusiasm and a considerable support of several colleagues and friends. My thanks go to Maria João Varanda, Pedro Rangel Henriques, António Menezes Leitão, Vitor Santos, Salvador Abreu, João Cachopo, Vitor Santos Costa, Ludovic Henrio, Pedro Patinho, Rogério Reis, Ricardo Rocha, and Bernard Serpette.

Finally, I am grateful to Prof. Ivan Lukovic, Editor-in-Chief of ComSIS, who kindly accepted the request to publish the best CoRTA'2008 papers in this journal.

Guest Editor
Simão Melo de Sousa