ARS Based Programming, zu deutsch ARS-basierte Programmierung, ist auf den folgenden drei Prinzipien
aufgebaut:
Abstraktion, Referenz und Synthese (ARS).
Diese Prinzipien sind zwar aus dem Lambda-Kalkül abgeleitet,
gehen aber im Abstraktionsgrad über dieses hinaus und können deswegen allen drei großen Paradigmen der Programmierung als Grundlage dienen, nämlich der funktionalen, der objekt-orientierten
und der imperativen Programmierung.
Ein Einüben in ARS-basierte Programmierung führt zu einem schnellen und tiefen Verständnis des Wesens der Programmierung und
führt zu einer Vertrautheit mit mächtigen Denkmustern, die in den meisten Programmiersprachen angewandt werden können
und das Erlernen dieser Sprachen wesentlich erleichtern und beschleunigen.
Dieser Ansatz in der Behandlung der Grundlagen der Programmierung
wird im Detail in dem Buch Programmierung pur ausgeführt.
Das Buch ist im April 2003 im S.Toeche-Mittler Verlag in Darmstadt erschienen.
Zur Untersützung der ARS-basierten Programmierung werden drei Werkzeuge angeboten:
-
A++, eine minimalistische Programmiersprache mit einem Interpreter
für die Einführung in die Programmierung,
die eine rigorose Konfrontation mit dem Wesentlichen der Programmierung herbeiführt.
Der Name A++ ist abgeleitet aus
abstraction plus reference plus synthesis.
-
ARS++, eine Programmiersprache mit einer eigenen virtuellen Maschine
und einem Compiler aus A++ entwickelt wurde, und als ars-kompatible Programmiersprache mit einer
über Scheme hinausgehenden Funktionalität den Anforderungen der Programmierpraxis
standhalten kann.
-
ARSAPI, eine Brücke zwischen ARS und den populären
Programmiersprachen Java, C und C++, die aus Definitionen und empfohlenen Programmiermustern besteht,
mit deren Hilfe ARS in die Zielsprache leicht umgesetzt werden kann.
ARS stellt eine Verallgemeinerung der drei grundlegenden Operationen im Lambda-Kalkül dar.
Diese ARS begründenden verallgemeinerten Grundoperationen können folgendermaßen kurz
beschrieben werden:
Verallgemeinerte Grundoperationen des Lambda-Kalküls (ARS):
|
Abstraktion: etwas einen Namen geben.
|
|
Referenz: auf etwas mit seinem Namen Bezug nehmen.
|
|
Synthese: aus zwei Dingen etwas Neues erzeugen.
|
ARS stellt eine Verallgemeinerung der Grundoperationen des
Lambda-Kalküs in dem Sinn dar, dass die Grundoperation der Abstraktion
den vollen Sinn des Wortes 'etwas einen Namen geben' behält und
dass alle drei Operationen irgendwo in einem Programm ohne Einschränkungen
angewandt werden können.
Die folgenden Definitionen in
EBNF notation definieren A++ als eine
Programmiersprache im Gegensatz zum Lambda-Kalkül.
<expression>
|
::=
|
<abstraction> |
|
(1)
|
|
|
<reference> |
|
|
|
|
<synthesis>
|
|
<abstraction>
|
::=
|
'('define <variable> <expression>')'
|
|
(2)
|
|
|
'(lambda('{<variable>}')'
|
|
|
|
<expression> {<expression>}')'
|
|
<reference>
|
::=
|
<variable>
|
(3)
|
<synthesis>
|
::=
|
'(' <expression> {<expression>} ')'
|
(4)
|
<variable>
|
::=
|
<symbol>
|
(5)
|
Bezüglich weiterer Details zu A++ siehe:
hier.
EBNF Notation:
-
| senkrechter Strich steht für 'oder'
-
[ ... ] eckige Klammern kennzeichnen optionale Ausdrücke
-
{ ... } mittels geschweifter Klammern wird Wiederholung ausgedrückt: 0 oder
n-mal
-
' ... ' der Apostroph kennzeichnet wörtlichen zu nehmenden Text
-
( ... ) einfache Klammern dienen der Gruppenbildung
-
< ... > kennzeichnen Terme
The Verallgemeinerung des Lambda-Kalküls erfolgt in dreifacher Hinsicht:
-
Einer gebildeten Abstraktion kann explizit ein Name vergeben werden und eine
solche Abstraktion kann an beliebiger Stelle in einem Programm erfolgen.
-
Der Hauptteil einer Lambda-Abstraktion kann aus mehr als einem
Lambda-Ausdruck bestehen.
-
Eine Synthese kann mehrere Lambda-Ausdrücke vereinigen.
Programmierung:
fundamental und ohne Grenzen
|
Eine konsequente Anwendung der Grundoperationen des
Lambda-Kalküls, Abstraktion, Referenz
und Synthese (ARS), führt hin zu
Mustern der Programmierung, die einfach und dennoch
sehr mächtig sind und die sich in fast jeder
Programmiersprache anwenden lassen.
|
In dem Buch Programmierung pur werden die Grundlagen
dieser Programmierung vorgestellt und angewandt auf
fünf Programmiersprachen Scheme, Java, Python, C
und C++.
|
|