В вычислительной технике минимализм означает применение минималистских философий и принципов при проектировании и использовании аппаратного и программного обеспечения . В этом смысле минимализм означает разработку систем, которые используют как можно меньше аппаратных и программных ресурсов.
В конце 1970-х и начале 1980-х программисты работали в рамках относительно дорогих и ограниченных ресурсов обычных платформ. Восемь или шестнадцать килобайт оперативной памяти были обычным явлением; 64 килобайта считались огромным объемом и представляли собой все адресное пространство , доступное 8-битным процессорам, преобладавшим в самых ранних поколениях персональных компьютеров . Самым распространенным носителем информации была 5,25-дюймовая дискета емкостью от 88 до 170 килобайт. Жесткие диски емкостью от пяти до десяти мегабайт стоят тысячи долларов.
Со временем объем памяти персональных компьютеров увеличился на порядки, и основные программисты воспользовались дополнительным объемом памяти, чтобы расширить возможности своего программного обеспечения и упростить разработку за счет использования языков более высокого уровня . Напротив, системные требования для устаревшего программного обеспечения остались прежними. В результате даже самые сложные и многофункциональные программы прошлых лет кажутся минималистичными по сравнению с современным программным обеспечением.
Одним из примеров программы, чьи системные требования когда-то принесли ей серьезную репутацию, является текстовый редактор GNU Emacs , получивший название «Восемь мегабайт и постоянная замена» в эпоху, когда 8 мегабайт — это большой объем оперативной памяти. [1] Сегодня парадигма Emacs, в основном основанная на текстовых буферах , использует гораздо меньше ресурсов, чем настольные метафорические GUI IDE с сопоставимыми функциями, такие как Eclipse или Netbeans . [2] В своем выступлении на Международной конференции по Lisp в 2002 году Ричард Столлман указал, что минимализм был проблемой при разработке GNU и Emacs, основываясь на своем опыте работы с Lisp и системных спецификациях мини-компьютеров начального уровня того времени. [3]
Поскольку возможности и системные требования обычного программного обеспечения для настольных компьютеров и операционных систем росли в течение 1980-х и 1990-х годов, а в разработке программного обеспечения стали доминировать команды, поддерживающие противоречивые, причудливые методологии разработки программного обеспечения , некоторые разработчики приняли минимализм как философию и решили ограничить свои программы заранее определенного размера или объема. [4] Сосредоточение внимания на оптимизации программного обеспечения может привести к созданию минималистичного программного обеспечения, поскольку программисты сокращают количество операций, выполняемых их программой, чтобы ускорить выполнение. [5]
В начале 21 века новые разработки в области вычислительной техники выдвинули минимализм на первый план. В эпоху, названную пост-ПК, больше нет необходимости покупать высококлассный персональный компьютер просто для выполнения обычных вычислительных задач. [6] Мобильные вычислительные устройства, такие как смартфоны , планшетные компьютеры , нетбуки и подключаемые компьютеры , часто имеют меньший объем памяти, менее производительные графические подсистемы и более медленные процессоры по сравнению с персональными компьютерами, которые они, как ожидается, заменят. Кроме того, интенсивное использование графических эффектов, таких как альфа-смешение, разряжает батарею быстрее, чем «плоский интерфейс». [7] Растущая популярность этих устройств сделала минимализм важной проблемой дизайна.
Браузер Google Chrome и ChromeOS часто называют примерами минималистского дизайна. [8] [9]
Другим примером является Windows 8 , где Microsoft реализовала «простой, квадратный» внешний вид Metro , который был менее требовательным к графике, чем предыдущий интерфейс Aero , использовавшийся в Windows 7 и Windows Vista . Это изменение было внесено отчасти из-за появления небольших устройств с батарейным питанием и необходимости экономить энергию. [10] [11] [12] В седьмой версии iOS от Apple были внесены аналогичные изменения из соображений удобства пользователей . [13]
Разработчики могут создавать максимально простые пользовательские интерфейсы, устраняя кнопки и диалоговые окна , которые потенциально могут сбить с толку пользователя. Минимализм иногда используется в значении изобразительного искусства , особенно в промышленном дизайне аппаратного обеспечения или программного обеспечения .
Некоторые разработчики пытались создать программы для выполнения определенной функции с использованием наименьшего количества строк кода или минимального размера скомпилированного исполняемого файла, возможного на данной платформе. [14] [15] В некоторых дистрибутивах Linux минимализм упоминается как цель. Примерами являются Alpine Linux , Arch Linux , Puppy Linux , Bodhi Linux , CrunchBang Linux , dynebolic [16] и Tiny Core Linux . Ранняя разработка системы Unix происходила на маломощном оборудовании, и Деннис Ритчи и Кен Томпсон высказали свое мнение, что это ограничение способствовало «элегантности дизайна» системы. [17]
Разработчики языков программирования могут создавать минимальные языки программирования, избегая синтаксического сахара и обширных библиотечных функций . Такие языки могут оказаться тупицами Тьюринга из-за отсутствия стандартной поддержки общих задач программирования. Создание минимального интерпретатора Lisp — обычная учебная задача, которую ставят перед студентами , изучающими информатику . [18] Лямбда -исчисление , разработанное Алонзо Чёрчем , представляет собой минимальный язык программирования, который использует только определения функций и приложения функций. [19] [20] Scheme , [21] [22] Forth , [23] и Go [24] [25] приводятся в качестве примеров практичных минимальных языков программирования.
Увлечение программированием, например , гольф с кодом , приводит к созданию минималистского программного обеспечения [26] , но обычно это упражнения или поэзия кода , а не полезное прикладное программное обеспечение.
Джон Миллар Кэрролл в своей книге «Минимализм за пределами Нюрнбергской воронки » отметил, что использование минимализма приводит к появлению устройств «мгновенного использования», таких как видеоигры, банкоматы , машины для голосования и киоски в торговых центрах , с минимальной или нулевой кривой обучения , которые не требовать от пользователя чтения руководств. [27] Исследователи пользовательского интерфейса провели эксперименты, показавшие, что минимализм, иллюстрируемый принципами проектирования экономности и прозрачности , повышает эффективность и обучаемость. [28] Минимализм неявно присущ философии Unix «все представляет собой текстовый поток» и «делай что-то одно и делай это хорошо», хотя современные дистрибутивы Unix/Linux не так строго придерживаются этой философии. [29]
...Я стремился сделать абсолютно минимальную реализацию Lisp.
Размер программ вызывал огромную озабоченность.
В те времена, в 1985 году, были люди, у которых были одномегабайтные машины без виртуальной памяти.
Они хотели иметь возможность использовать GNU Emacs.
Это означало, что мне пришлось сделать программу как можно меньшей.
Например, в то время единственной конструкцией цикла была
while
, которая была чрезвычайно простой.
Не было возможности выйти из оператора while, нужно было просто выполнить catch и throw или протестировать переменную, которая запускала цикл.
Это показывает, как далеко я зашел, чтобы сделать вещи маленькими.
У нас не было «каар», «кадр» и так далее;
«выжать все возможное» — таков был дух GNU Emacs, дух Emacs Lisp с самого начала.
Эта операционная система предназначена для работы на процессорах Pentium2 с 256 МБ оперативной памяти, при этом даже не требуется жесткий диск.
Раскройте весь потенциал компьютеров даже с помощью подержанного ПК.
В статье 1974 года, опубликованной в журнале Communications of the ACM, Unix впервые была представлена публике.
В этой статье ее авторы описали беспрецедентно простую конструкцию Unix и сообщили о более чем 600 установках Unix.
Все они были на машинах, недостаточно мощных даже по меркам того времени, но (как писали Ричи и Томпсон) «ограничения способствовали не только экономичности, но и определенной элегантности дизайна».
В первоначальном отчете о Scheme [Sussman, 1975b] описывается очень скудный язык с минимумом примитивных конструкций, по одной на концепцию.
(Зачем брать два, если достаточно одного?)
Схема — это диалект Лиспа, который подчеркивает концептуальную элегантность и простоту.
Форт — компьютерный язык с минимальным синтаксисом.
Go — это язык программирования с открытым исходным кодом, который позволяет легко создавать простое, надежное и эффективное программное обеспечение.
... мы начали с идеи, что всех нас троих нужно обсудить с каждой функцией языка, чтобы в язык не добавлялось постороннего мусора по какой-либо причине.
Общая идея заключается в том, что Узбл по умолчанию очень простой.