Programmieren an Schulen

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Was ist denn die Definition einer Programmiersprache?
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

cofi hat geschrieben:Demnach waere auch SQL im Grunde keine, man programmiert nicht, sondern man beschreibt, was man haben moechte. Und spaetestens an dem Punkt wirds hanebuechen.
SQL ist nicht Turing-vollständig.
cofi hat geschrieben:Im Uebrigen ist TeX auch nur eine "Markup Language", aber man konnte damit den Mars Rover programmieren ;)
TeX schon. Ich würde TeX auch nicht als Markup-Sprache, sondern als Marcro-Sprache bezeichnen, obwohl man Markup damit leicht bewerkstelligen kann. SQL kann das wohl nicht. Ob allerdings Turing-Vollständigkeit ein adäquater Begriff ist, um Programmiersprachen von anderen Sprachen abzugrenzen, ist zwar sicherlich debattierbar, hat jedoch einiges für sich.

Gruß,
Mick.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Nach der Definition "Von einer Programmiersprache spricht man (vereinfacht ausgedrückt), wenn eine bestimmte Aufgabe durch eine Abfolge von Befehlen gelöst wird." ist leider auch Haskell keine Programmiersprache.

Ich halte sie daher für zu eng gefasst. Für funktionale Programmiersprachen kann ich Auswertungsregeln angeben. Derartige Regeln kann ich auch für HTML angeben, um ein HTML-Dokument zu einem formatierten Text "auszuwerten". Das ist ein bisschen grenzwertig aber immer noch besser als gleich in Entrüstungsstürme auszubrechen, wenn man HTML als Programmiersprache bezeichnet.

Programmiert HTML nicht die Anzeige in einen Browser?

Sind TeX oder LaTeX Programmiersprachen? TeX ist turning-komlett, aber das ist IMHO nicht entscheidend für die Definition. Niemand fordert, dass eine Programmiersprache alles berechnen kann. Muss sie überhaupt rechnen können? Wenn wir Turning-Komplettheit weglassen, was unterscheidet dann HTML von LaTeX? Ist Postscript eine Programmierspache, PDF (als deklaratives Subset) hingegen nicht? Ein PDF-Interpreter kann PDF-Dokumente anzeigen - sie also auswerten.

Sind domainspezifische Sprachen auch Programmiersprachen? Oder anders gefragt: Wann sind sie es nicht? Ist etwas zu deklarieren kein programmieren? Ist Prolog eine Programmiersprache? Wenn ja, warum ist SQL dann keine?

Hat eine Programmiersprache vielleicht Bedingungen und Schleifen? Dann könnte ich HTML und SQL den Status einer Programmiersprache aberkennen, ihn aber Haskell und Prolog gewähren.

Stefan
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

sma hat geschrieben:Für funktionale Programmiersprachen kann ich Auswertungsregeln angeben. Derartige Regeln kann ich auch für HTML angeben, um ein HTML-Dokument zu einem formatierten Text "auszuwerten". Das ist ein bisschen grenzwertig aber immer noch besser als gleich in Entrüstungsstürme auszubrechen, wenn man HTML als Programmiersprache bezeichnet.
Die Entrüstung stammt eher daher, dass man sich als Programmierer nicht in einen Topf werfen lassen möchte mit Leuten, von denen man annimmt, sie würden lediglich Mal-Programme bedienen. Der Abgrenzungsversuch über die verwendete Sprache ist dann bloß eine Übersprungshandlung.
sma hat geschrieben:Ist etwas zu deklarieren kein programmieren? Ist Prolog eine Programmiersprache? Wenn ja, warum ist SQL dann keine?

