Maison > interface Web > tutoriel CSS > HTML n'est pas un langage de programmation?

HTML n'est pas un langage de programmation?

William Shakespeare
Libérer: 2025-03-21 09:52:13
original
432 Les gens l'ont consulté

HTML n'est pas un langage de programmation?

HTML n'est pas un langage de programmation.

J'ai entendu cette phrase d'innombrables fois, c'est ennuyeux. Souvent, il est suivi par des mots comme "il n'a pas de logique" ou "ce n'est pas Turing-Complete" ... donc, évidemment ce n'est pas un langage de programmation. Il semblait que les choses étaient terminées et que la discussion devait s'arrêter.

Mais devrait-il vraiment être comme ça?

Je veux explorer les arguments que j'entends souvent pour dévaluer HTML et faire mes propres réfutations pour montrer que ces déclarations ne sont pas entièrement correctes.

Mon objectif n'est pas de prouver que HTML est ou n'est pas un langage de programmation , mais de montrer que les trois principaux arguments utilisés pour affirmer qu'il ne s'agit pas d'un langage de programmation est défectueux ou incorrect, invalidant ainsi la conclusion d'un point de vue logique.

"HTML est un langage de balisage, pas un langage de programmation"

La déclaration elle-même sonne bien… mais c'est mal: un langage de balisage peut être un langage de programmation. Toutes les langues de balisage ne le sont pas (surtout pas), mais elles peuvent l'être. Si nous dessinons un diagramme de Venn d'un langage de programmation et d'un langage de balisage, ce ne sera pas deux cercles distincts, mais deux cercles légèrement croisés:

Un langage de balisage qui utilise des variables, a des structures de contrôle, des boucles, etc., ou peut être un langage de programmation. Ce ne sont pas des concepts mutuellement exclusifs.

Tex et LaTeX sont des exemples de langages de balisage et de langages de programmation. Développer avec eux peut ne pas être pratique, mais c'est possible. Nous pouvons trouver quelques exemples en ligne, tels que l'interprète de base ou le contrôleur Mars Rover (qui a remporté le prix du jury dans le concours de programmation ICFP 2008).

Bien que certains langages de balisage puissent être considérés comme des langages de programmation, je ne dis pas que le HTML en fait partie. La clé est que l'instruction initiale était erronée: le langage de balisage peut être un langage de programmation . Par conséquent, dire que HTML n'est pas un langage de programmation car il s'agit d'un langage de balisage, est basé sur une fausse déclaration, et toutes les conclusions que vous tirez de cette prémisse seront absolument erronées.

"Html n'a pas de logique"

Cette déclaration nous oblige à clarifier le sens de la «logique» car la définition peut vous surprendre.

Comme Turing Exhativité (dont nous parlerons certainement bientôt), la personne qui a fait cet argument semble mal comprendre sa signification exacte. J'ai demandé aux gens de me dire ce qu'ils entendent par "logique" et j'ai obtenu des réponses intéressantes ci-dessous:

La logique est un moyen raisonnable de raisonner ou de penser.

C'est bien si nous recherchons une définition du dictionnaire de la logique. Mais nous parlons de logique de programmation , pas seulement de la logique comme terme général. J'ai également reçu des réponses comme ceci:

Les langages de programmation comprennent des variables, des conditions, des boucles, etc. HTML n'est pas un langage de programmation car vous ne pouvez pas utiliser de variables ou de conditions. Il n'a pas de logique.

C'est bon (et certainement mieux que d'aller à True / Faux / et / ou etc.), mais c'est aussi mal. HTML a des variables - sous la forme d'attributs - et ces variables / attributs et structures de contrôle peuvent être utilisées pour déterminer ce qui est affiché.

Mais comment contrôlez-vous ces variables? Vous avez besoin de javascript!

Erreur à nouveau. Certains éléments HTML ont une logique de contrôle interne et ne nécessitent pas JavaScript ou CSS pour fonctionner . Je n'en parle pas<link> ou Quelque chose comme ça - ce sont des structures de contrôle de base qui font partie de la norme depuis des décennies. Je veux dire les éléments qui répondent à l'entrée de l'utilisateur et effectuent des opérations conditionnelles en fonction de l'état actuel de l'élément et de la valeur de la variable. par <details>/<summary></summary></details> Tuple ou<dialog></dialog> Les éléments sont des exemples: lorsque l'utilisateur les clique, il sera fermé si l'attribut ouvert existe; Sinon, ils seront ouverts. Aucun javascript n'est requis. Donc, dire simplement HTML n'est pas un langage de programmation car il manque de logique est trompeur. Nous savons que HTML est en effet en mesure de prendre des décisions en fonction de la saisie des utilisateurs. HTML a une logique, mais elle est essentiellement différente de la logique d'autres langues conçues pour manipuler les données. Nous avons besoin d'arguments plus forts que cela pour prouver que le HTML n'est pas une forme de programmation.

"HTML n'est pas" Turing-Complete ""

Ok, c'est l'argument que nous voyons le plus dans ce débat. Techniquement (le meilleur type de correct), il est correct de dire que le HTML n'est pas Turing-Comple, mais cela devrait déclencher un débat plus important que de simplement l'utiliser comme énoncé final.

