# Minimalisme (informatique)

En informatique, le minimalisme désigne l'application de la philosophie et des principes de la simplicité volontaire dans la conception et l'utilisation de matériel et de logiciels.
Dans ce sens, le minimalisme consiste à concevoir des systèmes qui utilisent le moins de ressources matérielles et logicielles possible.

## Histoire

À la fin des années 1970 et au début des années 1980, les programmeurs travaillaient dans les limites des ressources relativement coûteuses et limitées des ordinateurs centraux. Huit ou seize kilooctets de mémoire vive étaient courants ; 64 kilooctets étaient considérés comme une grande quantité de mémoire et représentaient la totalité de l'espace d'adressage accessible aux processeurs 8 bits prédominants au cours des premières générations d'ordinateurs personnels. Le support de stockage le plus courant était la disquette de 5,25 pouces, d'une capacité de 88 à 170 kilooctets. Les disques durs d'une capacité de cinq à dix mégaoctets coûtaient des milliers de dollars.
Au fil du temps, la capacité des mémoires des ordinateurs personnels s'est accrue de plusieurs ordres de grandeur et les programmeurs ont profité de cette augmentation pour accroître les fonctionnalités de leurs logiciels et faciliter le développement de programmes en utilisant des langages de haut niveau. En revanche, les fonctionnalités et les configurations requises pour les logiciels patrimoniaux restaient les mêmes. Par conséquent, même les programmes d'antan les plus élaborés et les plus riches en fonctionnalités semblaient modestes par rapport aux logiciels récents. Nombre de ces programmes patrimoniaux sont aujourd'hui abandonnés.
L'éditeur de texte GNU Emacs est un exemple de programme dont la configuration requise lui a valu une réputation de poids lourd. Il a été surnommé Eight Megabytes And Constantly Swapping (Huit mégaoctets et paginant constamment) à une époque où 8 mégaoctets représentaient beaucoup de mémoire vive. Aujourd'hui, GNU Emacs, principalement basé sur des mémoires tampons, utilise beaucoup moins de ressources que les environnements de développement modernes, comme Eclipse ou Netbeans. Dans un discours prononcé lors de la Conférence internationale sur Lisp de 2002, Richard Stallman a indiqué que le minimalisme était une préoccupation dans son développement de GNU et de GNU Emacs, sur la base de ses expériences avec Lisp et les capacités des mini-ordinateurs bas de gamme de l'époque.
Au fur et à mesure que les fonctionnalités et les configurations requises par les logiciels et les systèmes d'exploitation augmentaient dans les années 1980 et 1990, et que le développement de logiciels était dominé par des équipes adoptant des méthodologies de développement contradictoires et à la saveur du jour, certains développeurs ont adopté le minimalisme comme philosophie et ont choisi de limiter leurs programmes à une taille minimale. L'accent mis sur l'optimisation de code peut donner lieu à des logiciels minimalistes, les programmeurs réduisant le nombre d'opérations effectuées par leur programme afin d'en accélérer l'exécution.
Au début du XXIe siècle, les nouveaux développements de l'informatique ont mis le minimalisme au premier plan. Dans ce que l'on a appelé l'ère post-PC, il n'est plus nécessaire d'acheter un ordinateur personnel haut de gamme pour effectuer des tâches informatiques courantes. Les appareils informatiques mobiles, tels que les téléphones intelligents, les tablettes informatiques et les netbooks, ont souvent des capacités de mémoire plus faibles, des sous-systèmes graphiques moins performants et des processeurs plus lents que l'ordinateur personnel qu'ils remplacent. En outre, l'utilisation intensive d'effets graphiques tels que la simulation de transparence vide la pile plus rapidement qu'une interface standard. La popularité croissante de ces appareils a fait du minimalisme une préoccupation importante en matière de conception.
Le navigateur Chrome et le système d'exploitation Chrome OS de Google sont souvent cités comme des exemples de conception minimaliste$^,$. Dans Windows 8, Microsoft a décidé d'abandonner l'interface utilisateur Aero, très gourmande en graphiques, au profit de l'apparence plus simple de Metro, qui nécessite moins de ressources système. Ce changement a été effectué en partie en raison de l'augmentation du nombre de petits appareils fonctionnant sur batterie et de la nécessité d'économiser l'énergie$^,$$^,$. La version 7 du système iOS d'Apple a apporté des changements similaires pour des raisons d'expérience utilisateur.

## Utilisation

Certains développeurs ont tenté de créer des programmes pour exécuter une fonction particulière en utilisant le moins de lignes de code possible, ou la plus petite taille d'exécutable compilé possible sur une plateforme donnée$^,$. Certaines distributions Linux mentionnent le minimalisme comme objectif. Alpine Linux, Arch Linux, Puppy Linux, Bodhi Linux, CrunchBang Linux, dynebolic et Tiny Core Linux en sont des exemples. Les premiers développements du système Unix ont eu lieu sur du matériel de faible puissance, et Dennis Ritchie et Ken Thompson ont déclaré que cette contrainte avait contribué à « l'élégance de sa conception ».
Les concepteurs de langages de programmation peuvent créer des langages de programmation minimaux en évitant le sucre syntaxique et les bibliothèques logicielles étendues. De tels langages peuvent être des gouffres de Turing (Turing tarpits), car ils n'offrent pas de support standard pour les tâches de programmation courantes. La création d'un interprète Lisp minimal est une tâche d'apprentissage courante imposée aux étudiants en informatique. Le Lambda-calcul, développé par Alonzo Church, est un langage de programmation minimal qui n'utilise que des définitions de fonctions et des applications de fonctions$^,$. Scheme$^,$, Forth, et Go$^,$ sont cités comme exemples de langages de programmation minimaux pratiques.
John Millar Carroll (en), dans son livre Minimalism Beyond the Nürnberg Funnel (Le minimalisme au-delà de l'entonnoir de Nuremberg), a souligné que l'utilisation du minimalisme donne lieu à des dispositifs à usage instantané tels que les jeux vidéos, les guichets automatiques bancaires, les machines à voter et les bornes Internet, avec peu ou pas de courbe d'apprentissage et qui ne nécessitent pas que l'utilisateur lise des manuels. Les chercheurs en interface utilisateur ont réalisé des expériences suggérant que le minimalisme, tel qu'il est illustré par les principes de conception de la parcimonie et de la transparence, favorise l'efficacité et la facilité d'apprentissage. Le minimalisme est implicite dans les philosophies Unix de tout est un flux de texte et de faire une chose et la faire bien, bien que les distributions Unix/Linux modernes ne tiennent pas aussi rigoureusement à cette philosophie.
Le passe-temps de programmation code golf produit des logiciels minimalistes, mais il s'agit généralement de logiciels d'exercices, et non de logiciels d'applications utilisables.