Concepts, Techniques, and Models of Computer Programming Textbook and Reference Work

submited by
Style Pass
2024-10-17 14:30:07

The two approaches most similar to the kernel language approach are the foundational calculus and the virtual machine. We explain how the kernel language approach differs from these approaches. A foundational calculus, like the lambda-calculus or pi-calculus, reduces programming to a minimal number of primitive concepts. This is especially useful for the theoretical study of computation. A virtual machine defines a language in terms of an implementation on an idealized machine. This is especially useful for language implementors and compiler writers. The problem with both approaches is that any realistic program written in them will be cluttered with technical details about language mechanisms. The kernel language approach avoids this clutter by choosing concepts wisely. The kernel languages are designed for programmers. How concepts lead to multiparadigm programming We define the precise concept of computation model to capture the intuitive concept of “programming paradigm”. Each kernel language is the basis of a computation model. The book introduces more than twenty computation models in a uniform framework and in a progressive way. Programming paradigms appear as a kind of epiphenomenon, depending on which concepts one uses. We examine the relationships between the models and show how and why to use different models together in the same program. This leads to multiparadigm programming in a completely natural way. Often models that seem vastly different have kernel languages that differ only in one concept (e.g., this is the case for declarative versus object-oriented programming).

General models covered include declarative programming (functional and logic), imperative programming (component-based and object-oriented), and concurrent programming (both synchronous and asynchronous, including dataflow, streams, lazy execution, message passing, and shared state). Specialized models covered include graphical user interface programming, distributed programming, and constraint programming. All models are fully implemented for practical programming and incorporate many of the latest research ideas.

Leave a Comment
Related Posts