Academia.edu no longer supports Internet Explorer.
To browse Academia.edu and the wider internet faster and more securely, please take a few seconds to upgrade your browser.
2001
Programming is at least as much about manipulating existing code as it is about writing new code. Existing code is modified, for example to make inefficient code run faster, or to accommodate for new features when reusing code; existing code is analyzed, for example to verify certain program properties, or to use the analysis information for code modifications. Semantics-based program
2000
Programming language semantics has lost touch with large groups of potential users [39]. Among the reasons for this unfortunate state of affairs, one stands out. Semantic results are rarely incorporated in practical systems that would help language designers to implement and test a language under development, or assist programmers in answering their questions about the meaning of some language feature not properly documented in the language's reference manual.
Lecture Notes in Computer Science, 2012
The use of general descriptive names, registered names, trademarks, etc. in this publication does not imply, even in the absence of a specific statement, that such names are exempt from the relevant protective laws and regulations and therefore free for general use.
Proceedings of the 7th ACM SIGPLAN-SIGACT symposium on Principles of programming languages - POPL '80, 1980
about a year I have worked on a semantic specification for the C programming language My objecti~e was to construct a readable and precise specification of C. aimed at compiler writers, maintamers, and language pundm, This paper is a report on the project, * UNIX is a trademark of Bell Laboratories.
2016
In these lecture notes we present a few basic approaches to the definition of the semantics of programming languages. In particular, we present: (i) the operational semantics and the axiomatic semantics for a simple imperative language, and (ii) the operational semantics and the denotational semantics for some first order and higher order, typed functional languages. We then present some basic techniques for proving properties of imperative, functional, and concurrent programs. We closely follow the presentation done in the book by Glynn Winskel [19]. I express my gratitude to my colleagues at the Department of Informatics, Systems, and Production of the University of Roma Tor Vergata, and to my students and my co-workers Fabio Fioravanti, Fulvio Forni, Maurizio Proietti, and Valerio Senni for their support and encouragement. Thanks to Michele Ranieri and Massimiliano Macchia for pointing out some imprecisions in a preliminary version of these lecture notes. Many thanks also to the Aracne Publishing Company for its helpful cooperation.
1985
The design and development of semantically based programming tools is a goal whose fulfillment is unquestionably many years off. The vision has been articulated in various forms by many researchers (including us in IFIP 83), but our impression now is that the expression of the vision provides little more than spiritual support and that there is an urgent need to distinguish shorter term goals along the way to mechanized tools. While there does indeed seem to be some consensus that a notion of program derivation or "meta-program" is required (and there are indeed many informal examples of derivations in the literature), little has been said concerning the formal structure of these objects and how we will need to operate on them. What distinguishes derivations from mere proofs? What are the basic derivation steps? What deductive support is required? How can we assess the value of proposed derivation structures? Also, while much has been said concerning the functionality of the proposed tools, it is safe to say that we are still quite uncertain of their i~ttended behavior and mode of interaction. What will be the correct balance of responsibility between programmer
1996
This paper offers an assessment of what has been achieved in three decades of work on the semantics of programming languages and pinpoints some practical problems in computing which might stimulate further research. The examples sketched in this paper come from the author's own research on concurrent object oriented languages, from database practice, and from more speculative research on Internet issues.
2007
The origins of “formal methods” lie partly in language description (although applications of methods like VDM, RAISE or B to areas other than programming languages are probably more widely known). This paper revisits the language description task but uses operational (rather than denotational) semantics to illustrate that the crucial idea is thinking about an abstract model of something that one is trying to understand or design.
Lecture Notes in Computer Science, 1986
me too is a functional language in which executable specifications of software components are constructed from abstract models and operations defined on them. The principal data type provided by the language is the set. This paper examines in detail the extent to which the objects manipulated by me too programs do in fact behave like the mathematical ideal of sets. It draws conclusions about the design of the language, and about the feasibility of such projects in 'applied semantics'. * This work was supported in part by an SERC grant.
created the initial versions of the handouts from photocopies of my sloppy and tersely written personal lecture notes. She also drew the figures in the document. After the semester, she helped me integrate my expanded versions of the various handouts into a single document. I also thank the students in the Spring 2006 CSCI 550 class, who did not complain too much about the many typos and other errors in the versions of the notes I handed out in class. Their error corrections and comments (particularly those of Chuck Jenkins) assisted me in improving the notes. In the 1990s my course used Ed Cohen's textbook, so my selection of material and my presentation is similar to that book in several places.
2020
In the 1960s, a full formal description was seen as a crucial and unavoidable part of creating a new programming language. A key part of that was a thorough and rigorous description of the semantics. However, in the decades since, the focus on providing this has somewhat diminished. Why was formal semantics once seen as so critical? Why did it not succeed in the ways hoped? These questions are explored by considering the history of modelbased approaches to describing programming languages, with a particular focus on the IBM Laboratory Vienna under Heinz Zemanek, and the Programming Research Group at Oxford University under Christopher Strachey. It is shown that there were a variety of different approaches to the problem, stemming from the different backgrounds of the people and groups involved. The story of formal language description is in some ways also the story of early programming languages and the integration of mathematics into the emerging new field of computer science, resu...
2008
Unlike natural languages, programming languages are strictly stylized entities created to facilitate human communication with computers. In order to make programming languages recognizable by computers, one of the key challenges is to describe and implement language syntax and semantics such that the program can be translated into machine-readable code. This process is normally considered as the front-end of a compiler, which is mainly related to the programming language, but not the target machine.
2003
Abstract The tasks of maintenance and reengineering of an existing software system require a great deal of effort to be spent on understanding the source code to determine the behavior, organization, and architecture of the software. Different types of information (eg, static, dynamic, source code, documentation, etc.) will describe different features of the software system.
Electronic Notes in Theoretical Computer Science, 1999
The virtual class [15] construct was first introduced in the language Beta to provide added expressiveness when used with inheritance. Unfortunately, the virtual class construct in Beta is not statically type-safe. In this paper we show how a generalization of the semantics of object-oriented languages with a MyType construct leads to a variant of virtual classes which needs no run-time checks. This results in an object-oriented language in which both parametric types and virtual classes (or types) are well-integrated, and which is statically ...
1998
Current object-oriented design notations such as OMT 14], Booch 3] and UML 16] are syntax-bound and semantic-free in the sense that they typically employ a large and rigorously enforceable collection of construction rules, but rarely provide a model to explain what is being constructed.
2017
Programming language definitions assign formal meaning to complete programs. Programmers, however, spend a substantial amount of time interacting with incomplete programs - programs with holes, type inconsistencies and binding inconsistencies - using tools like program editors and live programming environments (which interleave editing and evaluation). Semanticists have done comparatively little to formally characterize (1) the static and dynamic semantics of incomplete programs; (2) the actions available to programmers as they edit and inspect incomplete programs; and (3) the behavior of editor services that suggest likely edit actions to the programmer based on semantic information extracted from the incomplete program being edited, and from programs that the system has encountered in the past. This paper serves as a vision statement for a research program that seeks to develop these "missing" semantic foundations. Our hope is that these contributions, which will take th...
Theoretical Computer Science, 1994
Science 135 (I 994) 267-288 Elsevier 267
Mathematical Foundations of Programming Semantics, 1992
A formal system of describing semantics of programming languages, based on the denotational approach is presented. That approach is modified with some operational view for formal description, combined with the object oriented methods of programming.
Loading Preview
Sorry, preview is currently unavailable. You can download the paper by clicking the button above.