HTML ist keine Programmiersprache.
Ich habe diesen Satz schon so oft gehört, und er ist ermüdend. Normalerweise folgt darauf etwas wie: "Es hat keine Logik" oder "Es ist nicht Turing-vollständig". Also... offensichtlich ist es keine Programmiersprache. Als ob das Thema damit erledigt wäre und das Ende der Diskussion.
Sollte es das aber sein?
Ich möchte typische Argumente betrachten, die ich höre, um HTML herabzusetzen, und meine eigenen Gegenargumente anbieten, um zu zeigen, wie diese Behauptungen nicht vollständig korrekt sind.
Mein Ziel ist es nicht, zu beweisen, ob HTML eine Programmiersprache ist oder nicht, sondern zu zeigen, dass die drei Hauptargumente, die dafür angeführt werden, dass es keine ist, fehlerhaft oder falsch sind und somit die Schlussfolgerung aus logischer Sicht ungültig machen.
„HTML ist eine Auszeichnungssprache, keine Programmiersprache“
Diese Aussage allein klingt gut... aber sie ist falsch: Auszeichnungssprachen können Programmiersprachen sein. Nicht alle sind es (die meisten nicht), aber sie können es sein. Wenn wir ein Venn-Diagramm von Programmiersprachen und Auszeichnungssprachen zeichnen würden, wären es keine zwei getrennten Kreise, sondern zwei sich leicht überschneidende Kreise.
Eine Auszeichnungssprache, die mit Variablen arbeitet, Kontrollstrukturen, Schleifen usw. hat, wäre ebenfalls eine Programmiersprache. Das sind keine sich gegenseitig ausschließenden Konzepte.
TeX und LaTeX sind Beispiele für Auszeichnungssprachen, die auch als Programmiersprachen gelten. Es ist vielleicht nicht praktikabel, damit zu entwickeln, aber es ist möglich. Und wir können Beispiele online finden, wie einen BASIC-Interpreter oder einen Mars Rover Controller (der den Jurypreis im ICFP 2008 Programmierwettbewerb gewann).
Auch wenn einige Auszeichnungssprachen als Programmiersprachen gelten mögen, sage ich nicht, dass HTML eine davon ist. Der Punkt ist, dass die ursprüngliche Aussage falsch ist: Auszeichnungssprachen können Programmiersprachen sein. Zu sagen, dass HTML keine Programmiersprache ist, *weil* es eine Auszeichnungssprache ist, basiert also auf einer falschen Aussage, und jede Schlussfolgerung, die Sie aus dieser Prämisse ziehen, wird kategorisch falsch sein.
„HTML hat keine Logik“
Diese Behauptung erfordert, dass wir klären, was "Logik" bedeutet, denn die Definition könnte Sie überraschen.
Wie bei der Turing-Vollständigkeit (auf die wir definitiv noch eingehen werden) scheinen diejenigen, die dieses Argument anführen, nicht genau zu verstehen, worum es dabei geht. Ich habe Leute gefragt, was sie mit "Logik" meinen, und interessante Antworten erhalten wie
Logik ist ein vernünftiger Grund oder eine vernünftige Denkweise.
Das ist nett, wenn wir nach einer Wörterbuchdefinition von Logik suchen. Aber wir sprechen von *Programmier*logik, nicht nur von Logik als allgemeinem Begriff. Ich habe auch Antworten wie diese erhalten:
Programmiersprachen haben Variablen, Bedingungen, Schleifen usw. HTML ist keine Programmiersprache, weil man keine Variablen oder Bedingungen verwenden kann. Sie hat keine Logik.
Das ist in Ordnung (und definitiv besser, als sich mit true/false/AND/OR/etc. zu beschäftigen), aber auch falsch. HTML hat Variablen - in Form von Attributen - und es gibt Kontrollstrukturen, die zusammen mit diesen Variablen/Attributen verwendet werden können, um zu bestimmen, was angezeigt wird.
Aber wie kontrolliert man diese Variablen? Man braucht JavaScript!
Wieder falsch. Es gibt einige HTML-Elemente, die eine interne Kontrolllogik haben und kein JavaScript oder CSS benötigen, um zu funktionieren. Und ich spreche nicht von Dingen wie <link> oder <noscript> – das sind rudimentäre Kontrollstrukturen und seit Jahrzehnten Teil des Standards. Ich beziehe mich auf Elemente, die auf Benutzereingaben reagieren und bedingte Aktionen ausführen, abhängig vom aktuellen Zustand des Elements und dem Wert einer Variablen. Nehmen Sie das Tupel <details>/<summary> oder das Element <dialog> als Beispiele: Wenn ein Benutzer darauf klickt, werden sie geschlossen, wenn das Attribut open vorhanden ist, und sie werden geöffnet, wenn es nicht vorhanden ist. Kein JavaScript erforderlich.
Allein zu sagen, dass HTML keine Programmiersprache ist, weil ihr die Logik fehlt, ist also irreführend. Wir wissen, dass HTML tatsächlich Entscheidungen basierend auf Benutzereingaben treffen kann. HTML hat Logik, aber sie unterscheidet sich von Natur aus von der Logik anderer Sprachen, die für die Manipulation von Daten entwickelt wurden. Wir werden ein stärkeres Argument als dieses brauchen, um zu beweisen, dass HTML keine Form des Programmierens ist.
„HTML ist nicht ‚Turing-vollständig‘“
Okay, das ist das Argument, das wir in dieser Debatte am häufigsten sehen. Es ist technisch korrekt (die beste Art von korrekt), zu sagen, dass HTML nicht Turing-vollständig ist, aber es sollte eine größere Debatte auslösen, als es nur als abschließendes Argument zu verwenden.
Ich werde nicht ins Detail gehen, was es bedeutet, Turing-vollständig zu sein, da es dafür viele Ressourcen gibt. Tatsächlich fasst Lara Schenck es schön in einem Beitrag zusammen, in dem sie argumentiert, dass CSS Turing-vollständig ist.
Ganz einfach ausgedrückt bedeutet für eine Sprache oder Maschine, Turing-vollständig zu sein, dass sie das leisten kann, was eine Turingmaschine leisten könnte: jede Berechnung durchführen, auch bekannt als universelle Berechnung. Schließlich wurde das Programmieren erfunden, um Mathematik zu betreiben, obwohl wir heute natürlich viel mehr damit machen!
Da die meisten modernen Programmiersprachen Turing-vollständig sind, nutzen die Leute das als Definition einer Programmiersprache. Aber Turing-Vollständigkeit ist das nicht. Es ist ein Kriterium, um festzustellen, ob ein System (oder sein Regelwerk) eine Turingmaschine simulieren kann. Es kann verwendet werden, um Programmiersprachen zu klassifizieren; es definiert sie nicht. Es gilt nicht einmal ausschließlich für Programmiersprachen. Nehmen Sie zum Beispiel das Spiel Minecraft (das dieses Kriterium erfüllt) oder das Kartenspiel Magic: The Gathering (das ebenfalls das Kriterium erfüllt). Beide sind Turing-vollständig, aber ich bezweifle, dass irgendjemand sie als Programmiersprachen einstufen würde.
Turing-Vollständigkeit ist gerade in Mode, so wie früher der Unterschied zwischen kompilierten und interpretierten Sprachen als gutes Kriterium galt. Ja. Wir müssen uns nicht stark anstrengen, um uns zu erinnern, als Entwickler (hauptsächlich im Backend) die Frontend-Programmierung (einschließlich JavaScript und PHP) herabwürdigten, als sei sie keine "echte Programmierung". Das hört man immer noch manchmal, wenn auch verblasst, gemurmelt und nuschelnd.
Die Definition dessen, was Programmierung ist (oder nicht ist), ändert sich mit der Zeit. Ich wette, jemand, der Lochkarten sortierte, beschwerte sich darüber, dass das Tippen von Code in Assembler keine echte Programmierung sei. Es gibt nichts Universelles oder in Stein Gemeißeltes. Es gibt keine tatsächliche Definition.
Turing-Vollständigkeit ist ein fairer Standard, das muss ich sagen, aber einer, der voreingenommen und subjektiv ist – nicht in seiner Form, sondern in der Art und Weise, wie er ausgewählt wird. Warum wird eine Sprache, die eine Turing-vollständige Maschine erzeugen kann, als "Programmiersprache" gepriesen, während eine andere, die eine Zustandsmaschine erzeugen kann, nicht? Es ist subjektiv. Es ist eine Ausrede wie jede andere, um zwischen "echten Entwicklern" (denen, die die Behauptung aufstellen) und denen, die ihnen unterlegen sind, zu unterscheiden.
Um dem Ganzen die Krone aufzusetzen: Es ist offensichtlich, dass viele der Leute, die das Mantra "HTML ist nicht Turing-vollständig" nachplappern, nicht einmal wissen oder verstehen, was Turing-Vollständigkeit bedeutet. Es ist kein Preis und kein Qualitätssiegel. Es ist kein Ehrenzeichen. Es ist nur eine Möglichkeit, Programmiersprachen zu kategorisieren – um sie zu gruppieren, nicht um sie zu definieren. Eine Programmiersprache kann Turing-vollständig oder nicht sein, genauso wie sie interpretiert oder kompiliert, imperativ oder deklarativ, prozedural oder objektorientiert sein kann.
Also, ist HTML eine Programmiersprache?
Wenn wir die Hauptargumente entkräften können, die behaupten, dass HTML keine Programmiersprache ist, bedeutet das dann wirklich, dass HTML eine Programmiersprache ist? Nein, das tut es nicht. Und so wird die Debatte weitergehen, bis der HTML-Standard sich weiterentwickelt oder sich die "aktuelle Definition" von Programmiersprache ändert.
Aber als Entwickler müssen wir dieser Frage gegenüber wachsam sein, denn in vielen Fällen wird sie nicht verwendet, um eine ernsthafte Debatte anzustoßen, sondern um Kontroversen zu schüren, während sie hinterhältige Motive verbirgt: von einfachen Internet-Reaktionen bis hin zur gefährlichen Herabwürdigung des Beitrags einer Gruppe von Menschen zum Entwicklungsökosystem.
Oder, wie Ashley Kolodziej es in ihrer Ode an HTML wunderschön zusammenfasst:
Sie sagen, du bist keine echte Programmiersprache wie die anderen, dass du nur Markup bist, und technisch gesehen hast du wohl recht. Technisch gesehen sind JavaScript und PHP Skriptsprachen. Ich erinnere mich, als es nicht cool war, JavaScript zu kennen, als es auch keine "echte" Sprache war. Manchmal habe ich das Gefühl, dass diese Unterscheidungen bedeutungslos sind, als ob wir Vokabular aufgebaut hätten, um dich (und damit auch uns als Entwickler) zurückzuhalten. Du hast als Auszeichnungssprache deinen eigenen einzigartigen Wert und deine Stärken. Zu wissen, wie man am besten mit dir umgeht, ist eine wahre Expertise, die zu oft übersehen wird.
Unabhängig von der Haltung, die wir zur Diskussion "HTML ist/ist keine Programmiersprache" einnehmen, lasst sie uns feiern und ihre Bedeutung nicht leugnen: HTML ist das Rückgrat des Internets. Es ist eine schöne Sprache mit umfangreicher Dokumentation und einer ausgedehnten Syntax, aber so einfach, dass sie an einem Nachmittag gelernt werden kann, und so komplex, dass ihre Beherrschung Jahre dauert. Programmiersprache hin oder her, was wirklich zählt, ist, dass wir HTML überhaupt haben.
Ich habe ein paar Meinungen dazu, die ich eigentlich zu einem Blogbeitrag machen wollte, aber dieser Kommentarbereich wird wahrscheinlich geschlossen sein, bis ich dazu komme, also los geht's.
Wenn ich sage, HTML sei keine Programmiersprache, dann tue ich das in der Absicht, die Weitsicht und Zurückhaltung der Menschen, die sie geformt haben, und die Fähigkeit und den Einfallsreichtum der Menschen, die damit erstaunliche Dinge tun, zu loben.
ist gültig,
ist es nicht. Letzteres impliziert, dass es stattdessen eine gefälschte Programmiersprache ist.
Ich habe das Gefühl, dass Diskussionen zu diesem Thema von diesen beiden Standpunkten dominiert werden: "Programmiersprache" als streng definierter wissenschaftlicher Begriff und "Programmiersprache" als willkürlich zugewiesener sozialer Status. In Wirklichkeit ist es eine unscharfe Klassifizierung, wie die meisten Wörter in menschlichen Sprachen.
Der Versuch, strenge Kriterien für das zu finden, was als Programmiersprache gilt, kann eine unterhaltsame Übung sein, wenn wir uns nicht mehr an den sozialen Status unserer Werkzeuge klammern. Ich fange an
Eine Programmiersprache hat (formal oder informell) definierte Laufzeitsemantik.
Ziemlich pedantisch, ehrlich gesagt.
Ich glaube, die eigentliche Frage ist, warum spielt das eine Rolle? Ich zweifle nicht daran, dass viele Leute, die den Satz "HTML ist keine Programmiersprache" äußern, dies mit böser Absicht tun. Was ich jedoch glaube, ist, dass es völlig unwichtig ist, ob es sich um eine Programmiersprache handelt oder nicht. Am Ende des Tages ist "Programmiersprache" nur ein willkürliches Etikett, das wir Dingen geben. Menschen haben es erfunden und Menschen messen ihm Wert bei.
Dieses Thema folgt den altbekannten Backend-vs.-Frontend-Kommentaren, die, seien wir ehrlich, normalerweise nur die betrifft, die sich noch am Anfang ihrer Karriere befinden. Ganz offen gesagt, unterschiedliche Bereiche erfordern unterschiedliche Fähigkeiten, und darüber hinaus haben unterschiedliche Fähigkeiten unterschiedliche Grade an erforderlichem Kontext und zu lernenden Details.
Menschliche Sprachen sind unpräzise, so dass man immer am Rande des Begriffs "Programmiersprache" herumdoktern kann.
Was die Leute wirklich meinen, wenn sie sagen, HTML sei keine Programmiersprache, ist, dass man damit nicht die Dinge tun kann, die man mit anderen Technologien tun kann, die eindeutig Programmiersprachen sind.
Ich bin nicht vom Argument überzeugt, dass HTML mangels Logik keine Programmiersprache ist. Ich kann anerkennen, dass HTML Variablen hat, aber ich sehe keine Beweise dafür, dass es irgendeine Logik gibt. Ja, es passiert etwas, wenn das Attribut "open" vorhanden/entfernt ist, aber ist das das Ergebnis von Logik oder dank des Standardstylings, also CSS? Denn wenn die Interaktivität auf CSS zurückzuführen ist, dann ist es eine Krücke, ohne die HTML nichts tun kann, und keine Logik kann HTML allein zugeschrieben werden.
Die Interaktivität mit
details/summaryerfolgt ohne CSS. Beim Überprüfen der Entwicklertools werden keine zusätzlichen nativen Stile vom Browser angewendet, wennopenvorhanden/fehlt.Nein, es ist keine Programmiersprache, sondern nur eine verdammte Auszeichnungssprache. Ende jeder weiteren Diskussion.
Das sagen Backend-Entwickler immer.
Es ist aber eine Art Textkodierung? Sicher, vielleicht machen sich manche Leute über Webentwickler lustig, und das ist einfach albern. Aber das ändert nichts daran, dass HTML dasselbe ist wie JSON oder XML. Es ist einfach kodierter Text, der von einem Programm geparst werden soll.
Dies ist, was Argument #1 des Artikels widerlegt: eine Auszeichnungssprache und eine Programmiersprache zu sein, schließt sich nicht gegenseitig aus. Es gibt Beispiele für Computersprachen, die beides sind. Zum Beispiel ist TeX eine Programmiersprache und eine Auszeichnungssprache und existiert seit über 40 Jahren.
Ich bin ein langjähriger Entwickler und unterrichte zum Spaß einen Highschool-Kurs, den ich "Einführung in die Codierung" nenne, und hoffe nur, dass niemand denkt, es ginge um medizinische Codierung oder so etwas. Ich habe lange und intensiv über die Frage nachgedacht und der Grund, warum ich es "Codierung" und nicht "Einführung in die Programmierung" nenne.
HTML ist Code
HTML ist keine Programmierung
JavaScript ist Code
JavaScript ist Programmierung
Wenn HTML zu einer Art von Programmierung wird und nicht nur zu Codierung, dann ist sie wahrscheinlich zu weit fortgeschritten.
Ich bin mir nicht sicher, warum das überhaupt ein Thema ist. Auf die gleiche Weise, wie ein Kartenspiel Turing-vollständig sein kann, ohne die Absicht zu haben, eine Programmiersprache zu sein, war HTML nie dazu gedacht, eine Programmiersprache zu sein, und selbst wenn es Turing-vollständig wäre, würde das nichts an dieser Tatsache ändern.
Hier verwende ich den Begriff "Programmiersprache" in dem Sinne, wie er seit Jahrzehnten verwendet wird, nämlich dass man, wenn man ein Computerprogramm schreiben möchte, eine Sprache wählen muss, in der man dieses Programm schreibt. Ich bezweifle, dass irgendein vernünftiger Mensch denken würde, dass das Schreiben eines Computerprogramms dasselbe bedeutet wie das Entwerfen einer Webseite. Das ist offensichtlich nicht gemeint!
Wenn man sich für eine Sprache zum Schreiben eines Programms entscheidet, ist das normalerweise nur eine Frage der Präferenz oder Bequemlichkeit, da alle Programmiersprachen in diesem Sinne gleichwertig sind.
Turing-Vollständigkeit spielt hier eine Rolle und ist keineswegs "modisch". Als ich vor über 25 Jahren am College war, war es längst etabliert, dass jede (Allzweck-)Programmiersprache Turing-vollständig sein muss.
Nun gab es schon immer zweckgebundene Programmiersprachen, was aber nicht das ist, was man meint, wenn man von dem uneingeschränkten Begriff "Programmiersprache" spricht. Diese sind für spezielle Geräte, die ihre eigenen besonderen Programmiermethoden haben. Die Sprache wäre für diese speziellen Geräte von wenig Nutzen.
Auf jeden Fall verstehe ich immer noch nicht, warum jemand Verwirrung in Terminologie bringen sollte, die seit langem so verwendet wird. Es dient definitiv einem Zweck, denn man möchte nicht, dass Leute eine Sprache wie HTML speziell zum Schreiben von Computerprogrammen lernen und dann feststellen, dass dies nicht das ist, wofür diese Sprache entwickelt wurde, nur weil sich jemand entschieden hat, dass der Begriff "Programmiersprache" "inklusiver" sein muss.
Dieser Artikel ist noch pedantischer als die Behauptungen über HTML, denen er zu widerlegen versucht. An der Aussage, dass HTML eine Auszeichnungssprache und keine Programmiersprache ist, ist nichts falsch oder schädlich.
Meiner Meinung nach ist HTML nur ein Datenformat, nicht anders als JSON oder CSV.
HTML kann "codiert" werden, insofern als es manuell in einem Texteditor erstellt werden kann – ebenso wie CSV, JSON usw. – aber das Endergebnis ist, was es ist.
Wenn ein bestimmtes Dokument zweimal in einem bestimmten Browser geöffnet wird, werden die Verhaltensweisen beim zweiten Mal nicht (und können nicht) anders sein.
Aber dennoch denke ich gerne an "Programmierung" als den Akt des "Konsens mit einer Maschine erreichen". Angesichts der Komplexität der HTML-Spezifikation kann es sich manchmal anfühlen wie Programmierung, eine Seite "richtig aussehen" zu lassen. ;)
Ich antworte auf die Frage normalerweise wie folgt: HTML ist ein Datenformat zur Verkapselung und Präsentation, abgeleitet als Teilmenge von SGML, was viele Leute nicht wissen oder vergessen haben. Dass es Daten vielleicht nicht so "elegant" oder prägnant wie JSON oder [CT]SV verkapselt, liegt an seinem präsentationalen Aspekt (und ist auch nebensächlich). Genau wie TeX, Postscript usw..
Definitiv ist Minecraft eher eine Programmiersprache als HTML.
Eine Programdefinition als Nomen: eine Reihe zusammenhängender Maßnahmen oder Aktivitäten mit einem bestimmten langfristigen Ziel.
Eine als Verb: (einen Computer oder eine andere Maschine) mit codierten Anweisungen für die automatische Ausführung versorgen
Mein täglich Brot ist C++, aber basierend auf diesen Definitionen halte ich es für völlig fair, HTML als Programmiersprache zu bezeichnen. Und es ist fair, C++ als Auszeichnungssprache zu bezeichnen, da das, was erstellt wird, Auszeichnung ist, die von einem C++-Compiler verarbeitet werden kann, genauso wie HTML eine Auszeichnung ist, die von einem Webbrowser verarbeitet werden soll.
Sie sind sich vielleicht nicht bewusst, aber die Definition, die Sie für das Wort "Programm" verwendet haben, hat wenig mit einem Computerprogramm zu tun, es sei denn, es bezieht sich auf etwas wie den Lehrplan einer Schule im Bereich "Computer". Das ist ein Beispiel dafür, wo der Begriff "Computerprogramm" eine völlig andere Bedeutung hätte als im gegenwärtigen Kontext impliziert. Seien Sie vorsichtig bei der Verwendung von Wörterbuchdefinitionen auf diese Weise. Viele Male kann die richtige Bedeutung eines Begriffs nicht durch einfaches Zerlegen seiner Bestandteile abgeleitet werden!
Wenn ja, möchte ich sehen, wie HTML-Text in Maschinensprache kompiliert wird...
Turing-Vollständigkeit ist nicht so willkürlich, wie Sie sie darstellen. Sie ist willkürlich in dem Sinne, dass wir auch auf äquivalente Lambda-Kalküle oder Registermaschinen testen könnten, aber was Turingmaschinen nützlich macht, ist, dass ein Problem, wenn es nicht von einer Turingmaschine lösbar ist, überhaupt nicht lösbar ist.
Wenn wir also eine Turing-vollständige Sprache verwenden, können wir jeden möglichen Algorithmus implementieren.
Es gibt viele reale Algorithmen, die die unendlichen Zustände der Turingmaschine benötigen.
Ich würde Turing-Vollständigkeit auch als notwendiges, aber kein hinreichendes Kriterium betrachten. Wie Sie bereits darauf hingewiesen haben, gibt es viele Dinge, die Turing-vollständig sind, aber definitiv keine Programmiersprachen.
Davon abgesehen halte ich es für nützlicher, Programmiersprache als Beschreibung dafür zu betrachten, wie eine Sprache verwendet wird, anstatt als eine inhärente Eigenschaft der Sprache. Technisch gesehen können Sie jeden Algorithmus in CSS ausdrücken, also können Sie CSS als Programmiersprache verwenden, aber die meisten Leute tun es meistens nicht. Sie verwenden es als Stylesheet-Sprache.
Selbst wenn wir die Anforderung der Turing-Vollständigkeit fallen lassen, wird HTML immer noch nicht üblicherweise als Programmiersprache verwendet. Dies erklärt auch, warum die Haltung "Frontend ist keine echte Programmierung" verblasst ist. Die heutige Frontend-Entwicklung mit ihren komplexen UI-Interaktionen, Client-seitigem Rendering usw. ist eine ganz andere und umfangreichere Erfahrung als in den früheren Tagen des Webs mit statischen, dokumentenähnlichen Webseiten.
Warum spielt es also eine Rolle? Die Bezeichnung "Programmiersprache" weckt Erwartungen. Die Verwendung des Begriffs in einer etwas strengeren Weise als technisch notwendig ist, ist besonders hilfreich für Anfänger, die sich in diesem endlosen Ozean formaler Sprachen zurechtfinden.
Das Argument, das ich am häufigsten zugunsten der Klassifizierung von HTML als Programmiersprache höre, ist, dass dies seine Entwickler herabwürdigen würde und zur Rechtfertigung niedrigerer Löhne als für jemanden verwendet wird, der in einer traditionellen Programmiersprache programmiert.
Meine Frage hier wäre also, ob es tatsächlich Leute gibt, die ausschließlich von der Erstellung von HTML leben? Ich dachte, Leute würden entweder Website-Builder verwenden oder sind Frontend-Entwickler, die auch CSS und JavaScript schreiben müssen.
Ich denke, Sie haben Recht. Die Klassifizierung von Sprachen wie diesen basiert auf ihrer Designabsicht und ihrem Nutzen. Ich könnte theoretisch Nägel mit einem Steckschlüssel einschlagen, aber warum sollte es jemand wollen, wenn er eine Wahl hat? Und es bedeutet sicherlich nicht, dass das Werkzeug als Hammer klassifiziert werden sollte, nur weil es auf diese Weise verwendet werden kann!
Was die Turing-Vollständigkeit betrifft, so haben Sie auch Recht (zumindest unter der Annahme der Church-Turing-These), dass dies eine Sprache universell macht. Jeder endliche Code, der in einer formalen Sprache geschrieben ist, kann in einen endlichen Code in einer Turing-vollständigen Sprache übersetzt werden. Das Gegenteil ist nicht der Fall.
Natürlich bedeutet das nicht, dass alle Turing-vollständigen Sprachen als Allzweck-Programmiersprachen gelten sollten. Jede vernünftige Definition einer Allzweck-Programmiersprache muss jedoch zumindest implizieren, dass eine solche Sprache Turing-vollständig ist, da es sonst Programme gäbe, die nicht in dieser Sprache geschrieben werden könnten, was ein erheblicher Mangel wäre.
Das Problem bei der Darstellung in diesem Artikel ist, dass der Autor zu Argumentationszwecken davon ausgeht, dass, wenn alle Programmiersprachen Turing-vollständig sind, dann auch alle Turing-vollständigen Sprachen Programmiersprachen sein müssen, was eindeutig ein Trugschluss ist.
Toller Artikel!!
Eine Sache ist hervorzuheben: Heute kann man Dinge tun, die früher mit CSS und sogar JS gemacht werden mussten, die man jetzt in HTML machen kann..
Es ist eine großartige Sprache!!
Je nachdem, wie man es betrachtet, kann man sagen, ob es eine Programmiersprache ist oder nicht.
Was ist, wenn ich sage, HTML ist Maschinencode für eine Maschine, die das Layout-Engine ist und deren Verhalten steuert?
Andererseits kann man sagen, dass der Code der Layout-Engine in der Firmware liegt und HTML-Eingaben lediglich eine Konfiguration und kein Code sind.
Aber spielt das eine Rolle? Absolut nicht, es tut, was es soll (meistens).
Virtuelle Maschinen können ihren eigenen Maschinencode haben. Aber HTML ist IMHO kein Maschinencode – das würde die Definition von "Maschinencode" zu sehr dehnen. Aber definitiv würde ich es ablehnen, das Wort "Firmware" anders als für Code zu verwenden, der in der Hardware selbst gespeichert ist, im Gegensatz zu allgemeinem Speicher. Das BIOS des Computers ist Firmware. Sein Betriebssystem, nicht wirklich.
Ein besserer Ansatz für die Frage ist nicht zu fragen "Warum ist HTML keine Programmiersprache?", sondern zu fragen "Warum sollte HTML überhaupt eine Programmiersprache sein?"
Man kann mit HTML kein Programm schreiben. So einfach ist das. Eine Sprache kann keine Programmiersprache sein, wenn sie keine Programme schreiben kann. Wenn etwas auf Ihrem Bildschirm sichtbar zu machen als Programm zählt, dann ist Paint eine Programmiersprache, weil ich eine Strichfigur malen und die ".png"-Datei "Programm" an Sie senden kann, die Sie mit Ihrem bevorzugten Bildbetrachter öffnen können. Ist es jetzt auch Programmieren, eine PowerPoint-Präsentation zu erstellen?
Turing-vollständig zu sein ist ein guter Anfang, aber das allein macht noch keine Programmiersprache. Minecraft ist erst einmal keine Sprache. Das disqualifiziert es offensichtlich davon, eine "Programmiersprache" zu sein.
Man könnte genauso gut behaupten, ein Fahrrad sei ein Kraftfahrzeug. Wenn jemand behauptet, es habe keinen Motor, antwortet man: "Nun, ein Mixer hat einen Motor und ist kein Kraftfahrzeug". Ja. Weil es überhaupt kein Fahrzeug ist. Genauso wie HTML keine Programmierung ist und Minecraft keine Sprache ist. Keines von beiden sind Programmiersprachen.
Ich würde HTML nicht als Programmiersprache betrachten, da es keine Kontrollflüsse im Sinne von Kontrolllogik und die Möglichkeit von Verknüpfungen als verkettete Logik bietet.
Aber die ISO 2382 ist nicht so streng, da sie keine Logik verlangt.
http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/begriff_programmiersprache_de
Bearbeitung: Fluss statt Flotte
Wenn Logo eine Programmiersprache ist, dann ist es auch HTML. Wie Zed Shaw einmal sagte (das bezog sich auf CSS): Wenn man einen Computer anweist, Dinge zu tun, dann ist es eine Programmiersprache.
Wie man einen Entwickler zum Lachen bringt
„HTML ist eine Programmiersprache“
Nein, HTML ist keine Programmiersprache!! Hört auf, darüber zu streiten, wenn es das wäre, würden wir zum Beispiel kein JS verwenden.
Es ist sehr, sehr einfach zu verstehen.
Wenn ich sage, HTML sei keine Programmiersprache, dann nicht immer basierend darauf, was es kann, sondern auf seinen Zweck. Sein Zweck ist nicht, Logik zu erzeugen, sondern Daten so zu präsentieren, dass ein Mensch sie verstehen kann. Es ist im Grunde ein XML, das der Browser interpretieren und anzeigen kann. CSS hat ebenfalls diesen Zweck und daher würde ich es nicht als Programmiersprache bezeichnen.
SQL ist ein heikleres Thema. PLSQL hat definitiv Logik, aber wieder ist der Zweck der Datenbank, Daten zu speichern. Es sollte keine Geschäftslogik dort geben, daher neige ich dazu, es so zu behandeln, als ob Prozeduren und Funktionen nicht existieren würden, es sei denn, es ist extrem notwendig.
Der Artikel scheint zu festigen, dass HTML keine Programmiersprache ist.
Wenn wir also eine spezifische, rigorose Definition hätten, was eine Programmiersprache ist, könnten wir diese Diskussion endlich beenden.
Während viele gängige Definitionen HTML aus der Kategorie der Programmiersprachen ausschließen, konzentriert sich dieser Artikel auf diejenigen, die das nicht tun. Es ist keine Überraschung, dass viele Leute sagen, HTML sei keine Programmiersprache, aber ohne eine gemeinsame Definition dessen, was das bedeutet, ist es bedeutungslos und spielt keine Rolle. Warum diskutieren wir das schon wieder?
Okay, Leute, ihr seid eindeutig eine neue Generation. Also hört euch das Argument von jemandem aus der alten Generation an.
Programmiersprache bedeutet, mit der Maschine zu sprechen. Wie Basic, C++, C#, Python, Delphi, Java, PHP und so weiter.
HTML spricht mit dem Webbrowser, nicht mit der Maschine.
Java spricht mit einem Interpreter, nicht mit der Maschine selbst. Bedeutet das, dass Java keine Programmiersprache ist?
Nein, Java spricht mit einer virtuellen Maschine, die ebenfalls eine Maschine ist und eine JIT verwendet, um Maschinencode zu erzeugen.
Aber würdest du eine HTML-Seite als Programm bezeichnen?
Der Artikel hat mir sehr gut gefallen.
Weitere Punkte, die hinzugefügt werden können.
1) unverzichtbar
HTML ist die einzige Sprache, die man zum Erstellen einer Website nicht überspringen kann. Man kann eine Website ohne JS oder CSS erstellen, aber nicht ohne HTML.
2) Leute verstecken ihre Unwissenheit, indem sie HTML angreifen. Keine semantische Auszeichnung, Barrierefreiheit und Hilfsmittel, responsive Bilder (Bilder haben übrigens eine Logik).
Ich denke, das Problem ist, dass einige interpretieren, dass HTML als Auszeichnungssprache statt als Programmiersprache es irgendwie abwertet.
Das Schreiben von HTML unterscheidet sich stark vom Schreiben von etwas wie JavaScript/PHP/Python. Ich denke, das ist schwer zu widerlegen.
Ist es einfacher? In gewisser Weise ja, in anderer Weise nein.
Wie der Artikel am Ende bemerkt, liegt die Schönheit von HTML darin, dass die Grundprinzipien relativ einfach zu erlernen sind, aber die Beherrschung tatsächlich ein langer und schwieriger Prozess ist.
Ich denke, anstatt darüber zu streiten, ob HTML eine Programmiersprache ist oder nicht (ich denke – wissenschaftlich gesehen – ist es schwer zu argumentieren, dass es das ist), wäre es besser, sich damit zu befassen, was die wirkliche Anspielung hinter diesen Bemerkungen ist, nämlich dass HTML entweder einfach oder leicht ist (es ist keines von beiden).
HTML-Kenntnisse sollten meiner Meinung nach genauso hoch bewertet werden wie JavaScript/CSS/PHP-Kenntnisse. Es mag keine Programmiersprache sein, aber das macht sie nicht weniger wichtig oder schwieriger zu beherrschen.
Wir können den ganzen Tag darüber streiten, ob HyperText Markup Language eine Programmiersprache ist oder nicht (und warum nicht), aber das ist nicht die eigentliche Frage.
Die *eigentliche* Frage ist, ob HTML9 BoilerStrap JS* eine Programmiersprache ist oder nicht.
https://html9responsiveboilerstrapjs.com/
Und das ist von 2012. Sollte man nicht inzwischen etwas Neueres verwenden?
Was mich an diesem Artikel verwirrt hat, ist die Vorstellung, dass die Aussage, HTML sei keine Programmiersprache, herabwürdigend sei. Ich habe es immer als Auszeichnungssprache bezeichnet, aber ich empfinde das überhaupt nicht als herabwürdigend. Es ist extrem einfach zu lernen und zu verwenden, und das ist großartig.
Für mich ist HTML eine Reihe von Anweisungen für einen Computer, die befolgt werden müssen, um die grammatikalische oder strukturelle Bedeutung von Daten für Benutzer zu vermitteln.
„Reihe von Anweisungen für einen Computer, die befolgt werden müssen“ – Im Grunde ist das eine Programmiersprache. Und vielleicht, wenn wir anfangen würden, sie wie eine Programmiersprache zu behandeln, anstatt sie mit diesem „Es ist keine Programmiersprache“-Unsinn zu verspotten und herabzusetzen, dann würden wir vielleicht mehr Leute dazu bringen, richtige Semantik mit Trennung von Belangen und voller/richtiger Barrierefreiheit zu lernen, anstatt das Internet mit ermüdenden, idiotischen, halbherzigen SCHEISSE wie HTML/CSS-Frameworks zu bekleckern.
HTML ist eine Auszeichnungssprache und kann Attribute nicht auswerten oder lesen, wie Sie sagen, es ist die Browser-Engine, die Dinge mit dem HTML-Text tut und auswertet. Es ist eine deklarative Sprache, ja, sie bietet semantische Struktur für eine Software, die diese von Ihnen erwähnten Datenattribute verwendet, aber an sich ist sie nur ein Textstring.