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?
- 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").
- 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 .
- 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.
- 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 .