Programming Langueges: Their Core Concepts
There is a huge number of different programming languages, and each brings different programming concepts with it, such as functions, type, scope, class, and inheritance. While many of these concepts are applicable to multiple languages, some are unique to just one. This book sets out to explore why these concepts exist.
It does so by looking at and comparing multiple languages from the perspective of their designers, and explaining how they have changed over time. By understanding why these concepts exist, you will not only be able to decide when, how, or even whether to use them; it will also far be easier to understand any new concepts that may be developed in the future.
It was published on April 2013 in Japan.
It was the bestseller in Amazon programming category. It was the bestseller among computer related books published in 2013.
It was also published in Korean and Chinese.
Now it is being translated to English. Early drafts are available on Github.
Cover of the Japanese version
TABLE OF CONTENTS
- Chapter 1: How to learn programming languages more effectively
- 1.1 Learning by comparison
- 1.2 Learning from history
- 1.3 Summary
- Chapter 2: An overview of programming languages
- 2.1 The history of programming languages
- 2.2 Why programming languages were invented
- 2.3 Summary
- Chapter 3: The birth of syntax
- 3.1 What is syntax?
- 3.2 Stack machines and FORTH
- 3.3 Syntax trees and LISP
- 3.4 Infix notation
- 3.5 Summary
- Chapter 4: Controlling the flow of process
- 4.1 The birth of structured programming
- 4.2 Before "if"
- 4.3 "while" ── an expression that makes if loops easier to read
- 4.4 "for" ── an expression to make reading while increase number easier
- 4.5 Summary
- Chapter 5: Functions
- 5.1 The role of functions
- 5.2 Return orders
- 5.3 Recursive calls
- 5.4 Summary
- Chapter 6: Error handling
- 6.1 Programs can fail too
- 6.2 How is failure expressed?
- 6.3 Syntax that contains erroneous code
- 6.4 Creating just one exit
- 6.5 When are exceptions thrown
- 6.6 Exception propagation
- 6.7 Summary
- Chapter 7: Naming and scope
- 7.1 Why was naming necessary
- 7.2 Evolution of scope
- 7.3 Lexical scope
- 7.4 Summary
- Chapter 8: Types
- 8.1 What is a type?
- 8.2 Methods that express a value as on or off
- 8.3 How many on/off are required for a digit?
- 8.4 How do we express real numbers?
- 8.5 What is the purpose of types?
- 8.6 Type development
- 8.7 Summary
- Chapter 9: Containers and character strings
- 9.1 There are many different kinds of containers
- 9.2 Why are there many kinds of containers?
- 9.3 Dictionaries, Hash and Associative arrays
- 9.4 What is a character
- 9.5 What is a character string?
- 9.6 Summary
- Chapter 10: Parallel processing
- 10.1 What is parallel processing?
- 10.2 Divide finely and execute
- 10.3 2 approaches to switching processes
- 10.4 How to prevent conflicts
- 10.5 Lock problems and solutions
- 10.6 Summary
- Chapter 11: Objects and classes
- 11.1 What is object orientation?
- 11.2 Creating models by linking variables and functions
- 11.3 Method 1: Modules and packages
- 11.4 Method 2: Functions are also hashes
- 11.5 Method 3: Closures
- 11.6 Method 4: Classes
- 11.7 Summary
- Chapter 12: Reusing code through inheritance
- 12.1 What is inheritance
- 12.2 Multiple inheritance
- 12.3 Problems with multiple inheritance ── conflicts again
- 12.4 Summary
Contact me: nishio (dot) hirokazu (at) gmail (dot) com
Profile of NISHIO Hirokazu