Formal Syntax and Semantics of Java


Book Description

Java, undoubtedly, has its roots in embedded systems and the Web. Nevertheless, it is a fully functional high-level programming language that can provide users with a wide range of functionality and versatility. This thoroughly cross-reviewed state-of-the-art survey is devoted to the study of the syntax and semantics of Java from a formal-methods point of view. It consists of the following chapters by leading researchers: Formal Grammar for Java; Describing the Semantics of Java and Proving Type Soundness; Proving Java Type Soundness; Machine-Checking the Java Specification: Proving Type-Safety; An Event-Based Structural Operational Semantics of Multi-Threaded Java Dynamic Denotational Semantics of Java; A Programmer's Reduction Semantics for Classes and Mixins; A Formal Specification of Java Virtual Machine Instructions for Objects, Methods and Subroutines; The Operational Semantics of a Java Secure Processor; A Programmer Friendly Modular Definition of the Semantics of Java.




Formal Syntax and Semantics of Java


Book Description

Java, undoubtedly, has its roots in embedded systems and the Web. Nevertheless, it is a fully functional high-level programming language that can provide users with a wide range of functionality and versatility. This thoroughly cross-reviewed state-of-the-art survey is devoted to the study of the syntax and semantics of Java from a formal-methods point of view. It consists of the following chapters by leading researchers: Formal Grammar for Java; Describing the Semantics of Java and Proving Type Soundness; Proving Java Type Soundness; Machine-Checking the Java Specification: Proving Type-Safety; An Event-Based Structural Operational Semantics of Multi-Threaded Java Dynamic Denotational Semantics of Java; A Programmer's Reduction Semantics for Classes and Mixins; A Formal Specification of Java Virtual Machine Instructions for Objects, Methods and Subroutines; The Operational Semantics of a Java Secure Processor; A Programmer Friendly Modular Definition of the Semantics of Java.




Crafting Interpreters


Book Description

Despite using them every day, most software engineers know little about how programming languages are designed and implemented. For many, their only experience with that corner of computer science was a terrifying "compilers" class that they suffered through in undergrad and tried to blot from their memory as soon as they had scribbled their last NFA to DFA conversion on the final exam. That fearsome reputation belies a field that is rich with useful techniques and not so difficult as some of its practitioners might have you believe. A better understanding of how programming languages are built will make you a stronger software engineer and teach you concepts and data structures you'll use the rest of your coding days. You might even have fun. This book teaches you everything you need to know to implement a full-featured, efficient scripting language. You'll learn both high-level concepts around parsing and semantics and gritty details like bytecode representation and garbage collection. Your brain will light up with new ideas, and your hands will get dirty and calloused. Starting from main(), you will build a language that features rich syntax, dynamic typing, garbage collection, lexical scope, first-class functions, closures, classes, and inheritance. All packed into a few thousand lines of clean, fast code that you thoroughly understand because you wrote each one yourself.




Formal Syntax and Semantics of Programming Languages


Book Description

With this book, readers with a basic grounding in discreet mathematics will be able to understand the practical applications of these difficult concepts. The book presents the typically difficult subject of "formal methods" in an informal, easy-to-follow manner. A "laboratory component" is integrated throughout the text.




Foundations of Programming Languages


Book Description

This clearly written textbook introduces the reader to the three styles of programming, examining object-oriented/imperative, functional, and logic programming. The focus of the text moves from highly prescriptive languages to very descriptive languages, demonstrating the many and varied ways in which we can think about programming. Designed for interactive learning both inside and outside of the classroom, each programming paradigm is highlighted through the implementation of a non-trivial programming language, demonstrating when each language may be appropriate for a given problem. Features: includes review questions and solved practice exercises, with supplementary code and support files available from an associated website; provides the foundations for understanding how the syntax of a language is formally defined by a grammar; examines assembly language programming using CoCo; introduces C++, Standard ML, and Prolog; describes the development of a type inference system for the language Small.




Software Languages


Book Description

