L’invention de la distinction matériel/logiciel informatique est attribuée à l’informaticien John Tukey (1915-2000), qui a également été le premier à utiliser le terme bit pour désigner la capacité de mémoire. Beaucoup pensent que la différence entre matériel et logiciel est évidente. Une règle empirique définit le matériel comme l’équipement informatique auquel on peut accéder. Mais d’autres mettent l’accent sur l’équivalence logique du matériel informatique et du logiciel : « Toute opération effectuée par un logiciel peut également être intégrée directement dans le matériel… toute instruction exécutée par le matériel peut également être simulée dans le logiciel. » (Tanenbaum 1999, p. 8)
Souvent, le matériel informatique évoque l’image d’une unité centrale de traitement (CPU) ou d’une puce mémoire, et non le fil qui relie la souris à un clavier. Mais toutes les entités physiques qui font partie d’un ordinateur doivent être considérées comme du matériel, même si certains matériels sont plus directement impliqués dans le pouvoir de manipulation des symboles d’un ordinateur que d’autres.
Tangibilité et fonctionnalité
Les ruminations sur les distinctions entre matériel et logiciel peuvent conduire à des contrastes intéressants. Le matériel est une machine dont l’état change en fonction de son fonctionnement, mais dont la forme est difficile à modifier. (Un interrupteur d’éclairage alterne entre les positions marche et arrêt, mais on change rarement ses éléments constitutifs). Au cours de son exécution, un programme logiciel reste statique (à l’exception des programmes auto-modifiants, une exception qui confirme la règle), mais le programme provoque des changements dans l’état du matériel (mémoire) et des périphériques externes (comme les imprimantes). Et ce même logiciel qui est statique pendant l’exécution est beaucoup plus facile à modifier entre les exécutions que le matériel qui change constamment d’état pendant l’exécution. Pour mieux comprendre la distinction matériel/logiciel, il est utile de considérer trois aspects distincts des deux : la tangibilité, la fonctionnalité et la malléabilité.
Tangibilité : Si une entité informatique est définie par sa présence physique, il s’agit de matériel. Si une entité est indépendante de toute forme physique particulière, c’est un logiciel. Remarquez qu’un « matériel » tangible peut prendre de nombreuses formes physiques. La spirale en double hélice de l’ADN utilise des protéines comme matériel. Les modèles génétiques qui y sont codés sont des logiciels.
Fonctionnalité : Si une entité informatique a pour but premier une fonction physique, il s’agit de matériel. Si l’entité a comme but premier une fonction logique, c’est un logiciel. Ici, le terme « logique » est utilisé pour désigner la manipulation de symboles, la transformation de bits selon des règles syntaxiques et sémantiques. Un ensemble particulier de bits peut représenter un nombre entier ou des caractères imprimables, selon les règles en vigueur. Les bits eux-mêmes sont représentés par du matériel, mais les règles qui régissent leur interprétation sont des logiciels.
Malléabilité : Si une entité informatique est relativement facile à modifier, il s’agit d’un logiciel. Si l’entité est relativement difficile à modifier, il s’agit de matériel. De ces trois aspects, c’est celui qui évolue le plus. L’éventail croissant d’options en matière de malléabilité a conduit à une désignation intermédiaire, le firmware.
Deux premiers exemples d’informatique illustrent les deux premières distinctions, la tangibilité et la fonctionnalité. Le premier exemple est le métier à tisser Jacquard, le second une machine de Turing.
En 1801, Joseph Jacquard a inventé un métier à tisser utilisant des cartes en carton pâte rigide avec des trous qui commandaient des tiges pour chaque étape du tissage. Ces cartes ont conduit aux cartes perforées utilisées par Herman Hollerith pour les machines à calculer. Le métier à tisser physique de Jacquard, en bois et en métal, était un matériel. Le carton des cartes perforées était un matériel. Mais le motif des trous dans les cartes, et le motif souhaité dans le tissu, étaient des logiciels. Même dans cet ancien exemple d’informatique, il y a une interaction entre le matériel et le logiciel. Le logiciel du motif de tissage est réalisé dans et par le matériel du métier à tisser. D’une manière presque mystique, le motif du tissu est dans, avec et sous son implémentation matérielle. Les fils qui passent par le métier à tisser de Jacquard sont tangibles, et entrent dans la catégorie du matériel. Mais une fois que le métier à tisser a fait son travail, les fils deviennent une incarnation du motif logiciel représenté (indirectement) par les trous perforés dans les cartes en carton.
Une machine de Turing est une construction théorique en informatique, et est composée d’états, d’une bande d’enregistrement, et d’une tête de lecture/écriture (Turing 1936). Un calcul se déroule en changeant d’état et en lisant et écrivant des symboles sur la bande. Les machines de Turing sont des expériences de pensée et non des objets physiques, mais elles pourraient être fabriquées. Une tête d’enregistrement et sa bande sont des matériels tangibles ayant une fonction essentiellement physique, l’enregistrement de symboles. Quel que soit le support utilisé pour représenter les différents états de la machine de Turing, il s’agit également d’un matériel. Mais l’algorithme incorporé dans les états et les transitions entre eux est logique, et logiciel. Notez que tout support utilisé pour incarner un algorithme est tangible, mais que l’algorithme lui-même ne dépend pas des détails d’un support particulier. Le même algorithme pourrait exister simultanément dans un cerveau humain, sur un morceau de papier et dans une machine de Turing. Chaque manifestation serait simultanément physiquement différente et logiquement identique.
De la même manière qu’un bâtiment incarne les plans d’un architecte, une machine de Turing incarne un algorithme. L’analogue de la machine de Turing à un plan architectural est un algorithme ; l’analogue de la machine de Turing à un bâtiment est le matériel de la machine de Turing. L’analogie architecturale est plus appropriée pour une machine de Turing que pour les ordinateurs modernes et polyvalents, car chaque machine de Turing est adaptée à un seul algorithme. Les ordinateurs contemporains sont bien plus complexes que le métier à tisser de Jacquard ou une simple machine de Turing. Mais la relation entre le matériel et les logiciels informatiques est cohérente avec la relation illustrée dans ces exemples. Dans toutes les machines à calculer, le matériel met en œuvre le logiciel, et le logiciel est incorporé dans le matériel. Le logiciel instruit le matériel, et le matériel manifeste les actions décrites dans le logiciel.
Malgré ces exemples, des controverses subsistent. Il n’y a pas beaucoup de controverse sur certaines distinctions matériel/logiciel dans les ordinateurs modernes. Les processeurs et les puces mémoire sont du matériel. Les algorithmes mis en œuvre sur ce matériel sont des logiciels. Mais tout le monde n’est pas d’accord sur d’autres classifications. Par exemple, certains considèrent les données comme des logiciels informatiques, tandis que d’autres excluent explicitement les données de la catégorie des logiciels ou du matériel. Mais le code source est un exemple largement accepté de logiciel, et le code source est une donnée pour l’interprète ou le compilateur approprié. Si les données ne sont pas des logiciels, alors le même programme est ou n’est pas un logiciel, selon la façon dont on le regarde.
Certains scientifiques et ingénieurs en informatique incluent les dessins, les manuels d’utilisation et l’aide en ligne dans les logiciels, tandis que d’autres excluent explicitement ces entités de la considération. Il peut être trompeur de qualifier de logiciels tous les documents associés à un programme. Mais les conceptions et les documents de spécification sont étroitement liés aux algorithmes. Certaines conceptions peuvent être automatiquement transformées en langage machine avec une intervention humaine minimale. Il peut donc être utile de classer comme logiciels les documents directement liés au développement du programme.
Les algorithmes utilisés lorsqu’un ordinateur est mis sous tension sont généralement stockés dans des dispositifs de mémoire spéciaux appelés mémoire morte (ROM), qui se présentent sous différentes formes (PROM, EPROM et EEPROM). Ces types de dispositifs sont plus faciles à modifier que les autres matériels, mais plus difficiles à modifier que les programmes stockés sur un disque dur. Le terme firmware a été inventé pour désigner cette forme intermédiaire de malléabilité. La malléabilité (ou son contraire, la résistance au changement) est le troisième critère pour le matériel et le logiciel : si une entité informatique est facile à changer, c’est un logiciel ; si une entité est difficile à changer, c’est un matériel ; et si elle est intermédiaire dans cet aspect, c’est un microprogramme. Un argument plus précis est nécessaire ici : L’état du matériel peut être facile à modifier (une grande partie du matériel informatique est une variation de l’interrupteur marche/arrêt) ; mais le matériel lui-même (pensez à un interrupteur d’éclairage fixé à un mur) est difficile à modifier. Ainsi, une unité arithmétique/logique est un matériel parce qu’elle possède des algorithmes en silicium gravés de façon permanente pour ses calculs, et un programme C++ résidant sur un disque dur est un logiciel parce qu’il peut être plus facilement modifié et recompilé. Bien que l’utilisation de micrologiciels soit courante, les implications éthiques de la distinction matériel/logiciel ne nécessitent pas ce terrain intermédiaire de la malléabilité comme catégorie distincte.
Implications de la distinction matériel/logiciel
Un certain intérêt pour la distinction matériel/logiciel est associé à des questions juridiques. Dans la mesure où une entité informatique est un dispositif mécanique (hardware), elle est soumise au même corps de loi qui régit les échelles et les tondeuses à gazon. Dans la mesure où une entité informatique fonctionne comme un algorithme (logiciel), les lois sur la propriété intellectuelle et les services professionnels sont plus pertinentes. Les conceptions matérielles peuvent être brevetées, les programmes logiciels peuvent être protégés par le droit d’auteur.
La distinction matériel/logiciel a également des implications éthiques. À un niveau abstrait, les algorithmes sont des logiciels purs. Mais pour avoir un effet physique, un algorithme est incarné dans une certaine entité physique. La nature de l’incarnation, le matériel particulier choisi, a des implications éthiques importantes. Par exemple, si un algorithme est incarné exclusivement dans un seul cerveau, sa propriété en tant que pensée privée ne prête pas à controverse ; mais lorsque la pensée est partagée sous la forme d’un document écrit, des problèmes éthiques de propriété intellectuelle surgissent instantanément. De même, une pensée algorithmique a peu de conséquences pour les autres jusqu’à ce qu’elle soit mise en œuvre ; lorsqu’elle est mise en œuvre, l’algorithme peut avoir des conséquences importantes.
Lorsqu’on décide de la manière d’incarner un algorithme, il faut choisir un emplacement sur le continuum de la malléabilité. Généralement, un accent mis sur l’implémentation matérielle (par exemple, gravée de façon permanente dans le silicium) favorisera une implémentation plus fiable et une fonctionnalité moins complexe qu’une implémentation en logiciel (comme l’utilisation d’un langage de programmation de haut niveau). Les implémentations matérielles sont plus rentables lorsqu’elles sont produites en masse, de sorte que les algorithmes largement utilisés par le plus grand nombre sont plus susceptibles d’être implémentés dans le matériel, tandis que les algorithmes personnalisés pour un petit nombre sont plus susceptibles d’être implémentés dans le logiciel. Les questions relatives aux délais de livraison, à la qualité suffisante et aux obligations d’un développeur envers ses clients sont des exemples de problèmes éthiques inhérents à toute décision de mise en œuvre. À mesure que les coûts de fabrication du matériel diminuent et que les coûts d’écriture des logiciels augmentent, les jugements relatifs à ces questions devront peut-être être reconsidérés.
À mesure que l’informatique devient omniprésente, les logiciels tendent à remplacer le matériel pour fournir certaines fonctionnalités. Les avions fournissent un exemple spectaculaire de cette tendance. D’abord les avions de chasse, puis les avions de ligne ont substitué des algorithmes informatiques complexes aux commandes mécaniques. Les algorithmes informatiques permettent aux nouveaux avions de voler de manière plus efficace et plus économique. Mais la redondance du matériel est difficile à reproduire dans les logiciels (les défauts des logiciels ont tendance à se reproduire, contrairement aux défauts du matériel), ce qui a des conséquences sur la fiabilité des systèmes vitaux dont la sécurité dépend de plus en plus des logiciels. Ces différences entraînent des choix éthiquement significatifs entre des opérations plus efficaces utilisant des logiciels et des dispositifs matériels plus coûteux mais plus sûrs. Ces compromis devenant de plus en plus courants, les différentes traditions des professionnels des différents domaines de l’ingénierie peuvent devenir un problème éthique. Par exemple, les ingénieurs logiciels sont rarement titulaires d’une licence (aux États-Unis, seul le Texas délivre une licence d’ingénieur logiciel, et les ingénieurs logiciels des entreprises ne sont pas non plus tenus d’obtenir cette licence), mais d’autres ingénieurs travaillant dans des applications critiques pour la sécurité peuvent être titulaires d’une licence. Dans ce cas, la distinction matériel/logiciel peut aider à déterminer l’intérêt de l’État à certifier la compétence professionnelle.
Un dernier exemple de l’importance éthique de la distinction matériel/logiciel a moins à voir avec les professionnels de l’informatique qu’avec le public non programmeur et la façon dont il perçoit les problèmes liés à l’informatique. Les ordinateurs peuvent être un bouc émissaire bien pratique : » Nous ne pouvons pas vous aider pour l’instant ; l’ordinateur est en panne. » « Impossible. Il n’y a aucun moyen de taper ça dans l’ordinateur ». « Je ne me souviens pas de cet e-mail. Je suppose que l’ordinateur l’a mangé. »
La plupart des gens savent que les bugs logiciels relèvent de la responsabilité des programmeurs. Mais les organisations et les individus peuvent parfois se cacher derrière le matériel de leurs machines. Mettre l’accent sur les aspects matériels des ordinateurs peut contribuer à créer une distance artificielle entre le grand public et les erreurs humaines dans les logiciels. Cette dévalorisation de la responsabilité humaine est un danger qui se cache dans la distinction matériel/logiciel. La réalité est que les algorithmes sont des artefacts humains dont les humains sont responsables, quelle que soit la façon dont ils sont mis en œuvre.
Les défis éthiques tapis dans la distinction matériel/logiciel se reflètent dans les controverses juridiques et politiques. Il existe des logiciels gratuits, des logiciels partagés et des logiciels libres ; mais il n’y a pas de mouvement parallèle pour déclarer le matériel informatique gratuit. Le système des brevets a, dans l’ensemble, réussi à protéger les innovations matérielles, mais les droits d’auteur, les brevets, les marques et le secret commercial se sont avérés problématiques d’une manière différente lorsqu’ils ont été appliqués aux logiciels informatiques. Les controverses sur les nouvelles lois qui criminalisent ce qui était autrefois considéré comme une ingénierie inverse légitime des logiciels ont souligné l’importance de comprendre les différences entre le matériel et les logiciels.
KEITH W. MILLER
Voir aussi Éthique informatique ; Logiciel libre ; Surcharge d’information.
BIBLIOGRAPHIE
Tanenbaum, Andrew S. (1999). Organisation informatique structurée, 4e édition. Prentice-Hall, Upper Saddle River, NJ.
Turing, Alan. (1936). « On Computable Numbers, With an Application to the Entscheidungsproblem ». Proceedings of the London Mathematical Society, Series 2, 42 : 230-267.
.