Post by Carsten Kruegerwie kann man am besten Begründen, daß z.B. HTML und SQL keine
Programmiersprachen sind?
Wenn ich mich recht erinnere, engagierst Du dich zu diesem
Thema bereits seit einer Weile in de.soc.recht.marken+urheber
und seit kurzem auch in de.sci.mathematik und vertrittst dort
teilweise sehr bestimmt und nachdrücklich die Ansicht, daß
jede Programmiersprache turingvollständig sein müsse.
Da in dieser Runde ein neuer Verlauf eröffnet wurde, fasse
ich den bisherigen Erkenntnisstand noch einmal zusammen:
Ein "Programm" ist ein Werk, das Informationen enthält, die
Aspekte eines Prozesses bestimmen (einschränken) können. Der
Schöpfer des Werkes steuert den Prozeß dabei also nicht selber
interaktiv (wie ein Auto), sondern durch eine Vorausverfügung
(das Programm), ohne daß er bei dem Prozeß anwesend sein muß.
Durch eine HTML-Quelle wird eben der Anzeige- und
Interaktionsprozeß beim Betrachten der Seite mitbestimmt,
vorausbestimmt oder eben "programmiert". (Es gab früher
auch Bücher zum »Programmierten Lernen«: »Wenn Sie die
Antwort A für richtig halten, lesen Sie auf Seite 73 weiter.«)
Die Art der Programmierung ist in HTML aber weniger imperativ
als deklarativ. Der Autor baut ein Textmodell auf. Dadurch
legt er den Prozeß nicht genau fest. Schließlich muß eine
HTML-Seite gar nicht in einem Browser betrachtet werden,
sondern sie kann auch ausgedruckt oder maschinell vorgelesen
werden.
Der Programmierer bestimmt nicht genau, was wann passiert,
sondern legt nur bestimmte Informationen und Einschränkungen
fest. Dadurch bestimmt er bestimmte Aspekte der Verarbeitung
einer HTML-Quelle mit, ohne alles genau und vollständig zu
kontrollieren. Selbst bei klassischen imperativen Sprachen
wird nicht alles genau festgelegt, in BASIC bei "PRINT 10"
beispielsweise weder Farbe noch Schriftart der "10".
Daher kann man schon sicher sagen, daß HTML keine /imperative/
Programmiersprache sei. Man sieht aber auch bestimmte
deklarative Sprachen, wie Prolog, als "Programmiersprachen"
an. In Prolog beschreibt man vorwiegend Aussagenmengen, in
HTML eine Hypertextstruktur. Dadurch ist die Art der
Prozeßsteuerung indirekter als bei imperativen Sprachen.
Es gibt eben anerkannte Autoren, die den Begriff
"Programmieren" sogar noch weiter auslegen. Ich zitiere hier
einmal aus dem folgenden de-Gruyter-Lehrbuch:
"Methodisches Programmieren - Entwicklung von Algorithmen
durch schrittweise Verfeinerung" von
Dr. Günter Hommel, Professor für Informatik an der
Technischen Universität München;
Dr. Stefan Jänichen, Hochschulassisten am Fachbereich
Informatik der Technischen Universität Berlin; und
Cornelis H. A. Koster, Professor für Informatik an der
Katholieke Universiteit Nijmegen.
(Berlin; New York: de Gruyter, 1983; ISBN 3-11-009636-6)
Das Zitat lautet:
Unter Programmieren verstehen wir den Versuch, ein Ziel
durch den systematischen Einsatz vorgegebener Mittel zu
erreichen. Erfolgreiches Programmieren setzt genaue
Kenntnisse über Ziel und Mittel voraus, vor allem aber
Erfahrung im systematischen Überbrücken der Lücke zwischen
dem Problem und den verfügbaren Mitteln. Programmieren ist
eine sehr allgemeine, bestimmt nicht auf die Informatik
beschränkte, menschliche Tätigkeit:
Fernseh-Programmierung
Fernseh-Programmierung ist der Versuch, innerhalb eines
vorgegebenen Budgets und gewisser physikalischer
Resourcen, einen angenehmen und interessanten
Fernsehabend aus vorgegebenen Western, Quiz und anderen
Produktionen zusammenzustellen.
Lineare Programmierung
Lineare Programmierung ist z.B. die Technik, aus
Fleisch, Casein, Gewürzen u.s.w. mit gegebenen Preisen
eine Wurst zusammenzustellen, die den gesetzlichen
Bestimmungen nicht widerspricht und maximalen Profit
bringt.
Computer-Programmierung
Computer-Programmierung ist nur dadurch besonders
gekennzeichnet, daß der Computer als Prozessor zum
Ausführen von Algorithmen verwendet wird, die zur
Durchführung gewisser Aufgaben erstellt werden.
(Ende des Zitats)
Also, wenn diese Hochschulprofessoren der Informatik davon
sprechen, einen Fernsehabend oder eine Wurst zu programmieren,
wer will es dann als sicher falsch bezeichnen, wenn jemand von
»Webseiten programmieren« spricht?
Allerdings verwenden manche Menschen tatsächlich das
Wort »Programm« als eine Art von Synekdoche, wenn
»Text einer formalen Sprache« treffender wäre, weil ihnen der
Begriff »formale Sprache« nicht bekannt ist. Möglicherweise
ist mit »Computerprogramm« in manchen Texte ein
»von Menschen geschriebener und zur maschinellen Verarbeitung
geeigneter Text einer formalen Sprache« gemeint.
Andere meinen mit »programmieren« wiederum nur
»imperativ-prozedurales Programmieren« und haben so
umgekehrt ein zu enges Verständnis des Begriffs.
Anhang: Ein Tic-Tac-Toe-Spiel in reinem HTML:
http://www.geocities.com/flo_kreidler/tictactoe.html
Post by Carsten KruegerWo finde ich eine Definition von einem Informatikpapst die
explizit besagt, daß eine Programmiersprache turingmächtig sein
muss?
Turingvollständigkeit wird von einer Programmiersprache nicht
verlangt. Laut des Fachgebrauchs (bestimmte
SPS-Programmiersprachen sind nicht turingvollständig) und der
relevanten Norm
ISO/IEC 2382-1:1993, Information technology -- Vocabulary
-- Part 1: Fundamental terms
DIN-Normen werden meist verträglich mit solchen ISO-Normen
gestaltet. Außerdem dienen diese ISO-Begriffsnormen auch als
Grundlage für ISO-Normen zu speziellen Sprachen und Techniken.
Auch die amerikanischen Normen folgen den ISO-Begriffen:
http://www.incits.org/tc_home/k5htm/p3.htm#programming_language
Ursprünglich wurde ja die Frage nach »Programm« in
juristischen Texten diskutiert.
Manche Menschen verwenden das Wort »Programm« als eine Art von
Synekdoche, wenn »Text einer formalen Sprache« treffender
wäre, weil ihnen der Begriff »formale Sprache« nicht bekannt
ist. Möglicherweise ist mit »Computerprogramm« auch in manchen
Rechtsnormen ein »von Menschen geschriebener und zur
maschinellen Verarbeitung geeigneter Text einer formalen
Sprache« gemeint.
Andere meinen mit »programmieren« wiederum nur
»imperativ-prozedurales Programmieren« und haben so
umgekehrt ein zu enges Verständnis des Begriffs.
Inzwischen habe ich einen ISO-Normentwurf gefunden, der
anscheinend sogar speziell zur Klärung der Begriffe »Programm«
und »Programmiersprache« für den Geschäftsverkehr und die
Rechtssprechung gedacht ist:
ISO/IEC JTC 1/SC 32/WG1 N 0210R
Languages and Jurisdiction: "Natural", "Special",
"Official", "Artificial", "Indexing", "Programming," etc.
http://metadata-standards.org/metadata-stds/Document-library/Meeting-reports/SC32WG2/2002-05-Seoul/WG2-SEL-003-Languages-&-Jurisdiction-(WG1N210r).rtf
http://jtc1sc36.org/doc/36N0463.pdf
http://vocabulary.jtc1sc36.org/doc/SC36_WG1_N0058.pdf
Auch dort findet sich nichts von »turingmächtigkeit«.
Für Informatiker sind nocht die folgenden Quellen interessant,
die einen "Turing-Mythos" noch auf andere Weise in Frage stellen:
http://www.engr.uconn.edu/~dqg/papers/myth.pdf
http://www.cse.uconn.edu/~dqg/papers/cie05.pdf
http://c2.com/cgi/wiki?InteractiveComputationIsMorePowerfulThanNonInteractive