Hat eine Programmiersprache vielleicht Bedingungen und Schleifen? Dann könnte ich HTML und SQL den Status einer Programmiersprache aberkennen, ihn aber Haskell und Prolog gewähren.
Wie wär's damit: etwas ist eine Programmiersprache gdw. es eine formale Sprache ist und Rekursion (im landläufigen Sinne) ermöglicht (wobei simulierte Rekursion mittels Schleife + Stack auch "gilt"). SQL ist dann keine Programmiersprache. Ich mag es trotzdem. Es ist mir auch schon ein paar mal passiert, dass ich erst beim Versuch eine SQL-Query hinzuschreiben festgestellt habe, dass ich in Prolog gedacht habe und das, was ich tun will, mit SQL gar nicht geht. Das bringt mich jetzt auf eine Idee: gibt es eigentlich DBMS die man mit Prolog abfragen kann? Bin mal kurz googlen...

Gruß,
Mick.
BlackJack

@pillmuncher: Da fallen mir jetzt rekursive Framesets in HTML ein. Und XSLT ist auf jeden Fall eine Programmiersprache.

Schränkst Du es mit Rekursion/Schleifen nicht im Grunde schon wieder auf Turingvollständigkeit ein!?

@lunar: Also ich würde SQL zu Programmiersprachen zählen. Man hat einen Haufen Eingabewerte in Tabellen und beschreibt durch SQL-Anweisungen wie die verknüpft/ausgewertet/transformiert werden sollen, und bekommt Ergebnisse geliefert. Man kann rechnen, und Schleifen verstecken sich im Hintergrund ja auch, nur dass man die nicht explizit angibt, sondern der SQL-Compiler den Ablaufplan erzeugt. SQL ist halt nur nicht turingvollständig.
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

BlackJack hat geschrieben:Schränkst Du es mit Rekursion/Schleifen nicht im Grunde schon wieder auf Turingvollständigkeit ein!?
Ei, freilich! ;-)

Gruß,
Mick.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Wollen wir uns darauf einigen, dass SQL eine deklarative Programmiersprache ist?

http://de.wikipedia.org/wiki/Deklarative_Programmierung
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

derdon hat geschrieben:Wollen wir uns darauf einigen, dass SQL eine deklarative Programmiersprache ist?
Dann ist auch HTML eine...

Der englische Wikipedia-Artikel ist besser. Dort wird gesagt, deklarativ = kein expliziter Kontrollfluss = keine Schleifen oder Rekursion notwendig.

Wikipedia sagt zu "programming language": "A programming language is an artificial language designed to express computations"

Nur Berechnungen? Nanu? Das muss eine ungewollte Einschränkung sein...

"that can be performed by a machine, particularly a computer."

...oder weil natürlich "computer" Rechner heißt, auch wenn er Malen kann... Rechne ich eine Webseite? Eher nein, ich zeige sie an. Wie auch immer...

" Programming languages can be used to create programs that control the behavior of a machine, to express algorithms precisely,"

Ahem, deklarative Sprachen geben ja gerade nicht den Algorithmus vor, sondern beschreiben das Problem bzw. die gewünschte Lösung. Diese Definition ist daher auch nicht wirklich gelungen.

" or as a mode of human communication."

Und das macht's jetzt total schwammig. Wenn's keine imperative Sprache ist, dann eben was anderes zum Kommunizieren mit dem Computer. Und da fällt ja wohl auch HTML drunter, denn ich kommuniziere dem Browser (stellvertretend für den Computer) wie er bitte meine Seite anzeigen soll (also die Webseite berechnen muss).

Was ich sagen will: Es kommt alles auf die Definitionen an und diese sind alles andere als eindeutig... Der Unterschied ist ungefähr genau so (un)klar (und willkürlich) wie zwischen Scriptsprache und Programmiersprache...

Stefan
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Ich würde jedenfalls jemanden, der eine Website allein mit HTML/CSS gestaltet, nicht als Programmierer bezeichnen wollen. Für mich ist "Programmieren" untrennbar mit "Algorithmus" verbunden, und etwas derartiges erkenne ich bei HTML/CSS nicht.
Antworten