Minimalisme (informatique)

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

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[modifier | modifier le code]

À 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[1]. 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[2]. 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[3].

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[4]. 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[5].

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[6]. 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[7]. 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[8],[9]. 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 pile et de la nécessité d'économiser l'énergie[10],[11],[12]. La version 7 du système iOS d'Apple a apporté des changements similaires pour des raisons d'expérience utilisateur[13].

Utilisation[modifier | modifier le code]

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[14],[15]. Certaines distributions Linux mentionnent le minimalisme comme objectif. Alpine Linux, Arch Linux, Puppy Linux, Bodhi Linux, CrunchBang Linux, dynebolic[16] 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 »[17].

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[18]. 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[19],[20]. Scheme[21],[22], Forth[23], et Go[24],[25] 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[26]. 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[27]. 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[28].

Le passe-temps de programmation code golf produit des logiciels minimalistes[29], mais il s'agit généralement de logiciels d'exercices, et non de logiciels d'applications utilisables.

Références[modifier | modifier le code]

(en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Minimalism (computing) » (voir la liste des auteurs).
  1. William von Hagen, Ubuntu Linux Bible: Featuring Ubuntu 10.04 LTS, (ISBN 9780470881804, lire en ligne)
  2. « Five reasons why Emacs will always be better »
  3. « My Lisp Experiences and the Development of GNU Emacs » : « ...I aimed to make the absolute minimal possible Lisp implementation. The size of the programs was a tremendous concern. There were people in those days, in 1985, who had one-megabyte machines without virtual memory. They wanted to be able to use GNU Emacs. This meant I had to keep the program as small as possible. For instance, at the time the only looping construct was while, which was extremely simple. There was no way to break out of the ‘while’ statement, you just had to do a catch and a throw, or test a variable that ran the loop. That shows how far I was pushing to keep things small. We didn't have 'caar' and 'cadr' and so on; "squeeze out everything possible" was the spirit of GNU Emacs, the spirit of Emacs Lisp, from the beginning. »
  4. « dwm - dynamic window manager »
  5. The ne software has been written with sparing resource use as a basic goal. Every possible effort has been made to reduce the use of CPU time and memory, the number of system calls, and the number of characters output to the terminal. -- ne info page
  6. Jonathan Strickland, « HowStuffWorks "What's the difference between notebooks, netbooks and ultra-mobi" », Computer.howstuffworks.com, (consulté le )
  7. « 5 ways to improve battery life in your app »
  8. « Google Chrome Cr-48, Paragon of Minimalist Design », PC Magazine,‎ (lire en ligne)
  9. Pat Pilcher, « Battle of the browsers - which is master of the web? », The Independent, London,‎ (lire en ligne)
  10. Alexandra Chang, « Microsoft Drops 'Aero Glass' User Interface in Windows 8 | Gadget Lab », Wired.com,‎ (lire en ligne, consulté le )
  11. Harry McCracken, « Windows Aero: Why I'm Glad It's Dead | TIME.com », Techland.time.com,‎ (lire en ligne, consulté le )
  12. In 2009, desktops were 44% of the worldwide market and laptops were 56%. Just 3 years later, over 61% of the PCs sold are laptops and the trend is accelerating—this is globally, measuring all Windows PCs sold. Among consumers in the United States buying a PC this year, more than 76% will purchase laptops—the absolute number of all US desktops sold will be fewer than the number of tablets in 2012!
  13. « Why Jony Ive Is Killing Skeuomorphism In iOS 7 »,
  14. « Crafting a Tiny Mach-O Executable »
  15. « Minimalist Cocoa programming »
  16. « Friendly to the environment » [archive du ] (consulté le ) : « This operating system is designed to run on Pentium2 processors with 256MB RAM, not even an harddisk is needed. Unleash the full potential of computers even with a second hand PC. »
  17. « The Art of Unix Programming » : « A 1974 paper in Communications of the ACM gave Unix its first public exposure. In that paper, its authors described the unprecedentedly simple design of Unix, reported over 600 Unix installations. All were on machines underpowered even by the standards of that day, but (as Ritchie and Thompson wrote) "constraint has encouraged not only economy, but also a certain elegance of design." »
  18. « Build Your Own Lisp »
  19. Tom Stuart, Understanding Computation, (ISBN 9781449330118, lire en ligne)
  20. « 7 lines of code, 3 minutes: Implement a programming language from scratch »
  21. « The Evolution of Lisp » : « The initial report on Scheme [Sussman, 1975b] describes a very spare language, with a minimum of primitive constructs, one per concept. (Why take two when one will do?) »
  22. « Scheme-faq-general » : « Scheme is a dialect of Lisp that stresses conceptual elegance and simplicity. »
  23. Federico Biancuzzi et Chromatic, Masterminds of Programming: Conversations with the Creators of Major Programming Languages, (ISBN 9780596555504, lire en ligne) :

    « Forth is a computer language with minimal syntax »

  24. « Go » : « Go is an open source programming language that makes it easy to build simple, reliable, and efficient software. »
  25. « Interview with Ken Thompson » : « ...we started off with the idea that all three of us had to be talked into every feature in the language, so there was no extraneous garbage put into the language for any reason. »
  26. John Millar Carroll, Minimalism Beyond the Nurnberg Funnel, Cambridge, Mass., MIT Press, (ISBN 0-262-03249-X, lire en ligne)
  27. C. Wren et C. Reynolds, « Minimalism in Ubiquitous Interface Design », Springer, vol. 8, no 5,‎ , p. 370–373 (DOI 10.1007/s00779-004-0299-2, S2CID 14851897, lire en ligne, consulté le )
  28. « Uzbl - web interface tools which adhere to the unix philosophy. » : « The general idea is that Uzbl by default is very bare bones. »
  29. « Wik Wiki A Wiki in 1287 characters of PHP »

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]