Muutke küpsiste eelistusi

Foundations of Programming Languages 2014 ed. [Pehme köide]

  • Formaat: Paperback / softback, 354 pages, kõrgus x laius: 235x155 mm, kaal: 657 g, XIII, 354 p., 1 Paperback / softback
  • Sari: Undergraduate Topics in Computer Science
  • Ilmumisaeg: 03-Feb-2015
  • Kirjastus: Springer International Publishing AG
  • ISBN-10: 3319133136
  • ISBN-13: 9783319133133
  • Pehme köide
  • Hind: 55,27 €*
  • * saadame teile pakkumise kasutatud raamatule, mille hind võib erineda kodulehel olevast hinnast
  • See raamat on trükist otsas, kuid me saadame teile pakkumise kasutatud raamatule.
  • Kogus:
  • Lisa ostukorvi
  • Tasuta tarne
  • Lisa soovinimekirja
  • Formaat: Paperback / softback, 354 pages, kõrgus x laius: 235x155 mm, kaal: 657 g, XIII, 354 p., 1 Paperback / softback
  • Sari: Undergraduate Topics in Computer Science
  • Ilmumisaeg: 03-Feb-2015
  • Kirjastus: Springer International Publishing AG
  • ISBN-10: 3319133136
  • ISBN-13: 9783319133133

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.

Arvustused

Undergraduates studying programming languages will find this book to be a skillful and informative introduction to the subject. (Marlin Thomas, Computing Reviews, July, 2015)

