Inhaltsverzeichnis
"HTML ist eine Markup -Sprache, keine Programmiersprache"
"HTML hat keine Logik"
"HTML ist nicht 'turing-abgeschlossen'"
Ist HTML also eine Programmiersprache?
Heim Web-Frontend CSS-Tutorial HTML ist keine Programmiersprache?

HTML ist keine Programmiersprache?

Mar 21, 2025 am 09:52 AM

HTML ist keine Programmiersprache?

HTML ist keine Programmiersprache.

Ich habe diesen Satz unzählige Male gehört, er ist langweilig. Oft folgt Wörter wie "Es hat keine Logik" oder "Es ist nicht turvervollständig" ... also ist es natürlich keine Programmiersprache. Es schien, als wären die Dinge vorbei und die Diskussion sollte aufhören.

Aber sollte es wirklich so sein?

Ich möchte die Argumente untersuchen, die ich oft höre, um HTML abzuwerten und meine eigenen Widerlegung zu machen, um zu zeigen, dass diese Aussagen nicht ganz richtig sind.

Mein Ziel ist es nicht zu beweisen, dass HTML eine Programmiersprache ist oder nicht , sondern zu zeigen, dass die drei Hauptargumente, die behaupten, dass es sich nicht um eine Programmiersprache handelt, fehlerhaft oder falsch sind, was die Schlussfolgerung aus logischer Sicht ungültig macht.

"HTML ist eine Markup -Sprache, keine Programmiersprache"

Die Aussage selbst klingt gut ... aber es ist falsch: Eine Markup -Sprache kann eine Programmiersprache sein. Nicht alle Markup -Sprachen sind (meistens nicht), aber sie können es sein. Wenn wir ein Venn -Diagramm einer Programmiersprache und eine Markup -Sprache zeichnen, sind es nicht zwei getrennte Kreise, sondern zwei leicht überschneidende Kreise:

Eine Markup -Sprache, die Variablen verwendet, Kontrollstrukturen, Schleifen usw. hat oder eine Programmiersprache ist. Sie sind keine gegenseitig ausschließlichen Konzepte.

Tex und Latex sind Beispiele für Markup -Sprachen und Programmiersprachen. Die Entwicklung mit ihnen ist möglicherweise nicht praktisch, ist aber möglich. Wir können einige Beispiele online finden, wie den Basis -Dolmetscher oder den Mars Rover Controller (der beim ICFP -Programmierwettbewerb 2008 den Jury Award gewonnen hat).

Während einige Markup -Sprachen als Programmiersprachen angesehen werden können, sage ich nicht, dass HTML einer von ihnen ist. Der Schlüssel ist, dass die erste Aussage falsch war: Die Markup -Sprache kann eine Programmiersprache sein . Daher basiert das Aussagen von HTML keine Programmiersprache, da es sich um eine Markup -Sprache handelt, auf einer falschen Aussage, und alle Schlussfolgerungen, die Sie aus dieser Prämisse ziehen, werden absolut falsch sein.

"HTML hat keine Logik"

In dieser Aussage müssen wir die Bedeutung von "Logik" klären, da die Definition Sie überraschen kann.

Wie die Vollständigkeit von Turing (über die wir definitiv bald sprechen werden) scheint die Person, die dieses Argument vorgebracht hat, ihre genaue Bedeutung missverstanden. Ich habe die Leute gebeten, mir zu sagen, was sie mit "Logik" meinen, und habe unten einige interessante Antworten erhalten:

Logik ist eine vernünftige Art zu denken oder zu denken.

Dies ist in Ordnung, wenn wir nach einer Wörterbuchdefinition von Logik suchen. Wir sprechen jedoch von der Programmierlogik , nicht nur von der Logik als allgemeiner Begriff. Ich habe auch solche Antworten erhalten:

Programmiersprachen enthalten Variablen, Bedingungen, Schleifen usw. HTML ist keine Programmiersprache, da Sie keine Variablen oder Bedingungen verwenden können. Es hat keine Logik.

Das ist gut (und sicherlich besser als zu wahr/falsch/und/oder usw.), aber es ist auch falsch. HTML hat Variablen - in der Form von Attributen - und diese Variablen/Attribute und Kontrollstrukturen können verwendet werden, um zu bestimmen, was angezeigt wird.

Aber wie steuern Sie diese Variablen? Sie brauchen JavaScript!