This book identifies, defines and illustrates the fundamental concepts and engineering techniques relevant to applications of software languages in software development. It presents software languages primarily from a software engineering perspective, i.e., it addresses how to parse, analyze, transform, generate, format, and otherwise process software artifacts in different software languages, as they appear in software development. To this end, it covers a wide range of software languages – most notably programming languages, domain-specific languages, modeling languages, exchange formats, and specifically also language definition languages. Further, different languages are leveraged to illustrate software language engineering concepts and techniques. The functional programming language Haskell dominates the book, while the mainstream programming languages Python and Java are additionally used for illustration. By doing this, the book collects and organizes scattered knowledge from software language engineering, focusing on application areas such as software analysis (software reverse engineering), software transformation (software re-engineering), software composition (modularity), and domain-specific languages. It is designed as a textbook for independent study as well as for bachelor’s (advanced level) or master’s university courses in Computer Science. An additional website provides complementary material, for example, lecture slides and videos. This book is a valuable resource for anyone wanting to understand the fundamental concepts and important engineering principles underlying software languages, allowing them to acquire much of the operational intelligence needed for dealing with software languages in software development practice. This is an important skill set for software engineers, as languages are increasingly permeating software development.




Programming Languages and Systems


Book Description

ETAPS 2001 was the fourth instance of the European Joint Conferences on Theory and Practice of Software. ETAPS is an annual federated conference that was established in 1998 by combining a number of existing and new conferences. This year it comprised ve conferences (FOSSACS, FASE, ESOP, CC, TACAS), ten satellite workshops (CMCS, ETI Day, JOSES, LDTA, MMAABS, PFM, RelMiS, UNIGRA, WADT, WTUML), seven invited lectures, a debate, and ten tutorials. The events that comprise ETAPS address various aspects of the system de- lopment process, including speci cation, design, implementation, analysis, and improvement. The languages, methodologies, and tools which support these - tivities are all well within its scope. Di erent blends of theory and practice are represented, with an inclination towards theory with a practical motivation on one hand and soundly-based practice on the other. Many of the issues involved in software design apply to systems in general, including hardware systems, and the emphasis on software is not intended to be exclusive.




Grammars for Programming Languages


Book Description

Thus, the organization of the book as it finally evolved contains two introductory chapters that can be read by anyone familiar with a programming language. These chapters provide a general background in the commonly-used grammatical notations describing the syntax of a programming language. This is information that should be familiar to anyone who programs-unfortunately, it is familiar to only a very few. With the information contained in these first two chapters, the programmer should have confident access to the syntactic portions of programming-language reference manuals. This includes an understanding of what will not appear in the syntax as well as what should appear there. The remainder of the book builds on this basic foundation exploring the limits of definitional possibilities using a grammatical formalism. To this end, the third chapter introduces the ALGOL 68 grammatical formalism with extensive examples. The fourth chapter gives four grammars describing a simple programming language. This illustrates the evolution of grammatical definitions from ALGOL 60 to ALGOL 68 and beyond. The third grammar in the fourth chapter successfully supplies an answer to Martin Kay's germinal challenge.




Concrete Semantics


Book Description

Part I of this book is a practical introduction to working with the Isabelle proof assistant. It teaches you how to write functional programs and inductive definitions and how to prove properties about them in Isabelle’s structured proof language. Part II is an introduction to the semantics of imperative languages with an emphasis on applications like compilers and program analysers. The distinguishing feature is that all the mathematics has been formalised in Isabelle and much of it is executable. Part I focusses on the details of proofs in Isabelle; Part II can be read even without familiarity with Isabelle’s proof language, all proofs are described in detail but informally. The book teaches the reader the art of precise logical reasoning and the practical use of a proof assistant as a surgical tool for formal proofs about computer science artefacts. In this sense it represents a formal approach to computer science, not just semantics. The Isabelle formalisation, including the proofs and accompanying slides, are freely available online, and the book is suitable for graduate students, advanced undergraduate students, and researchers in theoretical computer science and logic.




The Java Language Specification


Book Description

For nearly five years, one book has served as the definitive reference to Java for all serious developers: The Java Language Specification, by James Gosling, Bill Joy, and Guy Steele. Now, these world-renowned Java authorities (along with new co-author Gilad Bracha) have delivered a monumental update. This completely revised Second Edition covers the Java 2 Platform Standard Edition Version 1.3 with unprecedented depth and precision, offering the invaluable insights of Java's creators to every developer. There is no better source for learning everything about the Syntax and Semantics of the Java programming language. Developers will turn to this book again and again.