Software has gone from obscurity to indispensability in less than fifty years. Although other industries have followed a similar trajectory, software and its supporting industry are different. In this book the authors explain, from a variety of perspectives, how software and the software industry are different—technologically, organizationally, and socially.
Uncertainty is a fundamental and unavoidable feature of daily life; in order to deal with uncertaintly intelligently, we need to be able to represent it and reason about it. In this book, Joseph Halpern examines formal ways of representing uncertainty and considers various logics for reasoning about it.
This concise guide to the Java programming language, version 5.0, offers a quick reference for the reader who wants to know the language in greater detail than that provided by the standard text or language reference book. It presents the entire Java programming language and essential parts of the class libraries—the collection classes and the input-output classes.
The study of type systems for programming languages now touches many areas of computer science, from language design and implementation to software engineering, network security, databases, and analysis of concurrent and distributed systems. This book offers accessible introductions to key ideas in the field, with contributions by experts on each topic.
C# is an object-oriented programming language that is similar to the Java programming language in many respects but more comprehensive and different in most details. This book gives a concise description of C#. It is intended as a guide for readers who know Java and want to learn C# and as a quick reference for anyone who wants to know C# in more detail than that provided by a standard textbook. The final chapter of C# Precisely summarizes the differences between C# and Java.
productively combines elements of programming languages, environments, logic, and inductive inference to produce effective debugging aids. Its use of the PROLOG language provides an efficient implementation of the debugging algorithms.
High-performance message-based supercomputers have only recently emerged from the research laboratory. The commercial manufacturing of such products as the Intel iPSC, the Ametek s/14, the NCUBE/ten, and the FPS T Series - all based on multicomputer network technology - has sparked lively interest in high-performance computation, and particularly in the message-passing paradigm for parallel computation.
This book addresses a fundamental software engineering issue, applying formal techniques and rigorous analysis to a practical problem of great current interest: the incorporation of language-specific knowledge in interactive programming environments. It makes a basic contribution in this area by proposing an attribute-grammar framework for incremental semantic analysis and establishing its algorithmic foundations. The results are theoretically important while having immediate practical utility for implementing environment-generating systems.
This innovative text presents computer programming as a unified discipline in a way that is both practical and scientifically sound. The book focuses on techniques of lasting value and explains them precisely in terms of a simple abstract machine. The book presents all major programming paradigms in a uniform framework that shows their deep relationships and how and where to use them together. After an introduction to programming concepts, the book presents both well-known and lesser-known computation models ("programming paradigms").
As pop culture, games are as important as film or television—but game design has yet to develop a theoretical framework or critical vocabulary. In Rules of Play Katie Salen and Eric Zimmerman present a much-needed primer for this emerging field. They offer a unified model for looking at all kinds of games, from board games and sports to computer and video games. As active participants in game culture, the authors have written Rules of Play as a catalyst for innovation, filled with new concepts, strategies, and methodologies for creating and understanding games.