Discussion:Programmation déclarative

Le contenu de la page n’est pas pris en charge dans d’autres langues.
Une page de Wikipédia, l'encyclopédie libre.
Autres discussions [liste]
  • Admissibilité
  • Neutralité
  • Droit d'auteur
  • Article de qualité
  • Bon article
  • Lumière sur
  • À faire
  • Archives
  • Commons

Transfert remarque d'une IP[modifier le code]

Remarque de l'IP transférée du corps d'article. Laurent N. [D] 7 juin 2007 à 23:58 (CEST)[répondre]

ERREUR: LES PAGES HTML DECRIVENT AUSSI BIEN LE CONTENU QUE LA FORME...

Ce ne sont pas du tout de la programmation, mais plutôt une façon de représenter les données (et aussi la forme pour le HTML). Tout comme les .bmp et les .wav . Iluvalar (d) 16 mars 2008 à 17:24 (CET)[répondre]

Intéressant ! D'ailleurs, écrire en Prolog, ce n'est pas de la programmation, mais plutôt une façon de représenter des faits et des règles. Et un fichier Python est un fichier de données qui est lu par une application, tout comme le sont les fichiers BMP et WAV qui sont généralement interprétés par un lecteur audio. Et quand on utilise XML pour écrire des documents XSLT, est-ce toujours de la simple représentation de données ?
Plus sérieusement... au risque de lancer un grand débat : Qu'appelle-t-on programmation ? --Kerflyn (d) 17 mars 2008 à 23:36 (CET)[répondre]
Pour avoir essayer (que brièvement) Prolog, il s'agit de quelque chose de plus complexe que du xml, je suis tout à fait disposer à classer ça dans "programmation déclarative". Tu vient de m'apprendre l'existence même du XSLT ^^ . Ce que je cherche à expliquer, c'est que le html et surtout le XML ne sont que des moyens de représenter les données (Ça n'enlève rien du tout à leur utilité). Je respecte les 2 languages, mais ce n'est pas de la programmation. Additionner simplement 1 et 1 avec du XML ou du HTML pure est impossible ! Iluvalar (d) 18 mars 2008 à 02:45 (CET)[répondre]
Je repose ma question : Qu'appelle-t-on programmation ?
  • S'agit-il de mettre en place un ensemble d'instructions et de les faire exécuter par une machine (voire une personne éventuellement) directement ou indirectement en passant par un compilateur ou un interpréteur ? Dans ce cas, ça fonctionne pour HTML qui contient des instructions du style : "je veux que cette partie apparaisse comme un titre de niveau 1", "je veux que ce mot soit mis en valeur", "je veux que tout ce texte apparaisse comme un paragraphe indépendant", etc., et qui utilise un interpréteur pour les exécuter. C'est vrai, quelle différence entre ces instructions et l'instruction "je veux mettre 1+1 dans la variable N" ou "je veux afficher 'hello world'" ?
 
D'où une seconde question importante : Qu'appelle-t-on instruction ?
  • Est-ce une simple opération en machine ?
  • Est-ce un ordre ?
  • Est-ce la plus petite forme de volonté du développeur dans un langage donné ? (là, je m'étonne moi-même)
 
--Kerflyn (d) 18 mars 2008 à 07:38 (CET)[répondre]
Ma réponse ne risque pas d'être de nature encyclopédique, mais d'après moi ce qui fait de la création d'un fichier une programmation c'est le fait que le programmeur n'est pas au courant de la totalité des paramètre. Et que donc, il ne sais pas exactement ce que donneras le résultat final puisqu'il doit varier en fonction de ces paramètre. Ça ne veut pas dire qu'il est complètement ignare de ce qu'aura l'air le résultat final :) . Prend l'exemple simple d'un forum par exemple, le programmeur sais très bien le genre de mise en page qu'il veux faire, mais théoriquement il ne sais pas du tout le genre de commentaire qui s'y trouveras. Dans le cas de l'html pure, il n'y a aucun paramètre qui entre en ligne de compte, tout est prévisible. C'est la même chose pour le xml, quoique dans ce cas il est normalement généré par un programme qui, lui, tient compte de plusieurs paramètre pour créer le fichier xD . Iluvalar (d) 20 mars 2008 à 15:40 (CET)[répondre]
Donc, si je comprends bien, pour toi, écrire (par exemple) un programme Python qui affiche 10 fois "hello world!" ce n'est pas de la programmation ?
D'un autre côté, si j'analyse ce que tu écris, ça marche d'une certaine manière pour le HTML pure. Je m'explique :
  • on peut voir le navigateur ou une imprimante comme un paramètre (on se pas lequel sera utilisé, donc on ne connaît la valeur du paramètre),
  • on ne sait pas exactement à quoi ressemblera l'affichage de la page HTML puisqu'elle dépend du navigateur ou de l'imprimante. Par exemple, la différence est flagrante lorsqu'il s'agit d'afficher une même page sous Firefox ou sous Lynx.
NB: je suis l'un des premiers que ça ennuie de voir le premier venu me dire qu'il fait de la programmation sous prétexte qu'il a écrit des pages HTML (pures), mais lorsque j'essaie de justifier où se trouve le problème je n'arrive pas à trouver les bons arguments...
--Kerflyn (d) 21 mars 2008 à 10:13 (CET)[répondre]
Le "hello world" x10 est un test de programmation de base pour vérifier que le programme pourrais éventuellement imprimer à l'écran. Mais effectivement je ne parlerais pas de programmation dans un contexte aussi simple (même si c'est fait en python). D'ailleurs le mec qui se vante de faire de la programmation parcequ'il arrive à faire un "hello world" se ferais lapider par n'importe quel communauté de programmeur qui se tient xD. Par ailleurs, l'html peut être lu par plusieurs média, mais la musique aussi; Je peut l'écouter en surround ou dans me écouteur; Avec wimamp,mediaplayer ou quicktime. Est-ce que ca fait des musiciens des programmeurs ? Bien sûr que non ! Iluvalar (d) 21 mars 2008 à 16:27 (CET)[répondre]
J'ai justement pris la liberté d'ajouter LATEX à la liste des exemples. Pour être plus complet, il faudrait parler de TEX. C'est à mon sens un bien meilleur exemple de programmation déclarative que le HTML/XML dans le sens où il y'a vraiment des possibilités d'automatisation et une véritable phase de compilation du document. D'autres processeurs de textes (tels que Lout, troff) pourraient donner des pistes intéressantes pour explorer plus en détails la notion de programmation déclarative/descriptive Vincentxavier (d) 24 avril 2008 à 01:55 (CEST) 24 avril 2008 à 01:52 (CEST)[répondre]

Je ne suis pas sûr d'apporter grand-chose au débat (d'autant moins que j'arrive avec plus de 2 ans de retard), mais je rejoins l'avis de Kerflyn : pour moi la programmation c'est simplement le fait pour un humain d'écrire quelque chose (du "code") destiné à être traité (la compilation, l'exécution, l'interprétation, etc. étant des cas particuliers de traitements) par une machine (ou plusieurs, là n'est pas la question). Ranger HTML en dehors des langages de programmation ne serait finalement qu'un jugement de valeur : en effet quelqu'un qui se prétend programmeur parce qu'il a écrit une page HTML ça fait rigoler, mais, pour reprendre l'exemple de Kerflyn, ce serait vrai aussi pour quelqu'un qui aurait écrit un "Hello World" de dix lignes en Python... et pourtant personne ne pense à virer Python des langages de programmation. Je ne vois donc aucun argument objectif pour disqualifier HTML. Pour faire un parallèle scabreux, ce serait un peu comme dire que "Au Clair de la Lune" n'est pas une musique sous prétexte que ça fait marrer les musiciens si on se dit musicien alors qu'on joue "Au Clair de la Lune" à la flûte à bec. Pour répondre à Iluvalar, la différence entre le langage HTML et les formats BMP ou WAV, c'est que le premier est destiné à être écrit par des humains, et les autres à être produits par des machines : on ne peut donc clairement pas qualifier BMP ou WAV de langages de programmation (même si ça peut être rigolo ou éducatif d'écrire directement dans ces formats binaires, ils n'ont pas été conçus pour cela). Ceci dit, il est vrai que dans le cas d'XML et de ses dérivés ou ancêtres, on est un peu à la frontière des deux, puisqu'ils ont justement été conçus pour être lus et écrits aisément par des machines ET par des humains : il s'agit donc à la fois de langages et de formats de données. Pour donner des exemples concrets, dans le cas d'un fichier SVG ou d'un flux RSS, XML sera un "simple" format de données, alors que dans le cas d'une description de contexte Spring ou d'une feuille XSLT il sera à l'évidence un langage de programmation.

Bon enfin, à l'origine je n'étais pas venu sur cette page pour cela, mais pour formuler une autre remarque : je ne suis pas du tout d'accord avec la définition proposée dans le premier paragraphe de l'article, qui dit "[le paradigme] consiste à créer des applications sur la base de composants logiciels indépendant du contexte et ne comportant aucun état interne. Autrement dit, l'appel d'un de ces composants avec les mêmes arguments produit exactement le même résultat, quel que soit le moment et le contexte de l'appel." A mon avis ce n'est pas du tout une bonne définition : pour moi la programmation déclarative c'est (comme le dit d'ailleurs le second paragraphe) écrire le quoi plutôt que le comment, et rien d'autre. Le fait qu'il n'y ait pas d'état interne et tout ça, ce n'est qu'une conséquence de ce paradigme, mais pas sa définition. Ce qui implique (à mon avis également) que la programmation fonctionnelle ne fait pas partie de la programmation déclarative. En fonctionnel on n'a certes pas d'état interne, mais on écrit le comment et non pas le quoi : même si dans certains cas très simples (la fonction "carré" par exemple) cela peut revenir au même, la différence réside (à mon avis toujours) dans le fait que la machine n'a pas le choix dans la façon de calculer le résultat (une fonction en Lisp ou en Caml décrit très exactement comment calculer son résultat, par opposition à par exemple une page TeX ou un ensemble de définitions de contraintes, où le comment dépend totalement du programme utilisé pour calculer/résoudre le problème). Bref, voilà... N'étant pas vraiment un spécialiste de la théorie et encore moins de la nomenclature, je n'ai pas osé modifier directement l'article, mais si un esprit éclairé passe par ici, je l'invite à se pencher sur la question (ou à défaut à faire avancer le débat).

J'ajoute pour illustrer mon propos deux exemples qui relèvent à mon avis de la programmation déclarative (toujours en accord avec ma définition, c'est-à-dire des trucs où le programme décrit le quoi par opposition au comment) : les outils du genre lex/yacc, et les expressions régulières. En revanche XSLT à mon sens n'est pas un langage déclaratif (mais bien un langage fonctionnel), ce qui implique donc que XML n'est pas un bon exemple et ne devrait peut-être pas figurer aux côtés de HTML et LaTeX : XML n'est en fait pas un langage mais une famille de langages (voire un méta-langage, selon le point de vue), et certains dans cette famille sont déclaratifs alors que d'autres non. — Le message qui précède, non signé, a été déposé par l'IP 86.211.42.140 (discuter), le 7 février 2011 à 20:57‎ UTC+2

Le problème est en effet un problème de définition. Mais ce n'est pas aux Wikipédiens de choisir leur définition. Difficile de trouver des sources fiables dans ce domaine. Mais j'en ai au moins une : « HTML is not a programming language. » sur le wiki du W3C. Après c'est une source primaire, et d'autres sources seraient les bienvenues plutôt que des avis perso's. ;) --Pols12 (discuter) 22 juin 2014 à 18:40 (CEST)[répondre]