Die Sache mit 'Ist HTML eine Programmiersprache'
Die Sache mit 'Ist HTML eine Programmiersprache'
Twitter ist eine wunderbare Sache. Vor allem wenn es um die Dev und IndiGame Community geht, die in beiden Fällen sehr hilfsbereit ist. Eine Sache, die direkt auffällt, sind die bei vielen Accounts gestellte Frage: 'Ist HTML eine Programmiersprache'. Mal als Umfrage, mal als einzelner Tweet, hier dann aber auch gerne mit Re-Tweet für größere Reichweite…
Und es gibt eine ganze Reihe von Fragen, die sehr stark polarisieren - dieses ist eine davon.
Und ganz ehrlich gesagt, kann die Fragen sehr einfach beantworten: Nein! Aber…
Stellen wir uns mal ein paar weitergehende Fragen:
1) Ist es wichtig
Es sieht wohl so aus, dass es einigen Personen sehr wichtig ist; und erinnern wir uns zurück an unsere ersten Schritte mit diesem bösen, technischem Monster, was mit einem Knopfdruck so viele unerklärliche Dinge macht. Die ständigen Updates, das ganze Einrichten, die ganzen Probleme.
Und trotzdem setzen sich viele hin und erlernt noch etwas. Eine Sprache mit den ganzen < und > und komischen Bezeichnungen wie Div und Span und Center - nein Center, du nicht mehr - und auf einmal erscheint dann das auf dem Bildschirm, was wir uns vorgestellt haben. Gut nicht ganz und vor allem nicht in jedem Browser das selbe; aber der Anfang ist getan.
Programmierer{sing} sind in vielen Dingen noch immer die Held{plur} unserer Zeit, legen sie doch dieses Monster ständig in Ketten. Fragen wir sie - im Geheimen natürlich - geben die meisten zu, dass es noch immer wie beim ersten mal Sex ist. Man hat viel gehört, man weiß nicht was man tut, es ist alles aufregend und am Ende war es irgendwie toll, aber nicht genau so, wie es in der Vorstellung war.
Es geht also vor allem um Prestige und hier kann sich mit Sicherheit niemand freisprechen, keinen erlangen zu wollen ;) und wenn dann das Gefühl entsteht, jemand sägt an genau diesen.
Die 'andere Seite' argumentiert aber ähnlich. Mit fremden Federn schmücken(1) wird nirgends gerne gesehen und wird in vielen Fällen oft lautstark moniert.
Da hier Aussage gegen Aussage bzw Gefühl gegen Gefühl steht, kommen mit diesem Punktnur schwer weiter. Betrachten wir es also von einer anderen Seite.
2) Was ist eine Programmiersprache
Gucken wir bei der ersten, offensichtlichen Quelle, lesen wir
Eine Programmiersprache ist eine formale Sprache zur Formulierung von Datenstrukturen und Algorithmen, d. h. von Rechenvorschriften, die von einem Computer ausgeführt werden können. Sie setzen sich üblicherweise aus schrittweisen Anweisungen aus erlaubten (Text-)Mustern zusammen, der sogenannten Syntax.
Dieser Abschnitt ist erst einmal nicht sehr aussagekräftig, ein Stück weiter unten finden wir aber folgende Liste.
Programmiersprachen bieten meist mindestens
- Ein-/Ausgabe-Befehle, damit das Programm Daten entgegennehmen und wieder ausgeben kann;
- Deklaration von Variablen und Feldern, um Informationen zwischenspeichern zu können;
- mathematische Grund- und Standardfunktionen;
- Grundfunktionen zur Zeichenkettenverarbeitung;
- Steueranweisungen für bedingte Ausführung, Wiederholung, Programmunterteilung (z. B. * in Unterfunktionen) sowie Einbinden von Bibliotheken.
Legen wir diesen Maßstab an, könnten viele Sprachen, je nach Definition hinten runter fallen. Spätestens bei mathematische Grund- und Standardfunktionen verabschieden sich viele Sprachen, die ohne großen Funktionsumfang angeboten werden, allein die Gruppe der esotherischen Programmiersprachen könnte in Gänze gestrichen werden.
Betrachten wir die Thematik weiter, können wir zum Schluss zwei grundlegende Punkte definieren, die alle Programmiersprachen benötigen:
- Variablen
- Sprungpunkte - die Schleifen ermöglichen
Variablen sind kleine Eimer, oder Whiteboards, auf denen Werte notiert werden können. In vielen Fällen können diese später noch geändert werden (2), auf jeden Fall kann man sie lesen und somit ausgeben/verwenden. Bei diesem Punkt hapert es aber bei HTML, das warum erklärt sich indirekt über einen weiteren Punkt, den wir betrachten können.
3) Was ist HTML
Auch hier können wir unsere Standardquelle befragen
Eine Auszeichnungssprache (englisch markup language, abgekürzt ML) ist eine maschinenlesbare Sprache für die Gliederung und Formatierung von Texten und anderen Daten. Der bekannteste Vertreter ist die Hypertext Markup Language (HTML), die Kernsprache des World Wide Webs.[1]
Mit Auszeichnungssprachen werden Eigenschaften, Zugehörigkeiten und Darstellungsformen von Abschnitten eines Textes (Zeichen, Wörtern, Absätzen usw. – „Elementen“) oder einer Datenmenge beschrieben. Dies geschieht in der Regel, indem sie mit Tags markiert werden.
Markup-Languages (ML), also Auszeichnungssprachen werden von oben nach unten interpretiert und es gibt keine Platzhalter, also Variablen, die an einer Stelle definiert werden, um an einer, oder mehreren Stellen verwendet zu werden.
4) Aber CSS
In den Diskussionen kommt dieses Argument recht schnell. Neben der Sache, dass CSS eben nicht HTML ist, wenden wir schnell die beiden Punkte von oben an.
Variablen haben inzwischen in CSS Einzug erhalten und werden von allen modernen Browsern unterstützt. Bei den Sprungpunkten sieht es aber ein wenig anders aus. Das erste Argument 'pro' sind die Selectoren von CSS, die in weiter Definition so was wir Sprungpunkte darstellen könnten. Mit ihnen können aber keine Schleifen und somit keine komplexeren Aufrufverläufe erzeugt werden.
Das nächste Argument in dieser Kette wären dann Less, Sass, Scss. Hier können wir das erste mal den Begriff Programmiersprache anwenden, da hier sowohl Variablen, als auch Schleifen möglich sind. Es gäbe hier auch noch viele Punkte, die dafür und dagegen sprechen, ob es sich bei den drei wirklich um eine Programmiersprachen handelt. Wer aber so weit gelangt ist und diese einsetzt, ist aber in den meisten Fällen eher auf der Seite, dass HTML eben keine sei - aber warum ist das so?
5) Warum HTML keine Programmiersprache sein muss
Das Internet ist über ein 1/4 Jahrhundert alt und hat seinen Weg hinter sich. Bis HTML5 und CSS3 als „living standard“ war es ein hartes Stück Arbeit und auch wenn wir viele der Probleme aus den 90ern und dem neuen Millenium hinter uns lassen konnten, bleibt viel bei der Gestaltung einer Seite zu beachten.
Barrierefreiheit, SEO, die Geschmäcker der Benutzer, responsive, interkulturelle Sichtweisen und Empfindungen, Ladegeschwindigkeiten, Übersichtlichkeit und UI/UX. Es gibt eine Menge, was man beachten muss und was auf den größten Teil der Seiten noch immer nicht sauber umgesetzt wird. Selbst die großen mit ihren One-Pager-Ansätzen schaffen es iun weiten Fällen nicht.
Wer also HTML und CSS ernsthaft betreibt und es schafft eine ansprechende, so wie technsich ausgereifte Seite zu erstellen, die alle Kriteren meistert, wird nicht die notwendigkeit sehen behaupten zu müssen, er habe diese Seite programmiert.
Tl/Dr | Fazit
HTML fehlen beide wichtigen Merkmale einer Programmiersprache. Sie hat weder Variablen, noch Sprungpunkte, geschweige denn Struktueren, die man als Schleife bezeichnen kann. Wer aber wirklich eine Seite mit HTML und CSS auf einem hohen Standard erstellt, die responsive, barrierefrei und SEO ist, muss sich hinter keinen Bezeichnungen verstecken und kann diese komplexität für sich selbst Sprechen - ein großes Monster, welches von vielen unterschätzt wird wurde so an die Ketten gelegt.
(1) Bitte hier beachten, es geht hier nicht um kulturelle Aneignung. Die Redewendung stammt vom römischen Dichters Phaedrus:
Eine Krähe sah auf dem Boden lauter herrliche Pfauenfedern liegen. Sie überlegte nicht lange und beschloss, ihr eigenes fades Gefieder ein bisschen aufzuhübschen. Sie steckte die schönen Pfauenfedern einfach zwischen ihr eigenes Gefieder. Stolz auf ihre neue Federpracht, begab sie sich mitten in eine Gruppe von Pfauen, um sie an der neu gewonnen Eleganz Anteil haben zu lassen.
Sie hat also nichts mit amerikanischen Ureinwohnern zu tun, was viele denken. (https://www.geo.de/geolino/redewendungen/7899-rtkl-redewendung-sich-mit-fremden-federn-schmuecken)
(2) Es gibt so genannte Imutables, also unveränderliche Variablen. Dieses sind etwas anderes als Konstanten. Einige Sprachen, wie z.B. Rust erstellen grundlegend erst einmal nur unveränderliche Variablen; erst durch die Verwendung von mut als zusätzlicher Bezeichner wird diese Variable veränderliche, so wie es in den meisten Sprachen gewohnt ist.