Pourquoi est-il important que HTML et CSS ne soient pas des langages de programmation?

158

Exemple ici:

Quelles langues dois-je savoir si je suis intéressé par la construction d'applications Web?

Oui, je comprends que HTML et CSS ne sont pas complets. Oui, je comprends que ce sont des langages déclaratifs et non impératifs. Mais pourquoi les gens ont-ils toujours la tête dans les cheveux avec ce fait pédant (et sans doute évident) quand ils posent une question sur ces langues?

Robert Harvey
la source
32
Cela m'embête seulement lorsque les gens le mettent sur leur CV. Ce n'est que pire, c'est quand ils ont mis jQuery à côté de JavaScript sous "Expérience linguistique".
Josh K
19
Cela me semble tout à fait évident: si je dois déterminer qui embaucher ou à qui confier une tâche particulière, il faut que je sache quelles sont leurs compétences. Si l'affectation implique la mise en œuvre d'un algorithme, je ne le donnerai pas à quelqu'un qui n'a que de l'expérience en HTML / CSS. Je ne vais pas assigner à quelqu'un qui a seulement de l'expérience en écriture de programmes en ligne de commande C à l'écriture de plusieurs pages Web complexes devant fonctionner sur plusieurs navigateurs. Je ne sais pas si vous avez été en mesure de recruter ou de gérer des personnes, mais vous rencontrez beaucoup de gens qui jurent que ces tâches sont interchangeables.
Charles E. Grant
8
Les données ne sont que du code stupide et le code n'est que des données intelligentes: stackoverflow.com/questions/871833/…
Christoffer Hammarström
14
Les gens ne comprennent pas la question du PO qui, en termes plus brutaux, serait: "Pourquoi un certain type de twit, dans une discussion sur les" langages "généralisés, ressent le besoin de souligner que CSS n'est pas un langage de programmation ? " Tout d'abord, duh. Je vous remercie. Quiconque connaît même une poignée modeste d'astuces stupides sur JavaScript obtiendra cela. Est-ce que la maîtrise de CSS signifie quelque chose pour un programmeur qui a été là et a maîtrisé ça? Oh oui. Oui. Peu importe si nous programmons le prochain rover de Mars, c'est un jeu décisif.
Erik Reppen
7
XSLT est un cas intéressant à considérer dans ce contexte ...
Dan Diplo

Réponses:

300

Quelle est la différence, vraiment?

La différence réelle et importante entre un langage de programmation et ces autres langages est la suivante:

HTML et CSS décrivent la présentation , alors que les langages de programmation décrivent la fonction

J'ai l'intention d'expliquer pourquoi cette différence est importante, mais le pédantisme sur cette question est parfois mal placé.

Une histoire vraie :

Une fois, j’ai passé quelques mois à développer un système complexe de gestion de la performance utilisant un langage de programmation "approprié". Il a automatisé le processus de collecte de données à partir de divers autres systèmes, effectué diverses manipulations sur ces données, puis présenté les résultats dans un simple tableau.

Une fois en direct, un cadre supérieur a vu un outil conçu pour une entreprise similaire et nous a demandé si nous pouvions remplacer ce que j’avais écrit en utilisant leur alternative. En outre, il était mécontent que je passe des semaines à développer ma solution, où cette nouvelle application avait été écrite en quelques jours.

Une enquête plus approfondie a révélé que l’option privilégiée par le directeur était une présentation sans substance: il y avait beaucoup de couleurs, d’icônes et de graphiques, mais il n’y avait aucune logique derrière. Toutes les données devaient être collectées et manipulées manuellement. Malgré la jolie interface, l'application était essentiellement inutile.

Je suis heureux de pouvoir dire que le responsable en question était persuadé que mon approche répondait à ses besoins réels.

L'importance de la présentation :

On sous-entend souvent que les compétences en HTML, CSS, etc. sont en quelque sorte inférieures aux compétences en "vrais" langages de programmation. C'est une grave erreur.