1 Introduction
1(26)
1.1 Historical Perspective
2(4)
1.2 Models of Computation
6(4)
1.3 The Origins of a Few Programming Languages
10(6)
1.4 Language Implementation
16(7)
1.5
Chapter Summary
23(1)
1.6 Review Questions
24(1)
1.7 Solutions to Practice Problems
25(2)
2 Syntax
27(26)
2.1 Terminology
27(2)
2.2 Backus Naur Form (BNF)
29(1)
2.3 Context-Free Grammars
30(1)
2.4 Derivations
31(1)
2.5 Parse Trees
32(2)
2.6 Abstract Syntax Trees
34(1)
2.7 Lexical Analysis
34(4)
2.8 Parsing
38(1)
2.9 Top-Down Parsers
38(3)
2.10 Bottom-Up Parsers
41(3)
2.11 Ambiguity in Grammars
44(1)
2.12 Other Forms of Grammars
45(1)
2.13 Limitations of Syntactic Definitions
45(1)
2.14
Chapter Summary
46(1)
2.15 Review Questions
47(1)
2.16 Exercises
47(1)
2.17 Solutions to Practice Problems
48(5)
3 Assembly Language
53(40)
3.1 Overview of the CoCo VM
54(3)
3.2 Getting Started
57(2)
3.3 Input/Output
59(2)
3.4 If-Then-Else Statements
61(5)
3.5 While Loops
66(2)
3.6 Exception Handling
68(3)
3.7 List Constants
71(1)
3.8 Calling a Method
72(2)
3.9 Iterating Over a List
74(1)
3.10 Range Objects and Lazy Evaluation
75(3)
3.11 Functions and Closures
78(4)
3.12 Recursion
82(2)
3.13
Chapter Summary
84(1)
3.14 Review Questions
84(1)
3.15 Exercises
85(1)
3.16 Solutions to Practice Problems
85(8)
4 C++
93(80)
4.1 C++ Development Fundamentals
95(4)
4.2 Overview of the CoCo Virtual Machine
99(2)
4.3 Building a Large Project
101(2)
4.4 Static Type Checking
103(1)
4.5 Declaring Variables
104(2)
4.6 Pointers and Arrays
106(4)
4.7 Writing Functions
110(2)
4.8 Parameter Passing and Return Values
112(3)
4.9 C++ References
115(2)
4.10 Const in C++
117(1)
4.11 Header Files
118(2)
4.12 OOP Using C++
120(1)
4.13 Pre-defined C++ Classes
121(1)
4.14 The Standard Template Library
122(2)
4.15 Operator Overloading
124(1)
4.16 Classes and Objects
124(3)
4.17 Inheritance
127(1)
4.18 Constructors and Initilization Lists
127(4)
4.19 Polymorphism
131(1)
4.20 Abstract Classes
132(1)
4.21 Memory Management
133(2)
4.22 Writing Templates
135(3)
4.23 C++ Error Handling
138(1)
4.24 Exception Handling
138(2)
4.25 Signals
140(1)
4.26 CoCo Components
140(19)
4.27 Implementing Dictionaries
159(7)
4.28
Chapter Summary
166(1)
4.29 Review Questions
167(1)
4.30 Exercises
168(2)
4.31 Solutions to Practice Problems
170(3)
5 Standard ML
173(54)
5.1 Imperative Versus Functional Programming
174(2)
5.2 The Lambda Calculus
176(2)
5.3 Getting Started with Standard ML
178(1)
5.4 Expressions, Types, Structures, and Functions
179(2)
5.5 Recursive Functions
181(2)
5.6 Characters, Strings, and Lists
183(3)
5.7 Pattern Matching
186(1)
5.8 Tuples
187(1)
5.9 Let Expressions and Scope
188(2)
5.10 Datatypes
190(3)
5.11 Parameter Passing in Standard ML
193(1)
5.12 Efficiency of Recursion
193(2)
5.13 Tail Recursion
195(2)
5.14 Currying
197(1)
5.15 Anonymous Functions
198(1)
5.16 Higher-Order Functions
199(5)
5.17 Continuation Passing Style
204(1)
5.18 Input and Output
205(1)
5.19 Programming with Side-Effects
206(2)
5.20 Exception Handling
208(1)
5.21 Encapsulation in ML
208(2)
5.22 Type Inference
210(2)
5.23 Building a Prefix Caclculator Interpreter
212(4)
5.24
Chapter Summary
216(1)
5.25 Exercises
217(3)
5.26 Solutions to Practice Problems
220(7)
6 Compiling Standard ML
227(40)
6.1 ML-lex
229(4)
6.2 The Small AST Definition
233(2)
6.3 Using ML-yacc
235(5)
6.4 Compiling and Running the Compiler
240(4)
6.5 Function Calls
244(2)
6.6 Let Expressions
246(2)
6.7 Unary Negation
248(3)
6.8 If-Then-Else Expressions
251(2)
6.9 Short-Circuit Logic
253(2)
6.10 Defining Functions
255(5)
6.11 Reference Variables
260(2)
6.12
Chapter Summary
262(1)
6.13 Review Questions
263(1)
6.14 Exercises
263(2)
6.15 Solutions to Practice Problems
265(2)
7 Prolog
267(28)
7.1 Getting Started with Prolog
269(1)
7.2 Fundamentals
270(1)
7.3 The Prolog Program
271(1)
7.4 Lists
272(1)
7.5 The Accumulator Pattern
273(1)
7.6 Built-in Predicates
274(1)
7.7 Unification and Arithmetic
275(1)
7.8 Input and Output
276(1)
7.9 Structures
277(1)
7.10 Parsing in Prolog
278(4)
7.11 Prolog Grammar Rules
282(1)
7.12 Building an AST
283(1)
7.13 Attribute Grammars
284(3)
7.14
Chapter Summary
287(1)
7.15 Review Questions
288(1)
7.16 Exercises
288(2)
7.17 Solutions to Practice Problems
290(5)
8 Type Inference
295(30)
8.1 Why Static Type Inference?
296(2)
8.2 Type Inference Rules
298(1)
8.3 Using Prolog
298(4)
8.4 The Type Environment
302(1)
8.5 Integers, Strings, and Boolean Constants
303(1)
8.6 List and Tuple Constants
304(1)
8.7 Identifiers
305(1)
8.8 Function Application
306(3)
8.9 Let Expressions
309(2)
8.10 Patterns
311(3)
8.11 Matches
314(1)
8.12 Anonymous Functions
315(1)
8.13 Sequential Execution
316(1)
8.14 If-Then and While-Do
316(1)
8.15 Exception Handling
317(1)
8.16
Chapter Summary
318(1)
8.17 Review Questions
318(1)
8.18 Exercises
319(3)
8.19 Solutions to Practice Problems
322(3)
9 Appendix A: The CoCo Virtual Machine Specification
325(10)
10 Appendix B: The Standard ML Basis Library
335(18)
References 353
Dr. Kent D. Lee is Professor of Computer Science at Luther College, Decorah, Iowa, USA. He is the author of the successful Springer textbook Python Programming Fundamentals and the forthcoming Data Structures and Algorithms with Python.