Table of Contents

Matthieu Peeters' Homepage

1 Why this page?

This page is to share my interests, and to promote my professional skills.

2 About me

I am Matthieu Peeters, a professional software developer/database designer/system architect, and many other things.

Curriculum vitae

3 Language

Although Dutch is my first language, the texts here will be written in English. This is because the documentation of technical subject is most often in English, and the audience can be bigger.

4 Digital electronic computers

The property of semiconducting materials to react in a predictable manner to differences in voltage has been used to build modern computers. Usually only one voltage difference is used, giving two states. This makes it possible to have an infinite range for both states (e.g. -∞ to +2.5 is "low", and +2.6 to +∞ is "high"). We can give a numeral meaning to those states, usually "low" means 0 and "high" means 1. Each unit in a computer that can have these two states is called a binary digit or bit. By encoding data like text or numbers in patterns of bits, they can be copied, manipulated and remembered. Manipulations can be series of mathematical operations, forms of summary, finding relations between pieces of data, and many other things.

4.1 Storing numbers in a computer

A common way of looking at the data in a computer is as a series of numbers that is stored in the memory. In this model each number has the same, on two sides limited, range. For example, a modern computer can have a memory of 16GB, this can be seen as the capacity to store 16*1024*1024*1024=17179869184 octets (bytes), where each octet has a range from 0 to 255. Each octet is made up of 8 bits.

Each octet in the memory of a computer has its own address. These addresses are also numbers. These numbers in turn, can be stored in the memory of the computer (although the are typically bigger than 255, see below), making it possible to link data together.

To store numbers bigger than 255, it is common to use more than one octet to encode the number. A number between 0 and 65535 would need 2 octets, in a manner that is comparable to using two characters to denote a number between 10 and 99.

There are also methods to store numbers that can be negative, fractions, fractions with a fixed denominator, numbers of unknown magnitude, and approximations. They can use different amounts of space depending on the range and precision that is needed.

4.2 Storing text in a computer

Modern computers are influenced by lots of older technology. Among them are typewriters, telex/telegraph, and printing-presses. All those systems employ a limited set of characters (letters, digits, punctuation marks, etc.) to enable the user to communicate words and other text. To enable the use of computers for these purposes, each character is mapped to a number. For example, the capital letter A is mapped to 65, and the ! is mapped to 33. Originally, all common English characters fitted within the range from 0 to 127, and one octet was more than enough to store one character.

Since computers are used all over the world, more characters characters were needed, and new ways to store them.

4.3 Further reading

Bits and bytes

Note that the external storage and many other things are ignored here for brevity

The Origin of the Stored Program Concept

5 Databases

A Database is a system for storing organized data. Classical examples are telephone books, library indices, or tidal almanacs. These days most databases are stored on computers, and many of them are published online. For example, Wikipedia, the world fact-book, or the Land Registry.

There are different systems to store and retrieve data efficiently. The computerized version of those are called database management systems. Some of their properties will be discussed here.

5.0.1 Basic types

By the nature of digitally coded data, and for the capabilities of electronic computers there are two very common patterns to store data.

The first one is a fixed amount of space for a fixed range of discrete values. For example, the values from -2147483648 to +2147483647 can be stored/encoded in tree bytes. There are many variants on this theme, some of which are described later.

The second is a list of characters,

5.0.2 Records

5.0.3 Schemata

5.1 Database types

5.1.1 Relational Databases

5.1.2 Semantic Databases

5.1.3 File systems

5.2 DBMS's

All database systems have their uses, their strong and weak spots. But some database systems are more suitable for general purpose storage.

5.2.1 SQLite and mariaDB

SQLite is a method of storing structured but untyped data together with indexes, the use of SQL is more a coincident. MariaDB is developed to avoid sending error messages when problems arise, but just to guess what the programmer intends. And standard it has its own syntax for SQL.

5.2.2 PostgreSQL and MS SQL Server

Both are very complete and well developed. Microsoft SQL Server is an obvious choice when working with C# and for Windows developers. PostgreSQL is open source and fits well on a Unix-like operating system.

5.2.3 OrientDB and Neo4j

  1. SPARQL, Gremlin, and Prolog

6 Number encoding in a computer

6.1 ASCII coded decimal

6.2 Binary coded decimal

6.3 Positive whole numbers

6.4 Negative numbers

6.5 Fractions

6.6 Fixed point

6.7 Unlimited range

6.8 Floating point

7 Demolition Man

8 Lisp

8.1 Common Lisp

8.2 Scheme

8.3 LFE

8.4 Clojure

9 Mathematical notation

9.1 Exponent/Log/Root

A simple symbol to make the notation of these related mathematical operations easier.

Trisymbol notation

9.2 Digits

9.3 Dutch and German pronunciation of numbers

9.4 10 or 12

9.5 Notation for negatives

9.6 Notation for addition

Author: Matthieu Peeters

Created: 2018-07-16 Mon 16:59