미니멀리즘 (컴퓨팅)
컴퓨팅에서 미니멀리즘(minimalism)은 미니멀리즘 철학과 원칙을 하드웨어 및 소프트웨어의 설계 및 사용에 적용하는 것을 의미한다. 이러한 의미에서 미니멀리즘은 가능한 최소한의 하드웨어 및 소프트웨어 자원을 사용하는 시스템을 설계하는 것을 의미한다.
역사
[편집]1970년대 후반과 1980년대 초반에 프로그래머들은 일반적인 플랫폼의 상대적으로 비싸고 제한적인 자원 내에서 작업했다. 8~16 킬로바이트의 랜덤 액세스 메모리가 일반적이었으며, 64 킬로바이트는 막대한 양으로 간주되었고 개인용 컴퓨터 초기 세대에서 지배적이었던 8비트 CPU가 접근할 수 있는 전체 주소 공간이었다. 가장 일반적인 저장 매체는 88~170킬로바이트를 저장할 수 있는 5.25인치 플로피 디스크였다. 5~10 메가바이트 용량의 하드 드라이브는 수천 달러가 들었다.
시간이 지남에 따라 개인용 컴퓨터의 메모리 용량이 비약적으로 확장되었고, 주류 프로그래머들은 추가된 저장 공간을 활용하여 소프트웨어의 기능을 늘리고 고급 언어를 사용하여 개발을 더 쉽게 만들었다. 대조적으로, 레거시 소프트웨어의 시스템 요구 사항은 동일하게 유지되었다. 결과적으로, 과거의 가장 정교하고 기능이 풍부한 프로그램조차도 현재 소프트웨어와 비교하면 미니멀리즘적으로 보인다.
시스템 요구 사항으로 인해 한때 고용량으로 명성이 높았던 프로그램의 한 예는 GNU 이맥스 텍스트 편집기인데, 이는 8메가바이트가 많은 RAM이었던 시대에 "Eight Megabytes And Constantly Swapping"(항상 8메가바이트를 스와핑함)이라는 역두문자어를 얻었다.[1] 오늘날 이맥스의 주로 텍스트 버퍼 (컴퓨터 과학) 기반 패러다임은 이클립스 또는 넷빈즈와 같은 유사한 기능을 가진 데스크톱 메타포 GUI 통합 개발 환경보다 훨씬 적은 자원을 사용한다. 2002년 국제 리스프 컨퍼런스 연설에서 리처드 스톨먼은 당시 저사양 미니컴퓨터의 리스프 및 시스템 사양 경험을 바탕으로 GNU와 이맥스 개발에서 미니멀리즘이 중요한 관심사였음을 밝혔다.[2]
1980년대와 1990년대에 걸쳐 일반적인 데스크톱 소프트웨어와 운영 체제의 기능 및 시스템 요구 사항이 증가하고, 소프트웨어 개발이 상충되고 유행하는 소프트웨어 개발 방법론을 지지하는 팀에 의해 지배되면서 일부 개발자들은 미니멀리즘을 철학으로 채택하고 프로그램의 크기나 범위를 미리 정해진 한도로 제한하기로 선택했다.[3] 소프트웨어 최적화에 중점을 두면 미니멀리즘 소프트웨어가 될 수 있는데, 프로그래머가 실행 속도를 높이기 위해 프로그램이 수행하는 작업 수를 줄이기 때문이다.[4]
21세기 초, 컴퓨팅의 새로운 발전은 미니멀리즘을 전면에 내세웠다. 이른바 포스트-PC 시대에는 일반적인 컴퓨팅 작업을 수행하기 위해 더 이상 고성능 개인용 컴퓨터를 구매할 필요가 없다.[5] 스마트폰, 태블릿 컴퓨터, 넷북 및 플러그 컴퓨터와 같은 모바일 컴퓨팅 장치는 대체할 것으로 예상되는 개인용 컴퓨터에 비해 메모리 용량이 작고 그래픽 하위 시스템의 성능이 떨어지며 프로세서가 느린 경우가 많다. 또한 알파 블렌딩과 같은 그래픽 효과를 많이 사용하면 "평면 UI"보다 배터리가 더 빨리 소모된다.[6] 이러한 장치들의 인기가 높아지면서 미니멀리즘이 중요한 디자인 고려 사항이 되었다.
구글의 크롬 브라우저 및 크롬OS는 미니멀리즘 디자인의 예로 자주 인용된다.[7][8]
또 다른 예는 마이크로소프트가 "단순하고 네모난" 메트로 모양을 구현한 윈도우 8로, 이전 윈도우 7 및 윈도우 비스타에서 사용된 윈도우 에어로 인터페이스보다 그래픽 집약도가 낮았다. 이러한 변경은 부분적으로 더 작고 배터리로 작동하는 장치의 증가와 전력 절약의 필요성 때문에 이루어졌다.[9][10][11] 애플의 IOS 버전 7도 사용자 경험상의 이유로 유사한 변경을 했다.[12]
사용법
[편집]개발자들은 사용자에게 혼란을 줄 수 있는 버튼과 대화 상자를 제거하여 사용자 인터페이스를 최대한 단순하게 만들 수 있다. 미니멀리즘은 때때로 시각 예술적 의미로, 특히 하드웨어 장치나 소프트웨어 테마의 산업 디자인에서 사용된다.
일부 개발자들은 주어진 플랫폼에서 가장 적은 코드 라인 또는 가장 작은 컴파일된 실행 파일 크기로 특정 기능을 수행하는 프로그램을 만들려고 시도했다.[13][14] 일부 리눅스 배포판은 미니멀리즘을 목표로 언급한다. 알파인, 아치, 퍼피, 보디, 크런치뱅, dynebolic[15] 및 타이니 코어가 그 예이다. 유닉스 시스템의 초기 개발은 저전력 하드웨어에서 이루어졌으며, 데니스 리치와 켄 톰프슨은 이러한 제약이 시스템의 "설계의 우아함"에 기여했다고 의견을 밝혔다.[16]
프로그래밍 언어 설계자들은 신택틱 슈거와 광범위한 라이브러리 함수를 피함으로써 최소한의 프로그래밍 언어를 만들 수 있다. 이러한 언어는 일반적인 프로그래밍 작업에 대한 표준 지원을 제공하지 않아 튜링 함정이 될 수 있다. 최소한의 리스프 인터프리터를 만드는 것은 컴퓨터 과학 학생들에게 흔히 주어지는 학습 과제이다.[17] 알론조 처치가 개발한 람다 대수는 함수 정의와 함수 적용만을 사용하는 최소한의 프로그래밍 언어이다.[18][19] 스킴,[20][21] 포스,[22] 및 Go[23][24]는 실용적이고 최소한의 프로그래밍 언어의 예로 인용된다.
코드 골프라는 프로그래밍 취미는 미니멀리즘 소프트웨어를 만들어내지만,[25] 이는 일반적으로 연습이나 코드 시이며, 사용 가능한 응용 소프트웨어는 아니다.
존 밀라 캐롤은 그의 저서 《뉘른베르크 깔때기를 넘어서는 미니멀리즘》에서 미니멀리즘의 사용이 비디오 게임, ATM, 투표기, 쇼핑몰 키오스크와 같이 사용자가 매뉴얼을 읽을 필요가 없는 거의 또는 전혀 학습 곡선이 없는 "즉시 사용 가능한" 장치로 이어진다고 지적했다.[26] 사용자 인터페이스 연구원들은 절약 및 투명성의 설계 원칙으로 예시된 미니멀리즘이 효율성과 학습 가능성을 강화한다는 실험을 수행했다.[27] 미니멀리즘은 "모든 것은 텍스트 스트림이다" 및 "하나의 일을 잘 한다"는 유닉스 철학에 내재되어 있지만, 현대 유닉스/리눅스 배포판은 이러한 철학을 엄격하게 지키지는 않는다.[28]
같이 보기
[편집]각주
[편집]- ↑ Hagen, William von (2010년 5월 13일). 《Ubuntu Linux Bible: Featuring Ubuntu 10.04 LTS》. John Wiley & Sons. ISBN 9780470881804.
- ↑ “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.
- ↑ “dwm - dynamic window manager”.
- ↑ 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
- ↑ Strickland, Jonathan (2009년 2월 12일). “HowStuffWorks "What's the difference between notebooks, netbooks and ultra-mobi"”. Computer.howstuffworks.com. 2013년 7월 8일에 확인함.
- ↑ “5 ways to improve battery life in your app”.
- ↑ “Google Chrome Cr-48, Paragon of Minimalist Design”. 《PC Magazine》. 2010년 12월 13일.
- ↑ Pilcher, Pat (2009년 7월 13일). “Battle of the browsers - which is master of the web?”. 《The Independent》 (London). 2022년 5월 15일에 원본 문서에서 보존된 문서.
- ↑ Chang, Alexandra (2012년 5월 21일). “Microsoft Drops 'Aero Glass' User Interface in Windows 8 | Gadget Lab”. 《Wired》 (Wired.com). 2013년 7월 8일에 확인함.
- ↑ McCracken, Harry (2012년 5월 22일). “Windows Aero: Why I'm Glad It's Dead”. 《Time》 (Time). 2013년 7월 8일에 확인함.
- ↑ 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!
- ↑ “Why Jony Ive Is Killing Skeuomorphism In iOS 7”. 2013년 6월 10일.
- ↑ “Crafting a Tiny Mach-O Executable”.
- ↑ “Minimalist Cocoa programming”. 2010년 9월 20일.
- ↑ “Friendly to the environment”. 2014년 2월 2일에 원본 문서에서 보존된 문서. 2014년 1월 31일에 확인함.
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.
- ↑ “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."
- ↑ “Build Your Own Lisp”.
- ↑ Stuart, Tom (2013년 5월 15일). 《Understanding Computation》. "O'Reilly Media, Inc.". ISBN 9781449330118.
- ↑ “7 lines of code, 3 minutes: Implement a programming language from scratch”.
- ↑ “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?)
- ↑ “Scheme-faq-general”.
Scheme is a dialect of Lisp that stresses conceptual elegance and simplicity.
- ↑ Biancuzzi, Federico; Chromatic (2009년 3월 21일). 《Masterminds of Programming: Conversations with the Creators of Major Programming Languages》. "O'Reilly Media, Inc.". ISBN 9780596555504.
Forth is a computer language with minimal syntax
- ↑ “Go”.
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
- ↑ “Interview with Ken Thompson”. 《Dr. Dobb's》.
...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.
- ↑ “Wik Wiki A Wiki in 1287 characters of PHP”.
- ↑ John Millar Carroll (1998). 《Minimalism Beyond the Nurnberg Funnel》. Cambridge, Mass.: MIT Press. ISBN 0-262-03249-X. 2007년 11월 21일에 확인함.
- ↑ Wren, C.; Reynolds, C. (2004). 《Minimalism in Ubiquitous Interface Design》 (PDF). 《Personal and Ubiquitous Computing》 8 (Springer). 370–373쪽. doi:10.1007/s00779-004-0299-2. S2CID 14851897. 2008년 7월 29일에 확인함.
- ↑ “Uzbl - web interface tools which adhere to the unix philosophy.”.
The general idea is that Uzbl by default is very bare bones.