Dans mon histoire, le cadre supérieur estimait que le design était très important pour lui, dans la mesure où il était prêt à négliger la fonctionnalité. Maintenant, s’il s’agissait d’un incident isolé, je pourrais peut-être laisser entendre que le directeur était juste stupide. Mais ça ne l'était pas. Maintes et maintes fois, j'ai rencontré des utilisateurs impressionnés par des graphiques flashy et des widgets fantastiques, mais peu impressionnés par les fonctionnalités brutes et par mes réalisations techniques. Je pense qu'il y a plusieurs leçons à apprendre ici:

  • Les gens évaluent les logiciels sur des critères qu'ils comprennent. Ils comprennent souvent la différence entre beau et laid, mais apprécient rarement les nuances techniques.
  • Les gens sont dupés par les apparences. Ce n'est peut-être pas une bonne chose, mais c'est une réalité avec laquelle nous devons vivre.
  • Les apparences influencent la façon dont les gens perçoivent les logiciels. Ce que les gens pensent des logiciels est important pour eux. En effet, les gens préfèrent parfois un logiciel qui leur permet de se sentir bien par rapport à un logiciel fonctionnellement supérieur. En effet, ils pourraient bien être plus productifs avec des outils de bien-être qu'avec des outils techniquement supérieurs. Dans cette mesure, nos utilisateurs ne sont pas dupes. Ils font en fait un choix judicieux et réfléchi.
  • En tant que programmeurs, nous négligeons souvent le rôle de la présentation, car nous nous concentrons sur la fonction. Dans une certaine mesure, cela est juste et approprié. Cependant, il est important de reconnaître qu’un autre aspect de notre travail est important pour nos clients.

Les langages orientés présentation (HTML, CSS) sont donc importants. La valeur ajoutée par ceux qui peuvent utiliser ces outils efficacement ne doit pas être sous-estimée.

L'importance des vrais langages de programmation

Comme l'OP l'a fait remarquer, les "vrais" langages de programmation sont Turing Complete. En tant que véritable geek triste, je trouve cela sublimement fascinant. Cela signifie que, pour tout programme écrit dans un langage TC, un programme fonctionnellement équivalent peut être écrit dans tout autre langage TC. Bien sûr, cela ne veut pas dire que toutes les langues sont les mêmes. Ils ont chacun leurs forces et leurs faiblesses qui les rendent plus ou moins adaptés à certaines tâches. Cependant, en dehors des E / S, cela signifie que tous les programmes peuvent être écrits dans tous les vrais langages de programmation.

(Incidemment, l'important est TC. Le déclaratif par rapport à l'impératif est un red-herring ici. SQL, par exemple, est déclaratif, mais constitue également un langage de programmation approprié puisqu'il s'agit de TC.)

Bien sûr, il n'en va pas de même pour un langage de balisage tel que HTML ou CSS. En fait, il existe des classes entières de problèmes que ces langues ne peuvent tout simplement pas résoudre . Là où je peux programmer tout ce que je veux dans un vrai langage de programmation, y compris les moteurs de mise en page, il n’est tout simplement pas possible d’obtenir les mêmes résultats avec des langages qui ne sont pas TC.

Comme souligné dans mon récit, HTML et son genre sont utilisés pour produire une présentation. Les vrais langages de programmation sont utilisés pour produire des fonctionnalités.

Pourquoi les programmeurs sont-ils pédants sur tout cela?

  1. Les programmeurs consacrent beaucoup de temps, d'effort et d'argent à développer leurs compétences. Les gens attachent naturellement de l'importance aux choses dans lesquelles ils investissent ("votre coeur est la où votre argent est").
  2. Les programmeurs ressentent souvent le besoin de justifier le temps nécessaire pour produire des résultats par rapport aux résultats rapides obtenus par les concepteurs d'interface utilisateur. Pour ce faire, ils doivent établir une distinction entre ce que les deux groupes font réellement .
  3. Parce que les employeurs doivent appliquer les bonnes personnes aux bons emplois. À moins de clarifier les différences (souvent techniques), les responsables passent facilement les mauvais appels.
  4. Parce qu'il existe une différence réelle et fondamentale , comme indiqué ci-dessus.

Est-il toujours approprié d'être pédant?

Regardons les choses en face, en tant que programmeurs, nous sommes un groupe naturellement pédant . Cela va avec le territoire. Cela n'aide pas que beaucoup d'entre nous ont été brûlés quand les non-programmeurs n'ont pas compris ce que nous faisions.

Néanmoins (et pour être honnête, cela va à l’encontre de mon instinct naturel), je ne pense pas que nous ayons besoin d’appeler les gens chaque fois qu’ils échappent à chaque petite distinction .

Les choses importantes ici sont le contexte et la perspective .

On me dit que, du point de vue d'un biologiste, une tomate est un fruit. Mais quand je les achète au supermarché, je les cherche parmi les légumes. Pourquoi? Parce que la distinction technique importe peu dans ce contexte particulier. En outre, la distinction nuirait à leur utilité: si j'étais assez stupide pour inclure des tomates dans une salade de fruits, par exemple.

