Great Deals on Used Textbooks & New Textbooks!               
My Account | Help Desk | Market Place Shopping Cart
Free shipping. Click here for details.
No items in cart.
Total: $0.00
Textbooks Sell Textbooks Books Supplies Medical Books College Apparel Movies Clearance
Search  Advanced >>
Related Topics: Computers
Programming Language Concepts, 3rd Edition,9780471104261
Other versions by this Author
Details>>

Programming Language Concepts, 3rd Edition


Author(s): Carlo Ghezzi (Politecnico di Milano, Italy); Mehdi Jazayeri (Technische Univ. Wien )
ISBN10:  0471104264
ISBN13:  9780471104261
Format:  Paperback
Pub. Date:  6/1/1997
Publisher(s): Wiley

Buy in Bulk
Send to a friend
New Price  $111.79
List Price $114.66
eVIP Price  $106.21
New Copy:  Usually Ships in 2-3 Business Days
add remove
Marketplace Price $3.59
List Price $114.66 Available in the eCampus Marketplace
Take 90 Days to Pay on $250 or more
with Quick, Easy, Secure
Subject to credit approval.
SummaryTable of Contents
This book explains and illustrates key concepts of programming by taking a breadth approach to programming languages. It uses C++ as the primary language throughout, demonstrating imperative, functional and object-oriented language concepts.
1 Introduction
1(32)
1.1 Software development process
1(3)
1.2 Languages and software development environments
4(1)
1.3 Languages and software design methods
5(3)
1.4 Languages and computer architecture
8(2)
1.5 Programming language qualities
10(4)
1.5.1 Languages and reliability
11(1)
1.5.2 Languages and maintainability
12(1)
1.5.3 Languages and efficiency
13(1)
1.6 A brief historical perspective
14(9)
1.6.1 Early high-level languages
17(1)
1.6.2 Early schisms
18(1)
1.6.3 Consolidation
19(1)
1.6.4 The next leap forward
19(1)
1.6.5 The experimental 70s
20(1)
1.6.6 The 80s and object orientation
21(1)
1.6.7 The current stage
22(1)
1.7 A bird's-eye view of programming language concepts
23(8)
1.7.1 A simple program
23(2)
1.7.2 Syntax and semantics
25(1)
1.7.3 Semantic elements
25(3)
1.7.3.1 Variables
25(1)
1.7.3.2 Values and references
26(1)
1.7.3.3 Expressions
27(1)
1.7.4 Program organization
28(2)
1.7.5 Program data and algorithms
30(1)
1.7.5.1 Data
30(1)
1.7.5.2 Computation
31(1)
1.7.6 External environment
31(1)
1.8 Bibliographic notes
31(1)
1.9 Exercises
32(1)
2 Syntax and semantics
33(78)
2.1 Language definition
34(12)
2.1.1 Syntax
34(5)
2.1.1.1 Abstract syntax, concrete syntax, and pragmatics
38(1)
2.1.2 Semantics
39(7)
2.1.2.1 An introduction to formal semantics
40(6)
2.2 Language processing
46(4)
2.2.1 Interpretation
46(1)
2.2.2 Translation
47(2)
2.2.3 The concept of binding
49(1)
2.3 Variables
50(11)
2.3.1 Name and scope
51(2)
2.3.2 Type
53(4)
2.3.3 l-value
57(1)
2.3.4 r-value
57(2)
2.3.5 References and unnamed variables
59(2)
2.4 Routines
61(6)
2.4.1 Generic routines
66(1)
2.5 Aliasing and overloading
67(2)
2.6 An abstract semantic processor
69(3)
2.7 Run-time structure
72(34)
2.7.1 C1: A language with only simple statements
73(1)
2.7.2 C2: Adding simple routines
74(3)
2.7.3 C3: Supporting recursive functions
77(5)
2.7.4 C4: Supporting block structure
82(8)
2.7.4.1 Nesting via compound statements
83(3)
2.7.4.2 Nesting via locally declared routines
86(4)
2.7.5 C5: Toward more dynamic behaviors
90(3)
2.7.5.1 Activation records whose size becomes known at unit activation
91(1)
2.7.5.2 Fully dynamic data allocation
92(1)
2.7.6 The structure of dynamic languages
93(4)
2.7.6.1 Dynamic typing
94(1)
2.7.6.2 Dynamic scoping
95(2)
2.7.7 Parameter passing
97(9)
2.7.7.1 Data parameters
97(5)
2.7.7.2 Routine parameters
102(4)
2.8 Bibliographic notes
106(1)
2.9 Exercises
107(4)
3 Structuring the data
111(62)
3.1 Built-in types and primitive types
112(3)
3.2 Data aggregates and type constructors
115(13)
3.2.1 Cartesian product
115(2)
3.2.2 Finite mapping
117(3)
3.2.3 Union and discriminated union
120(2)
3.2.4 Powerset
122(1)
3.2.5 Sequence
123(1)
3.2.6 Recursion
123(4)
3.2.6.1 Insecurities of pointers
125(2)
3.2.7 Compound values
127(1)
3.3 User-defined types and abstract data types
128(8)
3.3.1 Abstract data types in C++
129(4)
3.3.1.1 Constructors
130(1)
3.3.1.2 Genericity
131(1)
3.3.1.3 Destructors
132(1)
3.3.2 Abstract data types in Eiffel
133(3)
3.3.2.1 Generic abstract data types
136(1)
3.4 Type systems
136(13)
3.4.1 Static versus dynamic program checking
137(1)
3.4.2 Strong typing and type checking
138(1)
3.4.3 Type compatibility
139(3)
3.4.4 Type conversions
142(2)
3.4.5 Types and subtypes
144(1)
3.4.6 Generic types
145(1)
3.4.7 Summing up: Monomorphic versus polymorphic type systems
146(3)
3.5 The type structure of representative languages
149(11)
3.5.1 Pascal
149(2)
3.5.2 C++
151(2)
3.5.3 Ada
153(7)
3.6 Implementation models
160(9)
3.6.1 Built-in primitive types and enumerations
160(1)
3.6.2 Structured types
161(8)
3.6.2.1 Cartesian product
162(1)
3.6.2.2 Finite mapping
163(1)
3.6.2.3 Union and discriminated union
164(1)
3.6.2.4 Powerset
165(1)
3.6.2.5 Sequence
166(1)
3.6.2.6 Classes
166(1)
3.6.2.7 Pointers and garbage collection
167(2)
3.7 Bibliographic notes
169(1)
3.8 Exercises
170(3)
4 Structuring the computation
173(66)
4.1 Expressions and statements
174(5)
4.2 Conditional execution and iteration
179(7)
4.2.1 Conditional execution
179(3)
4.2.2 Iteration
182(4)
4.3 Routines
186(6)
4.3.1 Style issues: Side effects and aliasing
188(4)
4.4 Exceptions
192(15)
4.4.1 Exception handling in Ada
194(3)
4.4.2 Exception handling in C++
197(3)
4.4.3 Exception handling in Java
200(1)
4.4.4 Exception handling in Eiffel
201(3)
4.4.5 Exception handling in ML
204(1)
4.4.6 A comparative evaluation
205(2)
4.5 Pattern matching
207(3)
4.6 Nondeterminism and backtracking
210(2)
4.7 Event-driven computations
212(1)
4.8 Concurrent computations
213(22)
4.8.1 Processes
218(1)
4.8.2 Synchronization and communication
219(10)
4.8.2.1 Semaphores
220(2)
4.8.2.2 Monitors and signals
222(3)
4.8.2.3 Rendezvous
225(2)
4.8.2.4 Summing up
227(2)
4.8.3 Implementation models
229(6)
4.8.3.1 Semaphores
232(1)
4.8.3.2 Monitors and signals
233(1)
4.8.3.3 Rendezvous
234(1)
4.9 Bibliographic notes
235(1)
4.10 Exercises
236(3)
5 Structuring the program
239(46)
5.1 Software design methods
241(1)
5.2 Concepts in support of modularity
242(7)
5.2.1 Encapsulation, interface, and implementation
242(2)
5.2.2 Separation of interface and implementation
244(3)
5.2.3 Separate and independent compilation
247(1)
5.2.4 Libraries of modules
248(1)
5.3 Language features for programming in the large
249(26)
5.3.1 Pascal
250(3)
5.3.2 C
253(3)
5.3.2.1 Encapsulation
253(1)
5.3.2.2 Interface and implementation
253(1)
5.3.2.3 Program organization
254(2)
5.3.3 C++
256(6)
5.3.3.1 Encapsulation
256(1)
5.3.3.2 Program organization
257(2)
5.3.3.3 Grouping of units
259(3)
5.3.4 Ada
262(8)
5.3.4.1 Encapsulation
262(1)
5.3.4.2 Interface and implementation
262(1)
5.3.4.3 Program organization
263(2)
5.3.4.4 Separate compilation
265(1)
5.3.4.5 Ada's private type
266(2)
5.3.4.6 Grouping of units
268(2)
5.3.5 ML
270(4)
5.3.5.1 Encapsulation
270(2)
5.3.5.2 Interface and implementation
272(2)
5.3.6 Abstract data types, classes, and modules
274(1)
5.4 Generic units
275(6)
5.4.1 Generic data structures
275(1)
5.4.2 Generic algorithms
276(3)
5.4.3 Generic modules
279(1)
5.4.4 Higher levels of genericity
279(2)
5.5 Final remarks
281(1)
5.6 Bibliographic notes
282(1)
5.7 Exercises
282(3)
6 Object-oriented languages
285(48)
6.1 Concepts of object-oriented programming
287(6)
6.1.1 Classes of objects
288(1)
6.1.2 Inheritance
289(1)
6.1.3 Polymorphism
290(2)
6.1.4 Dynamic binding of calls to member functions
292(1)
6.2 Inheritance and the type system
293(9)
6.2.1 Subclasses versus subtypes
294(1)
6.2.2 Strong typing and polymorphism
294(5)
6.2.2.1 Type extension
295(1)
6.2.2.2 Overriding of member functions
295(4)
6.2.3 Inheritance hierarchies
299(3)
6.2.3.1 Single and multiple inheritance
300(1)
6.2.3.2 Implementation and interface inheritance
301(1)
6.3 Object-oriented features in programming languages
302(25)
6.3.1 C++
302(6)
6.3.1.1 Classes
303(1)
6.3.1.2 Virtual functions and dynamic binding
304(1)
6.3.1.3 Pure virtual functions for specification
305(1)
6.3.1.4 Protected members
305(2)
6.3.1.5 Overloading, polymorphism, and genericity
307(1)
6.3.2 Ada 95
308(3)
6.3.2.1 Tagged types
308(2)
6.3.2.2 Dynamic dispatch through classwide programming
310(1)
6.3.2.3 Abstract types and routines
311(1)
6.3.3 Eiffel
311(2)
6.3.3.1 Classes and object creation
311(1)
6.3.3.2 Inheritance and redefinition
312(1)
6.3.4 Smalltalk
313(4)
6.3.4.1 Classes and inheritance
313(2)
6.3.4.2 Variables and dynamic typing
315(1)
6.3.4.3 The pervasive role of objects
315(2)
6.3.4.4 The Smalltalk environment
317(1)
6.3.5 Java
317(10)
6.3.5.1 Classes and inheritance
318(2)
6.3.5.2 Interface and inheritance
320(1)
6.3.5.3 Abstract classes and abstract methods
321(1)
6.3.5.4 Packages and programming in the large
322(1)
6.3.5.5 Package access
322(1)
6.3.5.6 Threads and synchronization
323(4)
6.4 Final remarks
327(1)
6.5 Bibliographic notes
327(2)
6.6 Exercises
329(4)
7 Functional programming languages
333(38)
7.1 Characteristics of imperative languages
334(1)
7.2 Mathematical and programming functions
335(1)
7.3 Principles of functional programming
336(6)
7.3.1 Values, bindings, and functions
337(1)
7.3.2 Lambda calculus: A model of computation by functions
338(4)
7.4 Representative functional languages
342(21)
7.4.1 LISP
342(5)
7.4.1.1 Data objects
343(1)
7.4.1.2 Functions
343(3)
7.4.1.3 Functional forms
346(1)
7.4.1.4 LISP semantics
347(1)
7.4.2 APL
347(5)
7.4.2.1 Data objects
347(1)
7.4.2.2 Functions
348(1)
7.4.2.3 Functional forms
349(2)
7.4.2.4 An APL program
351(1)
7.4.3 ML
352(11)
7.4.3.1 The list data object and its operations
353(1)
7.4.3.2 Bindings, values, and types
353(1)
7.4.3.3 Functions
354(1)
7.4.3.4 Functional forms
355(1)
7.4.3.5 Type system
356(3)
7.4.3.6 Type inference
359(2)
7.4.3.7 Modules
361(2)
7.5 Functional programming in C++
363(5)
7.5.1 Functions as objects
364(1)
7.5.2 Functional forms
364(3)
7.5.3 Type inference
367(1)
7.6 Final remarks
368(1)
7.7 Bibliographic notes
368(1)
7.8 Exercises
369(2)
8 Logic and rule-based languages
371(31)
8.1 "What" versus "how": Specification versus implementation
371(6)
8.1.1 A first example
373(2)
8.1.2 Another example
375(2)
8.2 Principles of logic programming
377(12)
8.2.1 Preliminaries: Facts, rules, queries, and deductions
377(6)
8.2.2 An abstract interpretation algorithm
383(6)
8.3 PROLOG
389(4)
8.4 Functional programming versus logic programming
393(2)
8.5 Rule-based languages
395(3)
8.6 Bibliographic notes
398(1)
8.7 Exercises
399(3)
9 Languages in context
402(7)
9.1 Execution context
403(2)
9.2 Development context
405(1)
9.3 Final remarks
406(1)
9.4 Bibliographic notes
406(3)
Appendix: Language references 409(2)
Bibliography 411(8)
Index 419

Check Out These Items!
eCampus.com Pink Backpack eCampus.com Pink Backpack
Retail Price $28.95
Our Price $10.00
eCampus.com T-Shirt eCampus.com T-Shirt
Retail Price $14.99
Our Price $2.00
eCampus.com 4GB USB Drive eCampus.com 4GB USB Drive
Retail Price $32.95
Our Price $25.00
  Buy Textbooks
  Sell Textbooks
  College Apparel
  Shop by School
  Virtual Bookstores
  Order Status
  Shipping Rates
  Return Policy
  Marketplace Info
  F.A.S.T.
  Contact Us
  Privacy Policy
  Legal Notices
  Site Security
  Employment
  Help Desk
  eCampus Blog
  Affiliate Program
  Bulk Orders
  College Marketing
HACKER SAFE certified sites prevent over 99.9% of hacker crime.
eCampus.com blog follow eCampus.com on twitter find eCampus.com on facebook RSS Need Help? eService@ecampus.com   Copyright© 1999-2008     
.