В вычислительной технике минимализм относится к применению минималистских философий и принципов в проектировании и использовании аппаратного и программного обеспечения . Минимализм в этом смысле означает проектирование систем, которые используют как можно меньше аппаратных и программных ресурсов.
В конце 1970-х и начале 1980-х годов программисты работали в рамках относительно дорогих и ограниченных ресурсов распространенных платформ. Восемь или шестнадцать килобайт оперативной памяти были обычным явлением; 64 килобайта считались огромным объемом и составляли все адресное пространство , доступное 8-битным процессорам, преобладавшим в первых поколениях персональных компьютеров . Наиболее распространенным носителем информации был 5,25-дюймовый гибкий диск, вмещавший от 88 до 170 килобайт. Жесткие диски емкостью от пяти до десяти мегабайт стоили тысячи долларов.
Со временем объемы памяти персональных компьютеров увеличились на порядки, и программисты-основатели воспользовались дополнительным хранилищем, чтобы расширить возможности своего программного обеспечения и упростить разработку с помощью языков более высокого уровня . Напротив, системные требования к устаревшему программному обеспечению остались прежними. В результате даже самые сложные, многофункциональные программы прошлых лет кажутся минималистичными по сравнению с современным программным обеспечением.
Одним из примеров программы, системные требования которой когда-то обеспечили ей репутацию тяжеловеса, является текстовый редактор GNU Emacs , который получил бэкроним «Восемь мегабайт и постоянная подкачка» в эпоху, когда 8 мегабайт были большим объемом оперативной памяти. [1] Сегодня парадигма Emacs, основанная в основном на текстовом буфере , использует гораздо меньше ресурсов, чем графические IDE- среды с метафорой рабочего стола с сопоставимыми функциями, такие как Eclipse или Netbeans . [2] В своей речи на Международной конференции Lisp 2002 года Ричард Столлман указал, что минимализм был проблемой при его разработке GNU и Emacs, основываясь на своем опыте работы с Lisp и системных спецификациях мини-компьютеров низкого уровня того времени. [3]
По мере того, как возможности и системные требования обычного программного обеспечения для настольных компьютеров и операционных систем росли в течение 1980-х и 1990-х годов, а разработка программного обеспечения стала доминировать среди команд, придерживающихся противоречивых, модных методологий разработки программного обеспечения , некоторые разработчики приняли минимализм как философию и решили ограничить свои программы предопределенным размером или областью действия. [4] Сосредоточение внимания на оптимизации программного обеспечения может привести к минималистичному программному обеспечению, поскольку программисты сокращают количество операций, выполняемых их программой, чтобы ускорить выполнение. [5]
В начале 21-го века новые разработки в области вычислительной техники вывели минимализм на передний план. В эпоху, которую называют пост-ПК, больше нет необходимости покупать высокопроизводительный персональный компьютер только для выполнения обычных вычислительных задач. [6] Мобильные вычислительные устройства, такие как смартфоны , планшетные компьютеры , нетбуки и подключаемые компьютеры , часто имеют меньший объем памяти, менее эффективные графические подсистемы и более медленные процессоры по сравнению с персональным компьютером, который они должны заменить. Кроме того, интенсивное использование графических эффектов, таких как альфа-смешивание, разряжает батарею быстрее, чем «плоский пользовательский интерфейс». [7] Растущая популярность этих устройств сделала минимализм важной проблемой дизайна.
Браузер Chrome и ChromeOS от Google часто приводятся в качестве примеров минималистичного дизайна. [8] [9]
Другим примером является Windows 8 , где Microsoft реализовала «простой, квадратный» внешний вид Metro , который был менее графически интенсивным, чем предыдущий интерфейс Aero, используемый в Windows 7 и Windows Vista . Это изменение было сделано отчасти из-за роста числа небольших устройств с питанием от батареи и необходимости экономить электроэнергию. [10] [11] [12] Версия 7 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 или проверить переменную, которая запускала цикл. Это показывает, как далеко я зашел, чтобы сделать вещи маленькими. У нас не было 'caar' и 'cadr' и так далее; "выжать все возможное" было духом GNU Emacs, духом Emacs Lisp с самого начала.
Эта операционная система предназначена для работы на процессорах Pentium2 с 256 МБ ОЗУ, даже жесткий диск не нужен. Раскройте весь потенциал компьютеров даже с помощью подержанного ПК.
Статья 1974 года в Communications of the ACM впервые представила Unix публике. В этой статье ее авторы описали беспрецедентно простую конструкцию Unix, сообщили о более чем 600 установках Unix. Все они были на машинах, недостаточно мощных даже по стандартам того времени, но (как писали Ритчи и Томпсон) "ограничение способствовало не только экономии, но и определенной элегантности дизайна".
Первоначальный отчет о Scheme [Sussman, 1975b] описывает очень скудный язык с минимумом примитивных конструкций, по одной на концепцию. (Зачем брать две, когда достаточно одной?)
Scheme — это диалект Lisp, который подчеркивает концептуальную элегантность и простоту.
Форт — это компьютерный язык с минимальным синтаксисом.
Go — язык программирования с открытым исходным кодом, позволяющий легко создавать простое, надежное и эффективное программное обеспечение.
...мы начали с идеи, что все трое из нас должны были обсудить каждую особенность языка, чтобы в язык не было постороннего мусора, внедрённого по какой-либо причине.
Общая идея заключается в том, что Uzbl по умолчанию очень прост.