C'est la même chose avec les langages informatiques. Il y a des moments où la différence entre les langages de programmation et les autres langages compte vraiment . Très souvent, cependant, nous pouvons tous communiquer de manière parfaitement efficace lorsque nous les rassemblons tous ensemble. Dans le cas de la question liée par le PO, peu importaient quelles langues étaient de vrais langages de programmation et lesquelles ne l'étaient pas. Souligner la distinction n'a pas fait avancer la discussion en aucune façon. Heureusement, mis à part ajouter un peu de bruit (et devenir le stimulant d'une discussion intéressante!), Le pédantisme lié par l'OP importait peu. Au pire, cependant, le pédantisme peut susciter des sentiments négatifs et nuire aux relations ... du moins, selon ma femme.
:-)

Comment gérer le pédantisme chez les programmeurs

Un de mes amis prédicateurs a prononcé un sermon intitulé:

est-ce une colline qui vaut la peine de mourir?

Il faisait allusion aux généraux qui font une évaluation stratégique des batailles qui valent la peine d'être menées: les gains en valent-ils les coûts?

  • Vaut-il vraiment la peine d'interrompre le fil de la discussion pour faire cette distinction?
  • Mon pédantisme découle-t-il d'un sentiment d'arrogance ou d'une blessure passée?
  • Mes commentaires valorisent-ils les compétences des autres ainsi que les miennes?

Bien sûr, il y a des moments où des distinctions doivent être faites. Mon objectif est que, lorsque j'apporte une contribution, cela ajoute de la valeur à nos efforts collectifs.

Après tout, c’est le travail de tout programmeur réel .

Kramii
la source
4
Je ne pensais pas que SQL était Turing-complet, sauf si vous parlez de T-SQL ou de PL / SQL.
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner: Vous avez raison! Merci de me prendre à ce sujet. (Cependant, ce que je dis, c'est que les langages déclaratifs peuvent être TC)
Kramii
1
Très bonnes réponses. En tant que développeur Web, j'ai souvent constaté des situations où les clients sont beaucoup plus impressionnés par un design "flashy" que par les fonctionnalités proposées. Bien que cela puisse heurter nos instincts de programmeur puriste (que la fonctionnalité soit roi), nous l'ignorons à nos risques et périls.
Dan Diplo
4
+1: Joel Spolsky a un article de blog intéressant qui résume le problème de la fonction vs l'interface graphique flashy. Surtout les risques de montrer une interface graphique 100% terminée et très flashy lorsque la fonctionnalité n'est pas en place. Une bonne lecture si vous ne l'avez pas lu. joelonsoftware.com/articles/fog0000000356.html
Léo
3
"Ils pourraient bien être plus productifs avec des outils de bien-être qu'avec des outils techniquement supérieurs" - Vrai, vrai, vrai! Apple a construit leur entreprise sur ce point. Ne vous méprenez pas, Mac a une substance aussi, mais ce qui a fait que certaines personnes paient presque deux fois plus pour une machine Mac comme un Linux ou Windows est qu'il semble cool et il se sent bien à utiliser.
GlenPeterson
116

Informez un ingénieur civil ou en mécanique que vous avez étudié le "génie logiciel" et il vous dira que le "génie logiciel" n'est pas une véritable ingénierie.

Dites à un pilote de F-16 que vous pilotez Cessnas pour le plaisir et qu'il vous dira que vous n'êtes pas un vrai pilote.

Dites à un médecin que vous êtes un chiropraticien et qu'il vous le dira… bon, n'y allons pas :-)

Je pense que c'est surtout que les gens n'aiment pas l'idée que leur profession soit infiltrée par des prétendants ou par des gens qui ne sont pas vraiment "dignes".

Pour être juste, il est clair que HTML et CSS ne sont pas des langages de programmation . Le format .docx n’est plus un langage de programmation, c’est un langage de programmation, et prétendre que vous êtes un programmeur si vous ne connaissez que le HTML et que le CSS est certainement inexact. Mais je pense qu'une partie de la véhémence dans la réponse peut être attribuée à ce que j'ai dit ci-dessus.

De plus, dans la question que vous avez liée, le questionneur a appelé HTML et CSS un "langage" et non un "langage de programmation". Le HTML est un langage de balisage et le CSS est aussi un langage (je ne sais pas quel "type" de langage vous appelez CSS, cependant?), Donc je pense que c'était un peu injuste de le solliciter pour les avoir appelés "langages" "...

Dean Harding
la source
7
"Je ne sais pas quel" genre "de langage vous appelleriez CSS, cependant?" - à la limite "le langage de description de style" le ferait.
octobre
28
@ acidzombie24: Que signifie le "L" dans "HTML"?
Dean Harding
8
Si la syntaxe et la sémantique sont respectées, il est difficile de prétendre que ce n'est pas un langage. HTML et CSS sont les deux langues selon ces critères (de même que l'anglais, l'espéranto, le klingon et sans doute le format UML). Cependant, aucun d'entre eux n'est un langage de "programmation".
Zach
6
@Dean Harding - Legos à balisage texte super?
VirtuosiMedia
4
CSS est un langage DSL (Domain Specific Language) permettant de décrire le style (c'est-à-dire que son domaine est l'esthétique visuelle)
Paul
9

