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?
terminology
Robert Harvey
la source
la source
Réponses:
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:
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 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?
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 .
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é:
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?
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 .
la source
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" "...
la source
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.
la source
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é.
la source
if ... then
construction 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.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.
la source
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.
la source
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.
la source
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.
la source
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.
la source
Ç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.
la source
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.
la source
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!
la source