Educational Programming Langages
Educational Programming Langages
Introduction to A++
Purpose of A++ and Origin
ARS -- Generalization of the Lambda-Calculus
Name of the language
Motivations for the development of A++
To support an alternate method of teaching the principles of programming
To provide a learning tool for exploring the fundamentals of programming
To support a method teaching powerful programming patterns applicable to most languages
To open a new view of programming for many programmers:
Features of A++
Programming paradigms supported:
Constitutive Principles of A++
Basic abstractions derived from ARS
Development of Applications with A++
Internal Architecture of A++
Definition of A++ as Programming Language
Examples of A++ - Syntax
Linking Logic with the Physical World
Syntax of A++ including pre-defined primitive abstractions
Examples using pre-defined primitives of A++
Pre-defined primitive abstractions in A++
A++ including pre-defined primitives
General Programming Patterns and A++
Higher Order Function Pattern
Message Passing Pattern
Classes of objects
Instance of a class
Creating instances of a class
Essential features of object oriented programming
Relation between classes
Meta Object Protocol Pattern
Discovering the Power of A++
The IF- Abstraction
Extended Logical Abstractions
Application of extended logical abstractions
Application of numeric abstractions
Collections of Data
Basic abstractions for pairs
Basic utility abstractions for lists
Extended Numerical Abstractions
Decrementing a number: `pred'
Subtracting a number: `sub'
Comparing two numbers: `equaln'
Comparing two numbers: `gtp'
Comparing two numbers: `ltp'
Comparing two numbers: `gep'
Examples for recursion
Calculating the faculty of a number
Calculating the sum of elements of a list
Higher Order Functions
Creating a new function by composition: `compose'
Changing the arity of a function:`curry'
Converting all elements in a list: `map'
Converting the `map' function: `mapc'
Selecting elements from a given list: `filter'
Searching for an element in a given list: `locate'
Iterating through all elements of a list: `for-each'
Checking for a member in a set: `memberp'
Adding an element to a set: `addelt'
Combining two sets: `union'
Associative Lists in A++
Abstractions for associative lists
Application of associative lists
Testing the basic abstractions
Object Oriented Programming in A++
First example of object oriented programming in A++
Source code for constructor `make-account'
Testing class `account'
2nd example of object oriented programming in A++
3rd example of object oriented programming in A++
Imperative Programming in A++
Computer Resources for A++
Abstraction for displaying a number
Abstraction for displaying a boolean value
Abstraction for displaying lists
Installation of the A++ Interpreter
Initializing the A++ Interpreter
Initializing the A++ Interpreter part 1
Initializing the A++ Interpreter part 2
Initializing the A++ Interpreter part 3
Initializing the A++ Interpreter part 4
Initializing the A++ Interpreter part 5
Initializing the A++ Interpreter part 6
Initializing the A++ Interpreter part 7
Detailed Discussion of Addition and Multiplication
Addition of the numbers `two' and `three'
Multiplication of the numbers `two' and `three'
The Lambda Calculus
Syntax of Lambda Expressions
Basic Rules for Lambda Conversions
Notation used in Conversion Rules
Rules of Associativity
Testing the Y-Combinator in A++
A++ Source code of Y-Combinator test program
Running the Y-Combinator test program
Comments on the Y-Combinator test program
Background of the Author
Georg P. Loczewski 2004-03-05
Printed version of book typeset in LaTeX can be