Results 1 - 10
of
11
Side-effect removal transformation
- In 9 th IEEE International Workshop on Program Comprehension (IWPC'01
, 2001
"... Abstract A side effect is any change in program state that occurs as a by-product of the evaluation of an expression. Side effects are often thought to impede program comprehension and to lead to complex, poorly understood and occasionally undefined semantics. Side-Effect Removal Transformation (SER ..."
Abstract
-
Cited by 15 (10 self)
- Add to MetaCart
Abstract A side effect is any change in program state that occurs as a by-product of the evaluation of an expression. Side effects are often thought to impede program comprehension and to lead to complex, poorly understood and occasionally undefined semantics. Side-Effect Removal Transformation (SERT) improves comprehension by rewriting a program p which may contain side effects into a semantically equivalent program p0 which is guaranteed to be side-effect free. This paper introduces the SERT approach to the side-effect problem, briefly reporting initial experience with an implementation of SERT for C programs called Linsert1. 1
Cognitive perspectives on the role of naming in computer programs
- In Proc. of the 18th Annual Psychology of Programming Workshop
, 2006
"... Abstract. Programming a computer is a complex, cognitively rich process. This paper examines ways in which human cognition is reflected in the text of computer programs. We concentrate on naming: the assignment of identifying labels to programmatic constructs. Naming is arbitrary, yet programmers do ..."
Abstract
-
Cited by 13 (0 self)
- Add to MetaCart
Abstract. Programming a computer is a complex, cognitively rich process. This paper examines ways in which human cognition is reflected in the text of computer programs. We concentrate on naming: the assignment of identifying labels to programmatic constructs. Naming is arbitrary, yet programmers do not select names arbitrarily. Rather, programmers choose and use names in regular, systematic ways that reflect deep cognitive and linguistic influences. This, in turn, allows names to carry semantic cues that aid in program understanding and support the larger software development process. 1
Amorphous Procedure Extraction
- IN SCAM
, 2004
"... The procedure extraction problem is concerned with the meaning preserving formation of a procedure from a (not necessarily contiguous) selected set of statements. Previous approaches to the problem have used dependence analysis to identify the non-selected statements which must be `promoted' (also s ..."
Abstract
-
Cited by 7 (3 self)
- Add to MetaCart
The procedure extraction problem is concerned with the meaning preserving formation of a procedure from a (not necessarily contiguous) selected set of statements. Previous approaches to the problem have used dependence analysis to identify the non-selected statements which must be `promoted' (also selected) in order to preserve semantics. All previous approaches to the problem have been syntax preserving. This paper shows
Bee: an Integrated Development Environment for the Scheme Programming Language
- Journal of Functional Programming
, 2000
"... The Bee is an integrated development environment for the Scheme programming language. It provides the user with a connection between Scheme and the C programming language, a symbolic debugger, a profiler, an interpreter, an optimizing compiler that delivers stand alone executables, a source file bro ..."
Abstract
-
Cited by 6 (1 self)
- Add to MetaCart
The Bee is an integrated development environment for the Scheme programming language. It provides the user with a connection between Scheme and the C programming language, a symbolic debugger, a profiler, an interpreter, an optimizing compiler that delivers stand alone executables, a source file browser, a project manager, user libraries and online documentation. This article details the facilities of the Bee, its user interface and presents an overview of the implementation of its main components.
A Post-Placement Side-Effect Removal Algorithm
- In IEEE International Conference on Software Maintenance (ICSM 2002
, 2002
"... Side-effects are widely believed to impede program comprehension and have a detrimental effect upon software maintenance. ..."
Abstract
-
Cited by 6 (3 self)
- Add to MetaCart
Side-effects are widely believed to impede program comprehension and have a detrimental effect upon software maintenance.
Application of Information Retrieval Techniques for Source Code Authorship Attribution
"... Abstract. Authorship attribution assigns works of contentious authorship to their rightful owners solving cases of theft, plagiarism and authorship disputes in academia and industry. In this paper we investigate the application of information retrieval techniques to attribution of authorship of C so ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
Abstract. Authorship attribution assigns works of contentious authorship to their rightful owners solving cases of theft, plagiarism and authorship disputes in academia and industry. In this paper we investigate the application of information retrieval techniques to attribution of authorship of C source code. In particular, we explore novel methods for converting C code into documents suitable for retrieval systems, experimenting with 1,597 student programming assignments. We investigate several possible program derivations, partition attribution results by original program length to measure effectiveness of modest and lengthy programs separately, and evaluate three different methods for interpreting document rankings as authorship attribution. The best of our methods achieves an average of 76.78 % classification accuracy for a one-in-ten classification problem which is competitive against six existing baselines. The techniques that we present can be the basis of practical software to support source code authorship investigations.
Notes on Writing Portable Programs In C
, 2000
"... This document is in the public domain. Email address (Internet) are ado@sauna.hut.fi (preferred contact) and arl@sauna.hut.fi, respectively ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
This document is in the public domain. Email address (Internet) are ado@sauna.hut.fi (preferred contact) and arl@sauna.hut.fi, respectively
Lessons Learned on Design for Modifiability and Maintainability
"... Maintainability is perhaps one of the most important aspects of software development in that maintenance costs account for at least 50% of software system lifetime costs. A common maintenance practice is adding new capabilities to satisfy the evolving system dynamics, thus contributing to the ever-g ..."
Abstract
- Add to MetaCart
Maintainability is perhaps one of the most important aspects of software development in that maintenance costs account for at least 50% of software system lifetime costs. A common maintenance practice is adding new capabilities to satisfy the evolving system dynamics, thus contributing to the ever-growing expenses. This paper discusses some lessons learned from system modifiability that affect software maintainability from the design standpoint. Deciding which design approach is most appropriate for the underlying system requirements plays a major role in software product operability and extensibility.
Argument
"... Argument passing means passing values along with an invocation. Most programming languages provide positional arguments as their ordinary argument passing mechanism. Sometimes ordinary argument passing is not enough, for instance, because the number of arguments or their types differ from invocation ..."
Abstract
- Add to MetaCart
Argument passing means passing values along with an invocation. Most programming languages provide positional arguments as their ordinary argument passing mechanism. Sometimes ordinary argument passing is not enough, for instance, because the number of arguments or their types differ from invocation to invocation, or optional arguments are needed, or the same arguments are passed through a chain of multiple receivers and must vary flexibly. These issues can be resolved using ordinary argument passing mechanisms, but the solutions are usually cumbersome. In many systems, such as programming languages, programming environments, frameworks, and middleware systems, advanced argument passing solutions are provided to better address these issues. In this paper we present four patterns applied in these advanced argument passing solutions: variable argument lists allow an operation to receive arbitrary numbers of arguments, optional arguments let operations have arguments which can either be provided in an invocation or not, non-positional arguments allow arguments to be passed in any order as name/value pairs, and context objects are special types used for the purpose of argument passing.
20009 San Sebasti'anSpain
"... Abstract Side-effects are widely believed to impede programcomprehension and have a detrimental effect upon software maintenance.This paper introduces an algorithm for side-effect removal which splits the side-effects into their pure expres-sion meaning and their state-changing meaning. Symbolic exe ..."
Abstract
- Add to MetaCart
Abstract Side-effects are widely believed to impede programcomprehension and have a detrimental effect upon software maintenance.This paper introduces an algorithm for side-effect removal which splits the side-effects into their pure expres-sion meaning and their state-changing meaning. Symbolic execution is used to determine the expression mean-ing, while transformation is used to place the statechanging part in a suitable location in a transformed ver-sion of the program. This creates a program which is semantically equivalent to the original but guaranteed to befree from side-effects. The paper also reports the results of an empiricalstudy which demonstrates that the application of the algorithm causes a significant improvement in programcomprehension. 1