Cela ne compte pas tellement pour moi.

Mais je suppose que pour ceux à qui il est destiné, la distinction entre HTML, CSS, XML, etc. et Real Programming Languages ​​™ est un peu comme la distinction entre le bois et la peinture en tant que matériaux de construction. Vous ne pouvez pas construire de choses avec de la peinture comme avec du bois, et vous ne pouvez pas non plus programmer avec HTML comme avec un RPL.

Je vous l'accorde cependant, pour certaines conversations, faire une telle distinction peut être sans importance, et donc pédant et ennuyeux.

Eric King
la source
1
XML est un mauvais exemple car il est plus général que HTML / CSS - XSLT est à la fois XML et Turing-complete, par exemple. Je pense que XML n'est pas vraiment un langage aussi complexe que la syntaxe: il spécifie comment les jetons sont définis mais pas leur signification.
Tikhon Jelvis
@TikhonJelvis Je pense que nous disons essentiellement la même chose, mais ce faisant, vous prouvez ce que je pense. Diviser les cheveux en deux pour déterminer si XML (eXtensible Markup Language) est un "langage" ou une "syntaxe" est généralement dépourvu de pertinence, car je faisais ...
Eric King
6

Ce n’est peut-être pas une distinction "importante", étant donné que la partie html / css de certains sites Web demande aussi beaucoup de travail que la partie programmation.

Mais il est une distinction importante, puisque personne qui ne sait pas ce que cela signifie n'a pas sa place dans une équipe qui fait le développement web.

Si un concepteur pense que HTML est de la programmation, laissez-le continuer à concevoir avec les outils Adobe et réalisez des conceptions liées à l'impression; mais ne croyez pas ce qu'il pourrait dire à propos des applications Web.

Si un développeur pense qu'il est au-dessus des concepteurs parce que "ses" langues sont Turing-complete, ne vous attendez pas à ce qu'il travaille bien avec le concepteur, ou que son code puisse être "ravi" une fois terminé.

Javier
la source
@ Javier: Quelle est votre définition du "langage de programmation"?
Christoffer Hammarström
@Christoffer Hammarström: si j'essayais de donner une définition formelle, j'irais avec la complétude de Turing; mais de manière informelle, je dis simplement qu’un programme fait des choses, en réponse à certaines contributions. D'habitude, s'il n'y a pas de if ... thenconstruction au moment de l'exécution et un moyen de répéter les choses un nombre de fois auparavant inconnu, j'ai tendance à dire que ce n'est pas un langage de programmation. Bien sûr, certains langages marginaux compliquent la définition; mais HTML / CSS sont loin de cela.
Javier
@ Javier: Diriez-vous que le canon "Hello World" est un programme, étant donné qu'il ne nécessite aucune entrée?
Christoffer Hammarström
@Javier: Selon une discussion sur Wikipedia ( en.wikipedia.org/wiki/ ), les premières versions des langues de Pixel Shader n'étaient pas complètes (pas de "capacité d'itération généralisée"), c'est-à-dire "une manière de répéter les choses nombre inconnu de fois "). C'étaient des langages utilisés uniquement par les programmeurs pour programmer l'unité de traitement graphique dans les jeux populaires. Diriez-vous toujours qu'ils ne sont pas des langages de programmation?
Christoffer Hammarström
@Christoffer: Hello world a besoin d'une entrée: vous devez lancer son exécution. Votre observation à propos de Pixel Shader est toutefois intrigante.
Robert Harvey
5

Vous l'avez frappé à la tête quand vous avez dit "déclaratif, pas impératif". Le balisage (que ce soit HTML, CSS ou autre) décrit les choses. Le but de la programmation est de faire les choses.

L'ensemble de compétences requis pour utiliser le balisage est complètement différent de celui requis pour programmer.

Les types de problèmes résolus par l'écriture de balisage sont complètement différents des types de problèmes résolus par la programmation.

HedgeMage
la source
16
Les langages de programmation fonctionnels purs sont par nature déclaratifs. Il en va de même pour Linq, la compréhension de liste de Python, XAML, XSLT, SQL et Prolog. Tous sont des langages de programmation et / ou des concepts de bonne foi. Bien que la plupart des langages de programmation soient impératifs, ce n’est pas la caractéristique qui le définit. Du tout.
Konrad Rudolph
@ KonradRudolph - Si vous pensez que les langages de programmation purement fonctionnels sont en quelque sorte déclaratifs, vous ne devez pas les comprendre très bien.
Jonathan Cast
@ jcast Il est tout à fait possible que je comprenne mal quelque chose. Mais il en va de même pour les experts du domaine. Pour une référence générale, Wikipedia classe les langages de programmation (purement) fonctionnels comme déclaratifs. À titre d’exemple spécifique, Paul Bone, qui est titulaire d’un doctorat pour travailler sur les langages déclaratifs purs, suit également cette définition. Je serais curieux de savoir pour quelle raison vous êtes offensé par la définition.
Konrad Rudolph
5

Cela a de l'importance pour certaines personnes, car elles ne sont pas non plus à la surface des fusées, mais de nombreuses arcanes les entourent car elles sont implémentées différemment dans 5 à des dizaines d'environnements différents qui vous intéressent. Ce type d'imprévisibilité et d'attention portée à l'artisanat effraie un certain nombre de professionnels de la technologie qui sont horrifiés par des risques non quantifiables et encore plus horrifiés d'apprendre autre chose que ce qu'ils doivent absolument obtenir après l'obtention d'un diplôme.

Si quelqu'un me demandait quelles langues je connaissais et si jettais CSS, il me disait "mais ce n'est pas une langue REELLE", je leur demanderais comment ils gèreraient le centrage vertical d'une div dans IE 5, 6-8 et IE9 +. Ensuite, nous pourrions passer aux angles arrondis, aux problèmes de transparence alpha, au VRAI coupable derrière tous ces arguments ridicules de tableaux comme de mise en page qui commencent tout juste à devenir vraiment inutiles et à des dizaines de sujets supplémentaires pour ledit super codeur qui en sait probablement un. langue et prétend un ou deux qu'il est à peine alphabétisé fonctionnellement en raison de cours, il a été obligé de prendre à l'université il y a 10 ans.

Ce sont vraiment des «langues». Je ne les appellerais pas «langages de programmation». Je me sentirais à l'aise de décrire le processus d'écriture dans le "codage" de ces langues.

En ce qui me concerne, cependant, quiconque a réussi à maîtriser parfaitement CSS a le chutzpa et l'éthique de travail qui lui permettent de devenir un excellent programmeur, a déjà une expérience de la pensée orientée objet, et a sans doute appris à réfléchir à la écrit maintenant pourrait avoir un impact sur son travail 25 projets dans le futur.

Erik Reppen
la source
2
+1 Je ne sais pas combien de fois j'ai entendu un "programmeur" qualifier de HTML / CSS une programmation simple et non réelle. Ensuite, quand ils ne peuvent pas comprendre pourquoi leur liste à puces s’aligne uniquement correctement dans Firefox, ils lèvent la main et déclarent que tout le Web est impropre aux logiciels modernes :(
Graham
3

HTML et CSS ne sont pas des langages de programmation. Passer à autre chose.

Cependant: JavaScript est un langage de programmation. La machine est le navigateur. PHP est un langage de programmation. La machine est virtuelle sur le serveur.

Donc, si vous utilisez uniquement HTML et CSS, vous ne faites aucune programmation (même si vous faites de l’ingénierie).

Mais si vous utilisez JavaScript, PHP ou un autre langage de script. Vous faites de la programmation.

En ce qui concerne les langages de programmation REAL. Si vous travaillez sur une machine (réelle ou virtuelle). Et utilisez VOS PROPRES algorithmes pour indiquer à la machine de faire certaines choses. Ensuite, vous utilisez un langage de programmation REAL.

Ricardo Santos
la source
6
Je suppose donc que nous pouvons nous passer de HTML, CSS et SQL car, après tout, ce ne sont de toute façon pas de vrais langages de programmation. En fait, nous pourrions aussi bien nous passer de l'IDE, car tout programmeur digne de ce nom peut se contenter d'un éditeur de ligne de commande.
Robert Harvey
4
Je n'ai pas voté personnellement cette réponse (je pense que -6 est suffisant!), Mais je suppose que la raison de ces votes négatifs est que cela ne répond pas vraiment à la question. La question n'est pas "sont les langages de programmation HTML et CSS?", La question est "pourquoi est-ce important?"
Dean Harding
6
@ Robert C'est complètement spécieux. "X ne vaut rien" ne découle pas de l'argument de Ricardo selon lequel "X n'est pas un Y".
Matthew lu
4
@ Lennart Regebro @Robert Harvey: La position de @Matthew Read est le nœud de la conversation - vous assimilez un sentiment de supériorité à un déni de mensonge. HTML / CSS est exceptionnellement difficile, j'engage des personnes qui peuvent le faire pour moi car je ne suis pas assez bon, je manque de compétences. C'est une compétence technique de conception, ce n'est pas de la programmation .
Orbling
3
Rendre le mot "programmation" si large revient à le rendre presque vide de sens. Le sens est plus étroit que cela, et vous aurez peut-être une opinion différente, mais il s’avère que le langage signifie ce que la majorité utilise pour signifier.
Matthew Lu
3

