Startseite aufrufen
« Zurück
Vor »

Kommentar schreiben | Drucken

HTML ist keine Programmiersprache, oder: Wann ist eine Sprache eine Programmiersprache?

-- 07.Februar 2006 (#59)

Man liest immer wieder von Leuten, die angeblich HTML programmieren können – wie geht das denn? Über die Motive dieser Leute kann ich nur spekulieren, vielleicht denken sie, sie würden programmieren, weil sie es mit Code zu tun haben und Code? Ja klar, das muss doch mit Programmieren zu tun haben! Andere wissen vielleicht einfach kein besseres Wort, für das was sie da mit HTML machen oder sie wollen einfach geek sein, denn als Programmierer ist man ja ein oberschlauer Hacker. Zu behaupten, HTML sei eine Programmiersprache, ist aber natürlich Unsinn.

Eine unwissenschaftliche Erklärung

HTML-Seiten werden weder programmiert, noch sind Menschen, die HTML schreiben, Programmierer. HTML ist stattdessen eine Auszeichnungsprache (dafür stehen auch die letzten beiden Buchstaben des englischen Akronyms: HTML – Hypertext Markup Language) und HTML wird nicht programmiert, sondern einfach geschrieben. Das Schreiben von HTML-Seiten ist so ungefähr auf dem Level mit dem Schreiben von Word-Dokumenten (es soll ja sogar Leute geben, die HTML-Seiten auch tatsächlich mit Word schreiben). HTML hat keine Befehle und es fehlen essenzielle Sprachkonstrukte von „echten“ Programmiersprachen (Schleifen, Bedingungen etc.). Man kann also keine Algorithmen in HTML schreiben.
Echte Programmiersprachen im Web sind hingegen Java, JavaScript, PHP und Perl. Sie können mit HTML kombiniert werden, machen deshalb aber aus HTML keine Programmiersprache.


Eine wissenschaftliche Erklärung

Puh, dafür muss ich erstmal etwas ausholen…

Vermutlich geht diese Erklärung völlig an der Zielgruppe vorbei, denn wer HTML als Programmiersprache bezeichnet, der hat wahrscheinlich noch nie eine echte Programmiersprache gesehen oder gar genutzt und dem werden für diesen Erklärungsansatz einige Vergleichsmöglichkeiten fehlen. Nun denn, los geht’s…

Alan Turing

Alan Turing war ein britischer Logiker und Mathematiker und ist ein Hauptbegründer der theoretischen Informatik. Turing entwickelte eines der ersten Schachprogramme und erfand den Turing-Test. Darüber hinaus war Turing an der Entwicklung des Röhrencomputers Colossus beteiligt, welcher half, die Geheimsprache der deutschen Wehrmacht Enigma zu knacken und trug damit entscheidend zur Wende des 2.Weltkriegs bei.
Insbesondere aber – und das ist im Zusammenhang mit meiner Erklärung wichtig – entwickelte Turing ein (theoretisches) Gerät, mit dem sämtliche mathematischen Funktionen ausgerechnet werden können (Grundlage für die ersten Computermodelle). Dieses Gerät wird Turingmaschine genannt.
Alan Turing wurde 1912 geboren und starb 1954 an Suizid durch Cyanid-Vergiftung, nachdem er der Homosexualität bezichtigt wurde und infolge der psychiatrischen Behandlung mit Östrogenen an Depressionen litt.
Jedes Jahr wird zu Ehren von Alan Turing der Turing-Preis verliehen – eine der bedeutendsten Informatik-Auszeichnungen.

Turing-Maschine

Alles, was berechenbar ist, kann mit der Turingmaschine ausgerechnet werden. Es gibt keine mathematische Funktion, die man zwar als Mensch lösen kann, an der die Turingmaschine aber versagt. Die einfachste Version der Turingmaschine ist die 1-Band-Turingmaschine. Sie besteht aus folgenden Komponenten:

  • Ein (nach beiden Seiten) unendlich langes Speicherband.

  • Das Band ist in unendlich viele Speicherzellen aufgeteilt.

  • Jede Speicherzelle kann genau ein Zeichen (z.B. „a“, „c“) oder das Leerzeichen enthalten.

  • Ein Schreib- und Lesekopf, der von einem Steuerwerk gesteuert wird.

  • Der Kopf wird von einem Programm gesteuert.

  • Der Schreib-Lese-Kopf hat einen Anfangszustand z0.

  • Das Ergebnis wird vom Schreib- und Lesekopf am Ende auf das Band geschrieben.



(Turingmaschinen sind ein theoretisches Modell, denn es leuchtet schnell ein, dass man keine Turingmaschine mit einem unendlich langen Speicherband bauen kann. Außerdem ist die Turingmaschine in der Praxis zu langsam.)

Das Programm für die Turingmaschine hat folgende Eigenschaften:

  • Lesezugriff
    Es kann das Zeichen an der aktuellen Position des Schreib-Lese-Kopfes gelesen werden.

  • Bedingungen
    Es kann eine Bedingung (~if) abgefragt werden, nämlich ob an der aktuellen Position ein bestimmtes Zeichen enthalten ist.

  • Schreibzugriff, Bewegung des Schreib-Lese-Kopfes und Zustandsänderung
    Es kann eine Aktion ausführen, nämlich den Schreib-Lese-Kopf eine Speicherzelle nach links/rechts bewegen, ein Zeichen oder Leerzeichen an der aktuellen Position schreiben und den Zustand z ändern.


Aufbauend auf diesem recht einfachen Rechnermodell und den 3 Programmanweisungen lassen sich weitere Funktionen realisieren. Zunächst wären da die arithmetischen Funktionen (Addition, Multiplikation…) und zum anderen erhält man damit die grundlegenden Sprachkonstrukte, die (fast) alle Programmiersprachen gemein haben, nämlich Schleifen, bedingte Anweisungen, Sprünge, Rekursionen, Arrays usw. usf.

Das besondere an der Turingmaschine ist, dass alle anderen Rechnermodelle (Automaten) mit ihr simuliert werden können. Selbst die Funktionsweise von sehr komplizierten und fortgeschrittenen Rechnermaschinen (z.B. Quantencomputer) können mit einer Turingmaschine nachgeahmt werden (was allerdings aufgrund der primitiven Grundfunktionalität der Turingmaschine sehr komplex werden kann). Umgekehrt gilt dasselbe: Die Turingmaschine kann auf jedem anderen Rechnermodell emuliert werden.

Wenn ein Rechnermodell oder auch eine Sprache alles berechnen kann, was man auch mit einer Turingmaschine berechnen kann, dann wird das Rechnermodell oder die Sprache als Turing-vollständig bezeichnet. Gibt es allerdings eine mathematische Funktion, die mit dem Modell oder der Sprache nicht berechnet werden kann, dann spricht man von Turing-Unvollständigkeit. Etwas anders ausgedrückt heißt das, dass man mit einer Turing-unvollständigen Sprache nicht alle mathematischen Funktionen ausrechnen kann.

Bei nahezu allen heutigen Programmiersprachen ist Turing-Vollständigkeit gegeben, egal ob es sich um imperative, objektorientierte, oder funktionale Programmiersprachen handelt. Selbst sehr spezialisierte oder eingeschränkte Sprachen wie XSLT und Basic können turing-vollständig und damit Programmiersprachen sein (man muss also mit einer Programmiersprache keine Betriebssysteme programmieren können).

Zurück zu HTML

Der Beweis, warum HTML keine Programmiersprache ist, fällt jetzt sehr leicht. Es reicht zu zeigen, dass HTML turing-unvollständig ist, also dass es eine mathematische Funktion gibt, die man mit HTML nicht ausrechnen kann. Eine einfache Funktion wäre f(×)=x. Mit HTML ist diese Berechnung von f(×) unmöglich und damit ist HTML keine Programmiersprache.


Geschrieben von
Dirk
-- 11.Februar 2006 (#5)

Eine entsprechende DIN- oder ISO-Norm ist mir nichts bekannt und ich konnte auch nichts darüber finden.

Das Argument, dass man mit HTML ja eigentlich doch in irgendeiner Form Befehle an den Computer übergibt, ist mir bekannt. Dieses Argument setzt aber eine sehr blumige Definition von „Befehl“ voraus.
Schreibe ich etwas in Word und will den Text z.B. kursiv formatieren, dann „befehle“ ich dem Computer auch eindeutig, dass er die Schrift kursiv setzen soll. Drücke ich in irgendeinem Programm irgendeinen Knopf, dann „befehle“ ich dem Programm auch irgendwas zu tun. Auf der Definition aufbauend ist alles ein Befehl und alles ist eine Programmiersprache. Ob die Befehle eindeutig sind, ist eher subjektives Empfinden. Der Benutzer, der etwas anklickt, hat er mit Sicherheit eine eindeutige Intention im Sinn, aber das heißt noch gar nichts, denn bei solcher Art von Befehlen wird die eigentliche Interpretation dem Computer überlassen. Wenn ich <b>lalala</b> schreibe, dann ist es Aufgabe des Browsers, meine Absichten richtig zu verstehen und den Text fett zu drucken. Ein Beispiel wäre vielleicht der <strong>-Tag, wo es nicht eindeutig ist, was er jetzt eigentlich macht. Genauso gibt es einige semantische Tags, die von den Browsern nicht mal unterstützt werden oder wo gar nicht klar ist, wie sie jetzt angezeigt werden. In einer Programmiersprache gibt es keine solchen „Tu-einfach-irgendwas-Befehle“ (Programmierbefehle können nicht immer verarbeitet werden, aber das ändert ja nichts daran, dass sie eineindeutig sind).
Bei dieser Betrachtungsweise von „Befehl“ würde man auch sehr schnell den Anwender eines Programms mit dem Programmierer des selbigen zusammenschmeißen und das wird der Tätigkeit des Programmierens meiner Ansicht in keinster Weise gerecht.

Mit HTML wird nichts weiter als Text formatiert und Links gesetzt. Das kann doch nie und nimmer eine Programmiersprache sein und ich glaube auch nicht, dass sich Programmierer mit HTML- oder Wikipedia-Schreibern auf eine Stufe stellen würden, selbst wenn es in einer DIN- oder ISO-Norm stehen würde.


Geschrieben von
Texto (anonym)
-- 01.März 2006 (#8)

Oops

ich gebe zu, ich habe überlesen, dass Du die Email Adresse anzeigst,

wenn ich anklicke geht Outlook auf,-was ich aaber gar nicht eingerichtet habe

dies überschwemmt mich mit Spam,
daher bitte ich Dich, lösche aus meinem Kommentar die Email Adresse raus,

recht herzlichen Dank

Texto aka Monika


Geschrieben von
Hertz-lich gebloggt... (anonym)
-- 28.Februar 2006 (#6)

Rein aus "dem Bauchgefühl" heraus:

Mit HTML kann ich nicht rechnen und keine Verzweigungen vornehmen. Es eignet sich lediglich dazu, eine Formatierung von Ausgaben vorzunehmen. Wann immer eine Entscheidung, Berechnung usw. vorgenommen werden soll, muss man auf PHP, Javascript o.ä. zurückgreifen.

Folglich würde ich die Aussage: HTML ist keine Programmiersprache klar mit "Stimmt" beantworten.


Geschrieben von
Dirk
-- 01.März 2006 (#9)

Die E-Mail-Adressen werden kodiert, was in den meisten Fällen die Spambots davon abhalten sollte, die E-Mail-Adresse zu erkennen.


Geschrieben von
Dirk
-- 26.März 2006 (#12)

Über eine Sprache wie HTML stolpert man doch nach längerer Überlegung fast zwangsläufig. Die Überlegung ist: Wie muss eine Sprache aussehen, mit der man Text schnell und einfach fürs Internet formatieren kann? So ist HTML ja auch entstanden, nämlich zuerst als roher Text und dann wollte man noch ein bisschen kursiv und fett schreiben, man wollte ein paar Bilder einfügen, später wollte man auch ganz gerne Informationen tabellerisch darstellen usw. und jetzt sind wir eben bei der letzten HTML-Version 4.01. Mir würde jetzt keine Alternative zu einer Auszeichnungssprache wie HTML einfallen, die die Kriterien Unkompliziertheit und Offenheit in sich vereint. HTML selbst ist ja auch ein „Quasi-Nachfolger“ von SGML. Es wurden also Ideen annektiert, die es auch schon vorher in ähnlicher Form gab.

Ich denke deshalb, dass die Lorbeeren eher der Erfindung des Internets selbst gelten sollten und HTML letztlich nur eine logische Konsequenz daraus war. Ich will die Meriten der Leute, die an HTML gearbeitet haben, damit nicht schmälern, aber ich glaube auch nicht an die These, dass HTML als Geschenk vom Himmel gefallen ist.


Geschrieben von
Dirk
-- 08.Februar 2006 (#3)

Ok, ich sehe zwar auch diese Gemeinsamkeit zwischen HTML und einer Programmiersprache, aber Informationen strukturieren tut man doch auch bei vielen anderen Sachen.

Ich denke auch, dass selbst das mit dem Strukturieren nicht immer stimmt. Die HTML-Syntax ist sehr schnell erlernt und man bekommt schnelle Erfolgsergebnisse. Das ist in 10 Minuten erlernt und mancher ist deshalb schnell dazu geneigt, zu sagen, er könne HTML. Nach 10 Minuten kann man aber natürlich kein sauberes HTML schreiben, sondern nur billigen unstrukturierten Code.
Richtig sauberes, strukturiertes HTML zu lernen, dauert hingegen schon fast so lange wie die Grundlagen einer Programmiersprache zu beherrschen.

Ich glaube der Vergleich mit Word war da gar nicht so verkehrt. Denn auch hier ist es natürlich schnell und leicht, die Grundlagen zu erlernen, um der Tante einen Brief zu schreiben oder den Einkaufszettel in Word zu erstellen. Deshalb ist man aber noch lange kein Schriftsetzer oder Mediengestalter.
Ein professioneller Texter würde ja beispielsweise auch das Satzsystem LaTeX benutzen. Dort ist man auch mit einer gewissen Art von Code konfrontiert und sollte strukturiert denken. Von einem Programmierer ist aber ein Schriftsetzer noch ein gutes Stück entfernt (und andersrum natürlich genauso).


Geschrieben von
Texto (anonym)
-- 01.März 2006 (#7)

HTML ist eine Auszeichnungssprache,

schade finde ich , wenn ich so Sätze lese wie:

"und ich glaube auch nicht, dass sich Programmierer mit HTML- oder Wikipedia-Schreibern auf eine Stufe stellen würden,"

dies impliziert, dass Programmierer was *Besseres* sind.

Gleichzeitig setzt es die Könner dieser Auszeichnungssprache auf die Stufe mit Wikipedia, das ich übrigens nicht als Lexikon betrachte, sondern gleich setze mit dem Infogehalt einer Bild oder der Krone aus Österreich.

Solche Wortmeldungen finde ich unendlich schade - vor allem nach einem an und für sich toll recherchierten Artikel.

lg


Geschrieben von
Anna aus Berlin (anonym)
-- 14.November 2006 (#13)

Ich gebe dem Siegfried Recht. Man könnte die Aussage in dem Form geben: XHTML ist HTML, das auf XML basiert.
Grosse Vorteil ist natürlich die Kombinatieon zw. XHTML und CSS - das macht den Quelltext sehr suchmaschinenfreundlicher, übersichtlicher. Die Möglichkeit ist am sinnvollsten, da sie die meisten die Vorteile bringt: vollige Trennung zw. Struktur und Präsentation.


Geschrieben von
David Böhler (anonym)
-- 15.Mai 2008 (#15)

Hallo

Validität, Barrierefreiheit, Ergonomie und Suchmaschinentauglichkeit ist mit HTML-pur (+CSS) oft besser gewährleistet als mit einer "Programmiersprache".

HTML ist tatsächlich nur eine Art Daten zu ordnen, damit Sie von einer Datei ausgewertet werden, deswegen wird ja auch oft auf die Interpretdatei verwiesen. Man muss natürlich auch wissen, ob über xhtml oder HTML4.01 geredet wird.

Ich gehe sogar weiter und muss manchen Leuten mitteilen, dass sie auch keine Programmierer sind, den Javascript (das es sogar im Namen hat) und PHP lediglich Scriptsprachen sind, da Sie direkt ausgewertet werden. Gut, PHP für Fortgeschritene ist dann bereits eine Programmiersprache, aber wer sich mit Datenbankabfragen und echos abgibt programmiert noch lange nichts, der Scriptet.

Erst die Kompilierfähigkeit, also die Übersetzung in eine Maschinensprache oder Middlewaresprache macht eine Programmiersprache aus, das heisst erst Java, C++ und .NET sind Programmiersprachen.

Dass sich HTML Leute beleidigt oder gedemütigt fühlen durch mangelnde Anerkennung als programmierer ist verständlich, aber dass liegt nicht am HTML, das liegt an ihnen, den HTML ist keine Programmiersprache, sie können einfach sau gut Daten ordnen, und das ist doch schon mal was, oder?

Abgesehen davon braucht es in modernen CMS Systemen immer noch gute HTML Kenntnisse um die Inhalte gut zu strukturieren. Die editoren nehmen einem viel Arbeit ab, aber nicht alles. Also überlasst einfach das Programmieren Freaks wie mir und gestaltet mit HTML die Inhalte, was sowieso den grössten Teil der Arbeit ausmacht und repräsentativer ist, den was im Hintergrund mit der Programmiersprache oder Scriptsprache läuft interessiert eh nur jemanden wenn es nicht funktioniert.

Grüsse David


Geschrieben von
Heinz (anonym)
-- 23.Februar 2008 (#14)

Also das ist doch mal ein wirklich gut geschriebener Beitrag. Alle Achtung.

Heinz.


Geschrieben von
Dirk
-- 08.Februar 2006 (#2)

Entschuldigung, ich meinte XSLT und nicht XML.


Geschrieben von
Siegfried (anonym)
-- 08.Februar 2006 (#1)

Hi,
so im Großen und Ganzen hast Du ja Recht. Wobei allerdings interessant ist, daß xml eine (eingeschränkte) Programmiersprache ist. Demnach wäre also xhtml auch eine, denn xhtml ist ein xml-Dialekt.

Davon mal abgesehen gibt es aber einen Punkt, der bei html und Programmiersprachen zumindest übereinstimmen sollte (wenn auch selten tut): Sowohl bei der Programmierung in beliebigen Programmiersprachen als auch beim Markup von Inhalt mittels html geht es darum, Informationen zu strukturieren, zu gruppieren und eine Bedeutung hinzuzufügen. In OO-Sprachen z.B. fügt man die Bedeutung zu einem Datensatz durch sog. "Methoden" hinzu. In html sollte man diese Bedeutung durch die korrekte Wahl von Markupcontainern und Klassennamen durchführen. Insofern, selbst, wenn html keine Programmiersprache ist, so gibt es zur Programmierung doch immerhin ein paar wesentliche Überschneidungen.

Ich bin hauptberuflich Softwareentwickler für Maschinensteuerungen und betreibe hobbymäßig Webentwicklung.


Geschrieben von
project_2501 (anonym)
-- 25.März 2006 (#11)

Mal ganz davon abgesehen das html und xml usw. keine Programmiersprachen sind,ich finde es schade das html immer so unter schätzt wird, wenn man sich mal ihren einfluss betarchtet.
Markupsprachen habe die Welt verändert, oder kann sich heute noch einer das Internet ohne html vorstellen ?


Geschrieben von
RM (anonym)
-- 10.Februar 2006 (#4)

Der ganze Text geht von einer falschen Grundannahme aus: Daß eine Sprache turing-complete sein muß, um eine Programmiersprache zu sein. In keiner normativen Definition (DIN, ISO, Informatik-Duden, Brockhaus) wird das vorausgesetzt. Tatsächlich sind die Definitionen so allgemein, daß HTML sie erfüllt.

HTML ist eine künstliche Sprache, mit der eindeutige Anweisungen an einen Computer gegeben werden. Und damit eine Programmiersprache.


Geschrieben von
Dirk
-- 01.März 2006 (#10)

@Texto

Danke, ich habe dir bereits unter der von dir angegebenen Adresse einen Kommentar hinterlassen. Ich kopiere ihn zur Vervollständigung nur nochmal hier hinein (aber mit weniger Rechtschreibfehlern ;).


Ich glaube du überbewertest diesen Satz etwas. Ich habe vorwiegend versucht, HTML/XHTML nicht als minderwertig darzustellen. Gewisse Übertreibungen waren nur zur Verdeutlichung gedacht und ja, ich denke, dass HTML mehr mit der Wikipedia-Syntax, als mit der Syntax einer Programmiersprache gemein hat. Wikipedia benutzt ein etwas vereinfachtes und eingeschränktes Pseudo-HTML, die aber letztlich genauso benutzt wird, wie HTML-Tags und beim Abspeichern auch wieder in HTML konvertiert wird.

Ich habe sogar das Gefühl, dass Leute, die nur HTML können, sich sehr schnell von den anderen ins Abseits gestellt fühlen. Sie wollen sich zu einer Gruppe zugehörig fühlen, die sie einfach nicht vertreten. Bier ist Bier und Schnaps ist Schnaps und eine Auszeichnungssprache ist nun mal keine Programmiersprache. Dass HTMLer sich deshalb herabgesetzt fühlen, wird von vielen auch schnell hineininterpretiert. Einige HTML-Menschen finden es begehrlich, sich als Programmierer titulieren zu können und sind enttäuscht, wenn sie dann vor den Kopf gestoßen werden.

Man muss aber auch realisieren, das HTML seine Grenzen hat und das Programmierfähigkeiten in vielen Fällen sicherlich extrem hilfreich sind, das ist doch eigentlich ganz klar. Das man andere Dinge madig macht, weil man sie nicht kennt oder nicht kann ist ein sehr menschliches Verhalten. Das ist aber unnötig, jeder sollte seine Arbeit machen und sich nicht als etwas auszugeben versuchen, was er nicht ist.

Die meisten, die sowohl HTML, als auch eine Programmiersprache wie PHP können, sind der Meinung, dass dem Erlernen einer Programmiersprache mehr Kompetenz abverlangt wird, als dem Erlernen von HTML. Wenn man eine Seite erstellt, entfällt der Hauptteil der Arbeit doch auch auf das Programmieren, den Schreiben von Inhalten, der grafischen Bearbeitung, CSS und dann kommt noch etwas HTML.

Für HTML kann ich Frontpage anwerfen und was zusammenklicken. Beim Programmieren lässt sich nix zusammenklicken (außer vielleicht die Oberfläche, aber nicht die Programmlogik). Würde man so jemanden mit einem Programmierer vergleichen? Ein Programmierer würde das nicht wollen und das meine ich nicht aus Arroganz oder aus Distinguiertheit, sondern weil ich es nach Abwägung aller Aspekte einfach so sehe. Diese Ansicht trifft den Nerv der meisten Leute, die sowohl „HTML-Coder“, als auch Programmierer sind.

Ich habe auch gesagt, dass man HTML/XHTML perfektionieren kann und dann braucht man eine erhebliche längere Einarbeitungszeit. Wenn man Aspekte wie Validität, Barrierefreiheit, Ergonomie und Suchmaschinentauglichkeit dazu nimmt, dann verkompliziert das die Sache natürlich schon erheblich. Nichtsdestotrotz sind das aber auch Dinge, die irgendwann automatisiert ablaufen. Irgendwann habe ich einfach den Dreh raus, wann ich welche Tags wie setzen darf und wann nicht. Darüber muss ich dann nicht mehr nachdenken, sondern mache es einfach. Beim Programmierer lassen sich gewisse Bausteine oder Funktionen immer wieder verwenden, wobei ich aber denke, dass mir beim Programmieren bei durchaus ähnlichen Aufgabenstellungen immer wieder eine Herausforderung gestellt wird.


Geschrieben von
Chilli (anonym)
-- 09.Oktober 2009 (#16)

Auch wenn das etwas spät kommt:
Das Prädikat, dass eine Sprache die Definition einer Programmiersprache erfüllt, impliziert NICHT die Turing-Vollständigkeit.
Beweis: Loop-Programme. Per Definition eine Programmiersprache, aber NICHT Turing-Vollständig.
Daher ist das Argument mit ’f x=x’ zwar verständlich, aber dennoch falsch.


Das Hinzufügen von Kommentaren wurden deaktiviert.


Menü
Beitragsübersicht
Kontakt & Impressum
Über mich
Linkempfehlungen/Linkpartner

Letzte Kommentare
»Vorstellungsgespräch: E…
»Die Krux mit den Hinter…
»Bewerbung: Standard-Abs…
»Glossar: Quirks-Modus (…
»Glossar: Quirks-Modus (…

Meta
RSS 2.0
XHTML-Validierung
CSS-Validierung

Backlinks
»Spam vermeiden
»Internetagentur Ulm
»Bruststraffung
»Achterbahn & Freizeitpark
»Fernstudium
»TuS Graf Kobbo Tecklenburg