Je n'entrerai pas dans le sens de l'exhaustivité Turing, car il y a beaucoup de ressources sur ce sujet. En fait, Lara Schenck résume bien cela dans l'un de ses articles qui soutient que CSS est complet:

Autrement dit, pour un langage ou une machine, la perfection Turing signifie qu'elle peut faire ce que la machine Turing peut faire: effectuer n'importe quel calcul, c'est-à-dire le calcul général . Après tout, la programmation a été inventée pour faire des opérations mathématiques, et bien sûr, nous en faisons plus maintenant!

Parce que la plupart des langages de programmation modernes sont-tus-complets, les gens l'utilisent comme définition des langages de programmation. Mais l'exhaustivité Turing n'est pas le cas. Il s'agit d'une norme pour identifier si un système (ou son ensemble de règles) peut simuler une machine Turing. Il peut être utilisé pour classer les langages de programmation; il ne les définit pas. Cela ne fonctionne même pas uniquement dans les langages de programmation. Par exemple, le jeu Minecraft (répond à cette norme) ou le jeu de cartes Magic (répond également à cette norme). Les deux sont-TURING-COMPLET, mais je doute que quiconque les classerait comme des langages de programmation.

L'exhréation de Turing est maintenant populaire, tout comme certaines personnes pensaient que la différence entre les langues compilées et interprétées était une bonne norme. Oui. Nous n'avons pas à nous soucier de cela lorsque les développeurs (principalement des backends) sous-estiment la programmation frontale (y compris JavaScript et PHP) n'est pas une "programmation réelle". Vous l'entendez encore parfois, même s'il est maintenant fané, vague, chuchoté.

La définition de la programmation (ou non) change avec le temps. Je parie que quelqu'un trier les cartes de piercing se plaindrait que la saisie de code dans le langage d'assemblage n'est pas une véritable programmation. Il n'y a rien d'universel ou d'écrit sur la pierre. Il n'y a pas de définition réelle.

L'exhaustivité Turing est un critère juste, je dois dire, mais il est biaisé et subjectif - non pas sous sa forme, mais à sa manière de choisir. Pourquoi une langue qui peut générer des machines complètes Turing est-elle considérée comme un "langage de programmation", tandis qu'une autre langue qui peut générer des machines d'État finies ne le fait pas? C'est subjectif . C'est la même excuse pour quiconque de distinguer les «vrais développeurs» (ceux qui font cette déclaration) et ceux qui ne sont pas aussi bons qu'eux.

Pour aggraver les choses, il est évident que beaucoup de gens qui répétent le sort "HTML n'est pas Turing-Complete" ne sait même pas ou ne comprend même pas ce que signifie l'achat de Turing. Ce n'est pas un prix ou une marque de qualité. Ce n'est pas un insigne d'honneur. C'est juste un moyen de classer les langages de programmation - les regrouper au lieu de les définir. Un langage de programmation peut être Turing-Complete ou non, tout comme il peut être interprété ou compilé, impératif ou déclaratif, procédural ou orienté objet.

Alors, HTML est-il un langage de programmation?

Si nous pouvons dévaluer les principaux arguments qui prétendent que le HTML n'est pas un langage de programmation, cela signifie-t-il vraiment que HTML est un langage de programmation? Non, cela ne le signifie pas. Par conséquent, ce débat se poursuivra jusqu'à ce que le développement des normes HTML ou la «définition actuelle» des langages de programmation change.

Mais en tant que développeurs, nous devons nous méfier de cette question car dans de nombreux cas, il n'est pas utilisé pour inspirer des débats graves, mais pour susciter la controverse tout en cachant des motifs subterrières: de l'obtention d'une réponse Internet détendue à la réduction dangereuse d'un groupe de contributions des personnes à l'écosystème de développement.

Ou, comme Ashley Kolodziej a résumé brillamment dans son ode à HTML:

Ils disent que vous n'êtes pas un vrai langage de programmation comme les autres langues, vous êtes juste des langages de balisage, et techniquement, je suppose que c'est vrai. Techniquement, JavaScript et PHP sont des langages de script. Je me souviens encore que comprendre JavaScript n'était pas cool à ce moment-là, et ce n'était pas non plus une "vraie" langue. Parfois, je trouve ces différences dénuées de sens, comme nous avons créé un vocabulaire pour vous gêner (et nous-mêmes en tant que développeurs). En tant que langue de balisage, vous avez votre valeur et vos avantages uniques. Savoir comment vous utiliser au mieux est une véritable expertise qui est souvent négligée.

Quelle que soit notre position sur la discussion de "HTML est / n'est pas un langage de programmation", célébrons-le sans nier son importance: HTML est l'épine dorsale d'Internet. C'est une belle langue avec beaucoup de documentation et une grammaire étendue, mais il est si simple à apprendre dans un après-midi et si complexe qu'il faut des années à maîtriser. Qu'il s'agisse d'un langage de programmation ou non, ce qui compte vraiment, c'est que nous avons HTML.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal