Minimalism (computing)

Last updated

In computing, minimalism refers to the application of minimalist philosophies and principles in the design and use of hardware and software. Minimalism, in this sense, means designing systems that use the least hardware and software resources possible.

Contents

History

In the late 1970s and early 1980s, programmers worked within the confines of relatively expensive and limited resources of common platforms. Eight or sixteen kilobytes of RAM was common; 64 kilobytes was considered a vast amount and was the entire address space accessible to the 8-bit CPUs predominant during the earliest generations of personal computers. The most common storage medium was the 5.25 inch floppy disk holding from 88 to 170 kilobytes. Hard drives with capacities from five to ten megabytes cost thousands of dollars.

Over time, personal-computer memory capacities expanded by orders of magnitude and mainstream programmers took advantage of the added storage to increase their software's capabilities and to make development easier by using higher-level languages. By contrast, system requirements for legacy software remained the same. As a result, even the most elaborate, feature-rich programs of yesteryear seem minimalist in comparison with current software.

One example of a program whose system requirements once gave it a heavyweight reputation is the GNU Emacs text editor, which gained the backronym "Eight Megabytes And Constantly Swapping" in an era when 8 megabytes was a lot of RAM. [1] Today, Emacs' mainly textual buffer-based paradigm uses far fewer resources than desktop metaphor GUI IDEs with comparable features such as Eclipse or Netbeans. [2] In a speech at the 2002 International Lisp Conference, Richard Stallman indicated that minimalism was a concern in his development of GNU and Emacs, based on his experiences with Lisp and system specifications of low-end minicomputers at the time. [3]

As the capabilities and system requirements of common desktop software and operating systems grew throughout the 1980s and 1990s, and as software development became dominated by teams espousing conflicting, faddish software development methodologies, some developers adopted minimalism as a philosophy and chose to limit their programs to a predetermined size or scope. [4] A focus on software optimization can result in minimalist software, as programmers reduce the number of operations their program carries out in order to speed execution. [5]

In the early 21st century, new developments in computing have brought minimalism to the forefront. In what has been termed the post-PC era it is no longer necessary to buy a high-end personal computer merely to perform common computing tasks. [6] Mobile computing devices, such as smartphones, tablet computers, netbooks and plug computers, often have smaller memory capacities, less-capable graphics subsystems, and slower processors when compared to the personal computer they are expected to replace. In addition, heavy use of graphics effects like alpha blending drains the battery faster than a "flat ui". [7] The growing popularity of these devices has made minimalism an important design concern.

Google's Chrome browser and ChromeOS are often cited as examples of minimalist design. [8] [9]

Another example is Windows 8, where Microsoft implemented the "simple, squared-off" Metro appearance, which was less graphics-intensive than the previous Aero interface used in Windows 7 and Windows Vista. This change was made in part because of the rise of smaller, battery-powered devices and the need to conserve power. [10] [11] [12] Version 7 of Apple's iOS made similar changes for user experience reasons. [13]

Usage

Developers may create user interfaces to be as simple as possible by eliminating buttons and dialog boxes that may potentially confuse the user. Minimalism is sometimes used in its visual arts meaning, particularly in the industrial design of the hardware device or software theme.

Some developers have attempted to create programs to perform a particular function in the fewest lines of code, or smallest compiled executable size possible on a given platform. [14] [15] Some Linux distributions mention minimalism as a goal. Alpine Linux, Arch Linux, Puppy Linux, Bodhi Linux, CrunchBang Linux, dynebolic [16] and Tiny Core Linux are examples. The early development of the Unix system occurred on low-powered hardware, and Dennis Ritchie and Ken Thompson have stated their opinion that this constraint contributed to the system's "elegance of design". [17]

Programming language designers can create minimal programming languages by eschewing syntactic sugar and extensive library functions. Such languages may be Turing tarpits due to not offering standard support for common programming tasks. Creating a minimal Lisp interpreter is a common learning task set before computer science students. [18] The Lambda calculus, developed by Alonzo Church is a minimal programming language that uses only function definitions and function applications. [19] [20] Scheme, [21] [22] Forth, [23] and Go [24] [25] are cited as examples of practical, minimal programming languages.

The programming hobby of code golf results in minimalist software, [26] but these are typically exercises or code poetry, not usable applications software.

John Millar Carroll, in his book Minimalism Beyond the Nürnberg Funnel pointed out that the use of minimalism results in "instant-use" devices such as video games, ATMs, voting machines, and mall kiosks with little-or-no learning curve that do not require the user to read manuals. [27] User Interface researchers have performed experiments suggesting that minimalism, as illustrated by the design principles of parsimony and transparency, bolsters efficiency and learnability. [28] Minimalism is implicit in the Unix philosophies of "everything is a text stream" and "do one thing and do it well", although modern Unix/Linux distributions do not hold so rigorously to this philosophy. [29]

See also

Related Research Articles

<span class="mw-page-title-main">Cygwin</span> Unix-like environment for Windows

Cygwin is a Unix-like environment and command-line interface for Microsoft Windows.

The editor war is the rivalry between users of the Emacs and vi text editors. The rivalry has become an enduring part of hacker culture and the free software community.

<span class="mw-page-title-main">Emacs Lisp</span> Dialect of Lisp used as the primary implementation and extension language for Emacs

Emacs Lisp is a dialect of the Lisp programming language used as a scripting language by Emacs. It is used for implementing most of the editing functionality built into Emacs, the remainder being written in C, as is the Lisp interpreter. Emacs Lisp is also termed Elisp, although there are also older, unrelated Lisp dialects with that name.

<span class="mw-page-title-main">GNU</span> Free software collection

GNU is an extensive collection of free software, which can be used as an operating system or can be used in parts with other operating systems. The use of the completed GNU tools led to the family of operating systems popularly known as Linux. Most of GNU is licensed under the GNU Project's own General Public License (GPL).

An integrated development environment (IDE) is a software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, and a debugger. Some IDEs, such as IntelliJ IDEA, Eclipse and Lazarus contain the necessary compiler, interpreter or both; others, such as SharpDevelop and NetBeans, do not.

<span class="mw-page-title-main">Genera (operating system)</span> Symbolics operating system based on Lisp

Genera is a commercial operating system and integrated development environment for Lisp machines created by Symbolics. It is essentially a fork of an earlier operating system originating on the Massachusetts Institute of Technology (MIT) AI Lab's Lisp machines which Symbolics had used in common with Lisp Machines, Inc. (LMI), and Texas Instruments (TI). Genera was also sold by Symbolics as Open Genera, which runs Genera on computers based on a Digital Equipment Corporation (DEC) Alpha processor using Tru64 UNIX. In 2021 a new version was released as Portable Genera which runs on Tru64 UNIX on Alpha, Linux on x86-64 and Arm64 Linux, and macOS on x86-64 and Arm64. It is released and licensed as proprietary software.

In computing, a desktop environment (DE) is an implementation of the desktop metaphor made of a bundle of programs running on top of a computer operating system that share a common graphical user interface (GUI), sometimes described as a graphical shell. The desktop environment was seen mostly on personal computers until the rise of mobile computing. Desktop GUIs help the user to easily access and edit files, while they usually do not provide access to all of the features found in the underlying operating system. Instead, the traditional command-line interface (CLI) is still used when full control over the operating system is required.

Originally, the word computing was synonymous with counting and calculating, and the science and technology of mathematical calculations. Today, "computing" means using computers and other computing machines. It includes their operation and usage, the electrical processes carried out within the computing hardware itself, and the theoretical concepts governing them.

<span class="mw-page-title-main">GNU Project</span> Free software project

The GNU Project is a free software, mass collaboration project announced by Richard Stallman on September 27, 1983. Its goal is to give computer users freedom and control in their use of their computers and computing devices by collaboratively developing and publishing software that gives everyone the rights to freely run the software, copy and distribute it, study it, and modify it. GNU software grants these rights in its license.

<span class="mw-page-title-main">MinGW</span> Free and open-source software for developing applications in Microsoft Windows

MinGW, formerly mingw32, is a free and open source software development environment to create Microsoft Windows applications.

ratpoison Simple mouse-free tiling window manager

ratpoison is a tiling window manager for the X Window System primarily developed by Shawn Betts. The user interface and much of their functionality are inspired by the GNU Screen terminal multiplexer. While ratpoison is written in C, Betts' StumpWM re-implements a similar window manager in Common Lisp.

