Chapter 1. Introduction

Note!  Fields with this color are comments about the book.

Vi skal afklare målgruppen. Er det kun computer science studerende eller er det bredere som f.eks. studerende i informationsvidenskab på humaniora - hvor Anne Sofie læste? Tænker det skal være den brede målgruppe.

Vi bør checke hvordan andre lærebøger i programmering starter -- hvad siger de indledningsvis? Abelson og Sussman: Structure and Interpretation of Computer Programs, starter med at sige at det handler om computational processes "Abstract beings that inhabit computers. As they evolve, processes manipulate other abstract things called data. The evolution of a process is directed by a pattern of rules called a program". \
Kristen snakker informations processer så sikkert en god ide at snakke processer.\
Men i vores verden er en process næppe en "abstract being", men ret så konkret -- en fysisk model i en computer.

Mange bøger starter med en temmelig lang liste over emner før de kommer til at snakke programmering.
Budd: An Intro to OOP, har en del kapitler om abstraktion, OO design mm, inden han kommer til the beef.
Det bør vi undgå. Vi skal selvfølgelig have et kap om abstraktion, men det må være et stykke inde i bogen.

We should say somehting about the form of a programming languages and introduce notions like data-items, keywords, block, expressions, statements, etc. And perhaps abstraction mechanisms like class, method and function!?

We may use a slightly modified version of the start og section 2 (until section 2.1) of the Beta Book here.

Abelson and Sussman in section 1.1 describes the elements of programming language: : primitive expressions, means of combination, abstraction. Then they say we have two kinds of objects: procedures and data. We may base our definition of a PL on theirs.

All information systems, applications on a PC, apps on a smartphone, etc have been described in a language that can instruct the computer to perform the tasks of application.
Such a language is called a programming language.

A programming language is intended for people to describe instructions for a computer. In order to execute a program on a computer, the program must be translated into a set of instructions that can be immediately processed by a computer. A language for describing such instructions is called a machine language.
The translation of a program written in a given programming language to machine language may be carried out by an application which is usually called a compiler.

A figure showing a program as input to a compilere producing machine code.

OOP was originally introduced by the language SIMULA developed by Ole-Johan Dahl and Kristen Nygaard in the sixties at the Norwegian Computing Center.
OOP is the dominant style of programming and languages like, C++, Java, C#, and Python all belong to the family of object-oriented programming languages.

In this book, we use a neutral language notation inspired by the Beta language to be independent of mainstream languages.
But there will be chapters showing how to implement the notation in mainstream languages - but not yet ready!