Le langage de programmation est un terme un peu inexact car c’est un terme commun, utilisé aussi bien par les praticiens que par les profanes. Les praticiens ont une signification nuancée de ce terme alors que le profane n'en a généralement pas. Normalement, leur définition est que si elle contient des mots / une syntaxe amusante que je ne comprends pas tout de suite et que les programmeurs utilisent, alors ce doit être un langage de programmation. Pas complètement faux, mais nous pouvons convenir que c'est inexact.

Des mots tels que déclaratif, impératif et turing complet sont des termes plus précis au sens très spécifique. Lorsque vous posez une question du type "Pourquoi le langage HTML / CSS n'est-il pas un langage de programmation?", Vous demandez une définition plus précise de ce qu'est réellement un langage de programmation. Nous ne sommes pas pédants, mais essayons de répondre à votre question. Sont-ils les meilleurs termes à utiliser lorsque même si vous les recherchez sur Google, il est difficile de comprendre ce qu’ils signifient? Dépend. Vouliez-vous une réponse courte ou longue? :-)

Les programmeurs pensent généralement que les langages de programmation sont Turning-complete, mais qu'est-ce que cela signifie? Cela signifie que le langage peut décrire le comportement ou comment faire les choses. Nous appelons formellement cela la logique. HTML / CSS peut décrire un bouton dans le coin supérieur droit ou un tableau à 4 colonnes, 5 lignes, les deux premières lignes étant jaunes et la ligne inférieure comportant du texte vert et chaque cellule du tableau comprenant 5 pixels. d'espace vide autour du contenu.

Ce que HTML / CSS ne peut pas faire, c'est exprimer le comportement ou la logique de ce qui se passe lorsque vous cliquez sur le bouton. Lorsque je clique sur ce bouton, il ne peut pas dire que les valeurs sont extraites de la table et additionnées, puis que cette valeur est écrite dans une nouvelle ligne en bas de la table. Décrire un comportement équivaut à peu près à devenir complet sans devenir trop pédant.

Plus précisément, Turing-complete signifie que vous pouvez implémenter le langage en lui-même. Cela voudrait dire que je pourrais écrire un programme javascript qui prend une chaîne de javascript et qu'il puisse l'exécuter (sans utiliser la fonction eval ()). En fait, je peux écrire un programme javascript qui pourrait prendre un programme écrit dans n’importe quel langage complet de Turing et l’évaluer. C'est ce que cela signifie d'être complet à Turing. Toutes les langues qui sont en train de tourner sont équivalentes dans quels programmes peuvent être exprimés. Une révélation assez étonnante si vous y réfléchissez.

chubbsondubs
la source
Turing-complete signifie que le langage peut être utilisé pour simuler une machine de Turing (ou qu'elle peut calculer n'importe quelle fonction calculable par Turing).
Mipadi
3
@pipadi - Je vais vous donner une définition très correcte et précise, mais quelqu'un qui pose des questions comme celle-ci va se dire "Eh bien, WTF est une machine de Turing? WTF est une fonction calculable par Turing?" S'ils ne comprennent pas Turing Complete, vont-ils comprendre Turing Machine ou la fonction calculable par Turing? C'est comme si on cherchait le mot rhétorique dans le dictionnaire et on disait "de, relatif à, ou concerné par la rhétorique". Cette définition ne vous dit pas ce que rhétorique signifie réellement et vous indique simplement un autre mot que vous ne comprenez pas.
Chubbsondubs
1

Voici mes deux cents. HTML et CSS ne sont clairement pas des langages de programmation. Pour cette raison, lorsque je vois du code HTML ou CSS sur le CV de quelqu'un sous "Langages de programmation", cela me dit simplement que cette personne ne sait pas de quoi elle parle.

En dehors de cela, non, ce n'est pas grave.

En passant, les programmeurs ont généralement tendance à être pédants. Cela vient simplement avec le travail.