Fehler erneut. Einige HTML -Elemente haben eine interne Kontrolllogik und erfordern kein JavaScript oder CSS, um zu arbeiten . Ich spreche nicht darüber<link> oder So etwas - sie sind grundlegende Kontrollstrukturen, die seit Jahrzehnten Teil des Standards sind. Ich meine die Elemente, die auf Benutzereingaben reagieren und bedingte Vorgänge basierend auf dem aktuellen Zustand des Elements und des Werts der Variablen ausführen. von <details>/<summary></summary></details> Tupel oder<dialog></dialog> Elemente sind Beispiele: Wenn der Benutzer sie klickt, werden sie geschlossen, wenn das offene Attribut vorhanden ist. Es ist kein JavaScript erforderlich. Einfach einfach zu sagen, dass HTML keine Programmiersprache ist, da es keine Logik fehlt, ist irreführend. Wir wissen, dass HTML tatsächlich in der Lage ist, Entscheidungen auf der Grundlage der Benutzereingabe zu treffen. HTML hat eine Logik, unterscheidet sich jedoch im Wesentlichen von der Logik anderer Sprachen zur Manipulation von Daten. Wir brauchen stärkere Argumente als diese, um zu beweisen, dass HTML keine Form der Programmierung ist.

"HTML ist nicht 'turing-abgeschlossen'"

OK, dies ist das Argument, das wir in dieser Debatte am meisten sehen. Technisch gesehen ist es richtig zu sagen, dass HTML nicht abgeschlossen ist, aber dies sollte eine größere Debatte auslösen, als sie nur als Endaussage zu verwenden.

Ich werde nicht in die Bedeutung der Vollständigkeit eingehen, da es viele Ressourcen zu diesem Thema gibt. Tatsächlich fasst Lara Schenck dies in einem ihrer Artikel gut zusammen, der argumentiert, dass CSS vollständig ist:

Einfach ausgedrückt für eine Sprache oder Maschine bedeutet Turing -Perfektion, dass sie das tun kann, was die Turing -Maschine tun kann: Berechnung, dh allgemeine Berechnung durchzuführen. Immerhin wurde die Programmierung erfunden, um Mathematikoperationen zu erledigen, und natürlich machen wir jetzt mehr damit!

Da die meisten modernen Programmiersprachen abgeschlossen sind, verwenden die Menschen sie als Definition von Programmiersprachen. Die Vollständigkeit ist jedoch nicht der Fall. Es ist ein Standard, um festzustellen, ob ein System (oder sein Regelsatz) eine Turing -Maschine simulieren kann. Es kann verwendet werden, um Programmiersprachen zu klassifizieren. Es funktioniert nicht einmal nur in Programmiersprachen. Zum Beispiel das Spiel Minecraft (erfüllt diesen Standard) oder das Kartenspielmagie (auch diesen Standard). Beide sind vervollständigt, aber ich bezweifle, dass jemand sie als Programmiersprachen klassifizieren würde.

Die Vollständigkeit ist jetzt beliebt, ebenso wie einige Leute der Meinung waren, dass der Unterschied zwischen kompilierten und interpretierten Sprachen ein guter Standard war. Ja. Wir müssen uns keine Sorgen machen, wenn Entwickler (hauptsächlich Backends) Front-End-Programmierung (einschließlich JavaScript und PHP) unterschätzen, keine "echte Programmierung". Sie hören es manchmal immer noch, obwohl es jetzt verblasst, vage und geflüstert ist.

Die Definition der Programmierung (oder nicht) ändert sich im Laufe der Zeit. Ich wette, dass jemand, der Piercing -Karten aussortiert, beschwert, dass das Schreiben von Code in der Montagesprache keine echte Programmierung ist. Es gibt nichts Universelles oder auf Stein geschrieben. Es gibt keine tatsächliche Definition.

Die Vollständigkeit ist ein faires Kriterium, muss ich sagen, aber es ist voreingenommen und subjektiv - nicht in seiner Form, sondern in seiner Art zu wählen. Warum ist eine Sprache, die Turing -komplette Maschinen als "Programmiersprache" generieren kann, während eine andere Sprache, die endliche Zustandsmaschinen generieren kann, nicht? Das ist subjektiv . Dies ist die gleiche Entschuldigung für jeden anderen, zwischen "echten Entwicklern" (denen, die diese Aussage machen) und denjenigen, die nicht so gut sind wie sie, zu unterscheiden.

Um die Sache noch schlimmer zu machen, ist es offensichtlich, dass viele Menschen, die den Zauber "HTML nicht turenden" wiederholen, nicht einmal wissen oder verstehen, was Turing-Completness bedeutet. Es ist keine Auszeichnung oder ein Zeichen der Qualität. Es ist kein Ehrenabzeichen. Es ist nur eine Möglichkeit, Programmiersprachen zu klassifizieren- gruppieren sie sie, anstatt sie zu definieren. Eine Programmiersprache kann abgeschlossen werden oder nicht, genauso wie sie interpretiert oder kompiliert, imperativ oder deklarativ, prozedural oder objektorientiert werden kann.