Hemlock is a free Emacs text editor for most POSIX-compliant Unix systems. It follows the tradition of the Lisp Machine editor ZWEI and the ITS/TOPS-20 implementation of Emacs, but differs from XEmacs or GNU Emacs, the most popular Emacs variants, in that it is written in Common Lisp rather than Emacs Lisp and C—although it borrows features from the later editors. Hemlock was originally written by the CMU Spice project in Spice Lisp for the PERQ computer.

<span class="mw-page-title-main">Linux</span> Family of Unix-like operating systems

Linux is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution (distro), which includes the kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses and recommends the name "GNU/Linux" to emphasize the use and importance of GNU software in many distributions, causing some controversy.

Super key (❖) is an alternative and older name for what is commonly labelled as the Windows key or Command key on modern keyboards, typically bound and handled as such by Linux and BSD operating systems and software today.

<span class="mw-page-title-main">GNU Emacs</span> GNU version of the Emacs text editor

GNU Emacs is a free software text editor. It was created by GNU Project founder Richard Stallman, based on the Emacs editor developed for Unix operating systems. GNU Emacs has been a central component of the GNU project and a flagship project of the free software movement. Its tag line is "the extensible self-documenting text editor."

Emacs, originally named EMACS, is a family of text editors that are characterized by their extensibility. The manual for the most widely used variant, GNU Emacs, describes it as "the extensible, customizable, self-documenting, real-time display editor". Development of the first Emacs began in the mid-1970s, and work on GNU Emacs, directly descended from the original, is ongoing; its latest version is 29.2, released January 2024.

<span class="mw-page-title-main">Scripting language</span> Programming language for run-time events

A scripting language or script language is a programming language that is used to manipulate, customize, and automate the facilities of an existing system. Scripting languages are usually interpreted at runtime rather than compiled.

Comparison of user features of operating systems refers to a comparison of the general user features of major operating systems in a narrative format. It does not encompass a full exhaustive comparison or description of all technical details of all operating systems. It is a comparison of basic roles and the most prominent features. It also includes the most important features of the operating system's origins, historical development, and role.

References

  1. Hagen, William von (13 May 2010). Ubuntu Linux Bible: Featuring Ubuntu 10.04 LTS. ISBN   9780470881804.
  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. ne 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. Strickland, Jonathan (12 February 2009). "HowStuffWorks "What's the difference between notebooks, netbooks and ultra-mobi"". Computer.howstuffworks.com. Retrieved 8 July 2013.
  7. "5 ways to improve battery life in your app".
  8. "Google Chrome Cr-48, Paragon of Minimalist Design". PC Magazine. 13 December 2010.
  9. Pilcher, Pat (13 July 2009). "Battle of the browsers - which is master of the web?" . The Independent. London. Archived from the original on 15 May 2022.
  10. Chang, Alexandra (21 May 2012). "Microsoft Drops 'Aero Glass' User Interface in Windows 8 | Gadget Lab". Wired. Wired.com. Retrieved 8 July 2013.
  11. McCracken, Harry (22 May 2012). "Windows Aero: Why I'm Glad It's Dead | TIME.com". Time. Techland.time.com. Retrieved 8 July 2013.
  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". 10 June 2013.
  14. "Crafting a Tiny Mach-O Executable".
  15. "Minimalist Cocoa programming".
  16. "Friendly to the environment". Archived from the original on 2 February 2014. Retrieved 31 January 2014. 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. Stuart, Tom (15 May 2013). Understanding Computation. ISBN   9781449330118.
  20. "7 lines of code, 3 minutes: Implement a programming language from scratch".
  21. "The Evolution of Lisp" (PDF). 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. Biancuzzi, Federico; Chromatic (21 March 2009). Masterminds of Programming: Conversations with the Creators of Major Programming Languages. ISBN   9780596555504. 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. "Wik Wiki A Wiki in 1287 characters of PHP".
  27. John Millar Carroll (1998). Minimalism Beyond the Nurnberg Funnel. Cambridge, Mass.: MIT Press. ISBN   0-262-03249-X . Retrieved 21 November 2007.
  28. Wren, C.; Reynolds, C. (2004). "Minimalism in Ubiquitous Interface Design" (PDF). Personal and Ubiquitous Computing. 8 (5). Springer: 370–373. doi:10.1007/s00779-004-0299-2. S2CID   14851897 . Retrieved 29 July 2008.
  29. "Uzbl - web interface tools which adhere to the unix philosophy". The general idea is that Uzbl by default is very bare bones.