Dima
la source
4
Donc, dans votre esprit, il n'y a pas de place pour une personne qui est approximative, parce qu'elle ne veut pas perdre de place avec une autre section de langage de balisage? Pour moi, le pédantisme va bien au-delà de ce qui est utile.
Jon Hopkins
1
+1 quand je vois un CV avec HTML / CSS sous "programmation", je ne lis pas plus loin. soit il ne connaît pas la différence (donc il ne me sert à rien), soit espère que je ne connais pas la différence (donc je ne veux pas travailler avec lui)
Javier
2
@ Jon Hopkins: le souci du détail est une qualité nécessaire chez un programmeur. Mettre du HTML dans les langages de programmation n’est pas approximatif, il est négligé. Cela fait une très mauvaise première impression si vous postulez pour un emploi de programmeur.
Dima
1
@ Dima: absolument. l'informalité est acceptable, parfois même par écrit, l'imprécision des concepts de base du commerce est inacceptable.
Javier
1
C'est ridicule. Les curriculum vitae et les entrevues sont l’une des parties les plus problématiques de notre industrie en ce moment. Vous ne savez jamais si quelqu'un qui connaît la différence place toujours "HTML" dans "Langages de programmation" car il a peur qu'un drone HR ne le remarque pas dans "balisage / design / etc" et jette son CV. Vous devriez au moins les appeler ou les amener. S'ils vous disent en face qu'ils "programment en HTML", eh bien ... c'est vraiment un drapeau rouge. Mais encore une fois, pensez à ce que vous pouvez accomplir maintenant en HTML 5 seul! Est-ce vraiment si difficile?
Graham
0

Ça n'a pas d'importance. Et c'est aussi une question de définition. Qu'est-ce qu'un langage de programmation? Certains veulent dire que cela doit être complet. D'autres ont d'autres définitions, qui font du HTML un langage de programmation. (Et dans votre exemple, ils n'étaient même pas appelés langages de programmation, mais simplement des langages, ce qu'ils sont évidemment).

Ma recommandation: essayez d'ignorer les personnes qui signalent ce type d'affirmations vaines et même erronées. C'est juste une variation du nazi-isme grammatical. Appeler du HTML un langage de programmation n'est pas incorrect dans un sens significatif.

Lennart Regebro
la source
7
-1 Il est significatif car HTML n'est pas un langage de programmation, il n'en contient pas les éléments de base. Il décrit simplement la mise en page sur une page. Par la même extension, un livre sur le dessin technique est un langage de programmation.
Orbling
1
@Orbling: Ce sont des langages de programmation déclaratifs spécifiques à un domaine, selon les définitions les plus courantes de ce que cela signifie. Voir par exemple: en.wikipedia.org/wiki/… Alors, désolé, vous échouez. Selon des définitions parfaitement communes et sensibles, ce sont des langages de programmation. Et selon des définitions complètement différentes, mais tout aussi sensibles et communes, ils ne sont pas des langages de programmation. Les deux points de vue sont corrects. Mais ceux qui bougent leur opinion sur la tête des autres ne sont pas sûrs et ont besoin de se sentir supérieurs aux gars HTML.
Lennart Regebro
8
Le mot "programme" a un sens défini qui est généralement accepté. Vous ne pouvez pas créer un programme avec HTML, donc créer quelque chose avec HTML n'est pas une "programmation". Quiconque argue différemment argue du fait que les mots mêmes qu’ils utilisent dans leur argumentation peuvent voir leur signification modifiée arbitrairement, et dans ce cas, je leur attribuerais arbitrairement leurs mots pour ne rien dire.
Matthew lu
4
@Orbling: Est-ce que "je travaille avec des gars en HTML" est le nouveau "un de mes amis est {insère un groupe minoritaire ici}"?
Anon.
2
@ Lennart Regebro, chaque définition standard d'un langage de programmation (même sur Wikipeida) dit qu'un langage de programmation peut décrire un algorithme. Comment pouvez-vous décrire un algorithme en HTML et CSS?
Charles E. Grant
0

Je pense que cela se résume à ceci: HTML et CSS, bien que suffisamment compliqués pour exiger un peu de maîtrise de l’avertissement, sont les langages de présentation, qui conviennent le mieux au format des rapports générés. Par conséquent, les personnes qui peuvent seulement faire cela ne sont pas considérées comme des codeurs. Gardant à l'esprit que certains codeurs utilisent suffisamment longtemps en informatique pour se souvenir du temps nécessaire au traitement de texte pour le style du texte par rapport au code HTML.

Ce que certains appellent un «vrai» langage est celui qui traiterait les données d’une manière ou d’une autre pour générer un rapport. Ou quelque chose qui pourrait être utilisé pour écrire un jeu. Connaître les langages HTML et CSS à l'intérieur et à l'extérieur est une compétence précieuse, mais il est beaucoup plus judicieux de combiner la connaissance de JS pour le front-end et de Java, PHP, Perl, Ruby, Python, C / C ++ ou C # à l'arrière-plan.

Inversement, une personne qui ne connaît que l’un de ces «vrais» langages, sans aucune technologie Web front-end, limite beaucoup sa propre flexibilité en tant que codeur.