Ist HTML also eine Programmiersprache?

Wenn wir die Hauptargumente abwerten können, die behaupten, HTML sei keine Programmiersprache, bedeutet dies wirklich, dass HTML eine Programmiersprache ist? Nein, das bedeutet es nicht. Daher wird diese Debatte bis zur Entwicklung der HTML -Standards oder der "aktuellen Definition" der Programmiersprachen fortgesetzt.

Aber als Entwickler müssen wir uns vor diesem Problem vorsichtig sein, da es in vielen Fällen nicht verwendet wird, um schwerwiegende Debatten zu inspirieren, sondern um Kontroversen zu rühren, während sie unterenriorische Motive versteckt: von einer entspannten Internetreaktion auf gefährlichem Verringerung einer Gruppe von Menschen zur Entwicklung des Entwicklungsökosystems.

Oder, wie Ashley Kolodziej brillant in ihrer Ode an HTML zusammenfand:

Sie sagen, Sie sind keine echte Programmiersprache wie andere Sprachen, Sie sind nur eine Markup -Sprache, und technisch gesehen denke ich, dass das richtig ist. Technisch gesehen sind JavaScript und PHP Skriptsprachen. Ich erinnere mich noch daran, dass das Verständnis von JavaScript zu dieser Zeit nicht cool war und es auch keine "echte" Sprache war. Manchmal finde ich diese Unterschiede bedeutungslos, als hätten wir einen Wortschatz geschaffen, um Sie (und uns selbst als Entwickler) zu behindern. Sie haben als Markup -Sprache Ihren einzigartigen Wert und Ihre Vorteile. Zu wissen, wie Sie Sie am besten verwenden können, ist ein echtes Fachwissen, das oft übersehen wird.

Unabhängig von unserer Position zur Diskussion von "HTML ist/ist keine Programmiersprache", lassen Sie es uns feiern, ohne seine Bedeutung zu leugnen: HTML ist das Rückgrat des Internets. Es ist eine schöne Sprache mit viel Dokumentation und umfangreicher Grammatik, aber es ist so einfach an einem Nachmittag zu lernen und so komplex, dass es Jahre dauert, um zu meistern. Ob es sich um eine Programmiersprache handelt oder nicht, was wirklich wichtig ist, ist, dass wir HTML haben.

Das obige ist der detaillierte Inhalt vonHTML ist keine Programmiersprache?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hinzufügen von Kastenschatten zu WordPress -Blöcken und -Elementen Hinzufügen von Kastenschatten zu WordPress -Blöcken und -Elementen Mar 09, 2025 pm 12:53 PM

Hinzufügen von Kastenschatten zu WordPress -Blöcken und -Elementen

Erstellen Sie ein JavaScript -Kontaktformular mit dem Smart Forms Framework Erstellen Sie ein JavaScript -Kontaktformular mit dem Smart Forms Framework Mar 07, 2025 am 11:33 AM

Erstellen Sie ein JavaScript -Kontaktformular mit dem Smart Forms Framework

Arbeiten mit GraphQL Caching Arbeiten mit GraphQL Caching Mar 19, 2025 am 09:36 AM

Arbeiten mit GraphQL Caching

Entmystifizierende Bildschirmleser: Zugrunde Formen und Best Practices Entmystifizierende Bildschirmleser: Zugrunde Formen und Best Practices Mar 08, 2025 am 09:45 AM

Entmystifizierende Bildschirmleser: Zugrunde Formen und Best Practices

Machen Sie Ihren ersten Seltsamen -Sufle -Übergang Machen Sie Ihren ersten Seltsamen -Sufle -Übergang Mar 15, 2025 am 11:08 AM

Machen Sie Ihren ersten Seltsamen -Sufle -Übergang

Vergleich der 5 besten PHP -Formbauer (und 3 kostenlose Skripte) Vergleich der 5 besten PHP -Formbauer (und 3 kostenlose Skripte) Mar 04, 2025 am 10:22 AM

Vergleich der 5 besten PHP -Formbauer (und 3 kostenlose Skripte)

Show, Don ' Tell Show, Don ' Tell Mar 16, 2025 am 11:49 AM

Show, Don ' Tell

Was zum Teufel haben NPM -Befehle? Was zum Teufel haben NPM -Befehle? Mar 15, 2025 am 11:36 AM

Was zum Teufel haben NPM -Befehle?

See all articles