This article has multiple issues. Please helpimprove it or discuss these issues on thetalk page.(Learn how and when to remove these messages) (Learn how and when to remove this message)
|
Incomputing,minimalism refers to the application ofminimalist philosophies and principles in the design and use ofhardware andsoftware. Minimalism, in this sense, means designing systems that use the least hardware and software resources possible.
In the late 1970s and early 1980s, programmers worked within the confines of relatively expensive and limitedresources of common platforms. Eight or sixteenkilobytes ofRAM was common; 64 kilobytes was considered a vast amount and was the entireaddress space accessible to the8-bit CPUs predominant during the earliest generations ofpersonal computers. The most common storage medium was the 5.25 inchfloppy disk holding from 88 to 170 kilobytes. Hard drives with capacities from five to tenmegabytes 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 usinghigher-level languages. By contrast,system requirements forlegacy 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 theGNU Emacs text editor, which gained thebackronym "Eight Megabytes And Constantly Swapping" in an era when 8 megabytes was a lot of RAM.[1] Today, Emacs' mainly textualbuffer-based paradigm uses far fewer resources thandesktop metaphorGUIIDEs with comparable features such asEclipse orNetbeans.[citation needed] In a speech at the 2002 International Lisp Conference,Richard Stallman indicated that minimalism was a concern in his development ofGNU and Emacs, based on his experiences withLisp and system specifications of low-endminicomputers at the time.[2]
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, faddishsoftware development methodologies, some developers adopted minimalism as a philosophy and chose to limit their programs to a predetermined size or scope.[3][non-primary source needed] A focus onsoftware optimization can result in minimalist software, as programmers reduce the number of operations their program carries out in order to speed execution.[4][non-primary source needed]
In the early 21st century, new developments in computing have brought minimalism to the forefront. In what has been termed thepost-PC era it is no longer necessary to buy a high-end personal computer merely to perform common computing tasks.[5]Mobile computing devices, such assmartphones,tablet computers,netbooks andplug 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 likealpha blending drains the battery faster than a "flat ui".[6] The growing popularity of these devices has made minimalism an important design concern.
Google'sChrome browser andChromeOS are often cited as examples of minimalist design.[7][8]
Another example isWindows 8, whereMicrosoft implemented the "simple, squared-off"Metro appearance, which was less graphics-intensive than the previousAero interface used inWindows 7 andWindows Vista. This change was made in part because of the rise of smaller, battery-powered devices and the need to conserve power.[9][10][11] Version 7 ofApple'siOS made similar changes foruser experience reasons.[12]
Developers may createuser interfaces to be as simple as possible by eliminatingbuttons anddialog boxes that may potentially confuse the user. Minimalism is sometimes used in itsvisual arts meaning, particularly in theindustrial design of the hardware device orsoftware 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.[13][14] SomeLinux distributions mention minimalism as a goal.Alpine,Arch,Puppy,Bodhi,CrunchBang,dynebolic[15] andTiny Core are examples. The early development of theUnix system occurred on low-powered hardware, andDennis Ritchie andKen Thompson have stated their opinion that this constraint contributed to the system's "elegance of design".[16]
Programming language designers can create minimal programming languages by eschewingsyntactic sugar and extensivelibrary functions. Such languages may beTuring tarpits due to not offering standard support for common programming tasks. Creating a minimal Lispinterpreter is a common learning task set beforecomputer science students.[17] TheLambda calculus, developed byAlonzo Church is a minimal programming language that uses only function definitions and function applications.[18][19]Scheme,[20][21]Forth,[22] andGo[23][24] are cited as examples of practical, minimal programming languages.
The programming hobby ofcode golf results in minimalist software,[25] but these are typically exercises orcode poetry, not usable applications software.
John Millar Carroll, in his bookMinimalism Beyond theNürnberg Funnel pointed out that the use of minimalism results in "instant-use" devices such as video games,ATMs,voting machines, andmall kiosks with little-or-nolearning curve that do not require the user to read manuals.[26] User Interface researchers have performed experiments suggesting that minimalism, as illustrated by the design principles ofparsimony andtransparency, bolsters efficiency and learnability.[27] Minimalism is implicit in theUnix 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.[28]
...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 waswhile, 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.
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!
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.
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."
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?)
{{cite conference}}: CS1 maint: multiple names: authors list (link)Scheme is a dialect of Lisp that stresses conceptual elegance and simplicity.
Forth is a computer language with minimal syntax
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
...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.
The general idea is that Uzbl by default is very bare bones.