Danny Staple
la source
Je suggérerais un langage entièrement exécuté et géré par un ordinateur. J'ai débogué du code C et des styles CSS. Je peux dire avec une certaine certitude que ce dernier peut prendre autant de temps (sinon plus) que le premier (cela dépend de la chose horrible qu’une personne a faite avec un pointeur contre la partie obscure de la spécification que vous essayez de faire fonctionner et * & ^ % $ @ browser, il semble ne pas être correct). HTML seul ne dit pas grand-chose, mais, associé à la pleine expression de CSS, il peut être très intéressant.
Danny Staple
2
Il n’ya rien de pire que de traiter avec les CSS et le balisage de développeurs qui s’y sont lancés en pensant que ce serait un jeu d’enfant.
Erik Reppen
0

Le casier / stéréotype logique "cerveau gauche" ou créatif "cerveau droit" décrit avec précision les compétences de nombreuses personnes. D'après mon expérience, "est-ce que HTML / CSS est un langage de programmation" consiste à savoir si les personnes qui sont douées en HTML / CSS peuvent également être douées pour d'autres tâches de programmation.

La plupart des concepteurs de sites Web avec lesquels j'ai travaillé au cours des 13 dernières années ont pu créer du HTML et du CSS fonctionnels, mais ne sont pas en mesure de gérer des défis de programmation plus exigeants (rien de plus que le plus simple collé JavaScript). La plupart des programmeurs et des concepteurs de bases de données ne s'intéressent pas suffisamment à la présentation visuelle pour faire du bon travail avec HTML / CSS ou la présentation en général. La plupart refusent réellement d'essayer.

Les langages HTML et CSS exigent des compétences en programmation: expérimentation, résolution de problèmes, tests minutieux, compréhension de l’héritage ... Mais ils requièrent au moins un nombre équivalent de compétences en conception: sensibilité à la couleur, aux lignes, à l’espacement, à l’équilibre - presque identique types de compétences de composition visuelle qui font une bonne photographie.

Puisque HTML / CSS est un langage de présentation ou de présentation, il se trouve à la fin du diagramme de flux de données. Aucun autre code ne se trouve en aval de celui-ci. Les compétences de conception de niveau supérieur dont une personne a besoin pour concevoir une API, un service ou un schéma de base de données corrects ne sont pas utilisées en HTML et CSS. Il n’est généralement pas nécessaire de modulariser quoi que ce soit en HTML ou en CSS, ou s’il en existe un, ce n’est pas au graphiste de le faire. Il est rare qu'une fonctionnalité soit faite avec HTML / CSS . Les menus déroulants sont probablement l'exception la plus courante, mais ils peuvent être créés en coupant et en collant une recette sur le Web plutôt qu'en utilisant du code.

Il est inhabituel, mais pas impossible, pour un programmeur d’avoir des compétences en conception visuelle ou en mise en page ou pour un concepteur d’avoir des compétences en programmation. Ces personnes sont particulièrement utiles dans une équipe Web car elles aident à combler le fossé que la plupart d'entre nous ont. Mais ils sont souvent sujets à des stéréotypes, selon lesquels être capable de faire du HTML / CSS est impossible pour un "vrai programmeur" ou inversement. Mais cette combinaison de compétences n’est pas plus impossible que pour ce même programmeur d’être un marin, un peintre, un cuisinier ou un cuisinier décent, ou d’avoir une autre compétence qu’il exerce à ses heures perdues.

Comme d’autres l’ont dit, c’est lors de l’embauche que l’on met l’accent sur cette distinction. Étant donné que les personnes aux talents croisés sont rares, la plupart des offres d’emploi doivent cibler un ensemble de compétences ou l’autre. Si un programmeur répertorie HTML / CSS sous "Langages de programmation", il est averti qu'ils ne peuvent pas effectuer de tâches de programmation générales ou que leur définition de la programmation est peut-être très étroite. Peut-être qu'ils peuvent, cela soulève juste une question. Si un concepteur répertorie HTML / CSS, vous devez absolument consulter son portfolio pour voir qu’il possède la capacité artistique de créer l’effet visuel souhaité.

HTML / CSS peuvent souvent être considérés comme des langages de programmation car il est plus sûr et socialement plus acceptable que de supprimer des personnes qui ne peuvent franchir la fracture hémisphérique qu'elles représentent. Bien sûr, certaines personnes peuvent ne pas avoir cette inhibition. En fait, j'ai travaillé avec un responsable qui disait souvent: "Il a écrit [insérer la fonctionnalité de dorsale de département ici]? Je pensais qu'il ne faisait que HTML?"

Bonne question!

GlenPeterson
la source