Discuter:Abstraction (philosophie)

Un article de Wikipédia, l'encyclopédie libre.

Je n'ai pas le temps actuellement de modifier mais le petit paragraphe sur l'informatique est un non-sens total. Un lecteur avec une connaissance de l'informatique (comme moi) y verra comme une suite incohérente d'exemples qui illustrent assez mal le concept d'abstraction en informatique. Les lecteurs non avertis n'y comprendront rien. Je le retire complètement pour le moment. Pascal.Tesson 21 juin 2006 à 04:53 (CEST)

Apparemment je n'ai pas suffisamment justifié ma suppression de la section informatique. Voilà les nombreux problèmes.

  1. L'intro est illisible pour un non-initié: "Un langage informatique est déjà une abstraction en lui-même, puisqu'il transforme un langage ésotérique (le langage machine, aussi appelé le binaire, composé uniquement de zéros et de uns) en autre langage mieux adapté à la compréhension humaine. Une des abstractions est la généralisation du code pour le détacher au maximum du contexte. L’un des outils les plus connus de l’abstraction informatique est la variable, notamment la variable d'environnement. Je crois sincèrement que tous les lecteurs qui n'ont jamais programmé n'ont aucune idée de ce que cela veut dire. Par contre, les lecteurs qui ont déjà programmé (moi par exemple) trouveront que c'est une bien mauvaise façon d'introduire un concept aussi central en informatique.
  2. Le concept d'abstraction en informatique n'est pas avant tout une histoire d'implémentation. La section semble confondre couche d'abstraction et abstraction.
  3. La discussion se centre sur des détails techniques qui n'expliquent rien comme la référence à DirectX ou aux chemins dans WindowsXP. Le paragraphe sur les compilateurs est particulièrement abscons.
  4. La section est de piètre qualité et occupe toute la place dans un article en construction Les autres sections bien que sommaires s'en tiennent à des discussions intelligibles. Pascal.Tesson 11 juillet 2006 à 06:08 (CEST)
  1. Le plus complexe que j’ai fait en programmation, c'est un Hello World en PHP en suivant les instructions. Je peux donc sans crainte me considérer comme un non-programmeur. Pourtant ce point me parait très compréhensible. Ce qui est vrai en revanche, c'est que ce paragraphe est constitué de morceaux collés par divers contributeurs sans souci de cohérence. C'est moi qui est créé la première entrée, mais depuis, d’autres ont ajouté sans souci de lien logique (un autre problème de Wikipédia)
  2. Possible sur ça
  3. Ben si. Une variable d'environnement est l'exemple même de l'abstraction. Voir [:en:Hardcoding]. Quant aux compilateurs, c’est effectivement plus une réflexion poussée qui nécessitent d'avoir compris qu'abstraction signifie ajout d'un intermédiaire, donc potentiellement réduction des performances
  4. La section me semble de qualité, même si ça rédaction doit être revue, du fait de l'accumulation d'information sans égard aux liens logiques. Peut-être faudrait-il créer un sous-article abstraction informatique, pour conserver le statut d’ébauche aux précédents.
Bref, il y a peut-être des choses à remanier (je considère qu’il y en a moins que ce que vous pensez). Mais la suppression pure et simple de l’ensemble de la section est disproportionnée, d’autant plus que la section sur le Web est, elle, totalement compréhensible (demandez à n’importe quel webmestre qui connait un minimum les standards). Plutôt que de supprimer, vous auriez du proposer une version « à votre goût ».
Je propose que nous travaillons point-par-point ensemble pour reformuler l’ensemble. Comme vous le signaler, il y a plusieurs sortes d’abstractions (celle des langages informatiques qui se superposent, celle des variables d’envrionnement, celle des couches d'abstraction matérielle). C'est déjà un point à voir, différencier les abstractions. Ceci vaudrait mieux que simplement blanchir une section.


David Latapie ( | @) 11 juillet 2006 à 10:00 (CEST)

[modifier] Abstraction informatique

Je suis d'accord avec la suppression de cette partie car ça part sur des exemples concrets précis qui ne révèlent finalement pas la définition de l'abstraction en informatique.

Je relève certaines choses:

  • "le langage machine, aussi appelé le binaire": je trouve ceci inexact. Le binaire est un ensemble d'état (suite de 0 et 1), alors que le langage machine présente un langage (avec dictionnaire d'instructions). Ce sont 2 notions différentes. Cette erreur est généralement faite par ceux qui ne font pas la différence entre un codage binaire et un langage binaire.
  • Ne faudrait-il pas parler de niveaux d'abstraction ? Pour l'exemple de la variable, c'est bien pour simplifier, mais je ne vois aucun programmeur en parler régulièrement comme une abstraction (même si c'est la cas)
  • "Beaucoup d’erreurs de programmes viennent du fait que lesdits programmes utilisent des valeurs concrètes au lieu de valeurs abstraites". "Beaucoup" me semble bien exagéré ! Je dirai plutôt peu, car justement les erreurs viennent des cas particuliers non prévus (dû à une abstraction trop généralisée ?)
  • la HAL est un cas très particulier et très peu répandu (on ne pense pas immédiatement à ça lorsqu'on parle d'abstraction)
  • "DirectX fourni par exemple une suite d'outils théoriquement compatibles avec tout type de matériels": DirectX s'appuie sur des matériels connus ou des drivers
  • "Plus généralement, on nomme couche d'abstraction toutes couches logicielles "cachant" au developpeur l'implémentation de la couche inférieure": pas assez généralisé. Je pense à l'abstraction dans la programmation.
  • "L’inconvénient de la couche d’abstraction est la moindre optimisation, induite par justement la présence de couches intermédiaires.": je pense que ceci dépend de l'implémentation de l'abstraction
  • "un code hautement abstrait pourrait être aussi véloce que du bon assembleur (puisque dans tous les cas, la machine exécute au final du langage machine, pas du C ou de l’HTML).": Il faudrait dire même plus rapide, car les calculs des plans d'optimisations font que c'est souvent le cas (l'être humain ne peut pas penser à toutes les optimisations possibles lorsqu'il programme, sinon il ne ferait au minimum aucun bug).
  • "pas du C ou de l’HTML": Le HTML n'est pas un langage de programmation (contrairement au PHP ou Javascript par exemple) ! C'est un langage avec sa grammaire, mais un langage de représentation de données, pas de programmation car il n'exécute pas d'instruction.
  • "Dans la pratique, cependant, il n’eixste pas de tel « compilateur 100 % »". Je ne comprend pas cette phrase
  • Pour les couches d'abstractions il faudrait parler de la notion d'interfaces qui sont largement employés (protocoles de communicaiton, protocoles matériels, composants logiciels (CORBA, ActiveX...)).

Bref, je pense que cette définition est trop restrictive, mais le problème est qu'on risque de trop tomber dans la théorie informatique (mais qui est, je pense, la plus forte abstraction), comme par exemple les métadonnées (et méta classes), métaprogrammation et motifs de conception.

Ne faudrait-il pas plutot axer cette partie sur l'abstraction de la conception ? (en restant superficiel) En fait, si cet article porte à discussion, je pense que c'est parce que génie logiciel impose l'abstraction du langage et bibliothèques pour un bon développement d'un logiciel, et là il est question d'exemples d'implémentation qui perdent donc la notion d'abstraction qu'on attribut généralement à la programmation.

Comme il y a un petit débat, je ne touche à rien.

--CRicky