* Текстовый (консольный) интерфейс. Возник, т.к. человеку было необходимо общаться с компьютером на понятном языке. Для подобного общения были неоходимы два условия: возможность идентифицировать ту или иную компьютерную сущность (например, диск или операцию копирования) и возможность абстрагирования (т.е. выражения множества действий или объектов при помощи одного идентификатора). Как побочный эффект: возможность переиспользования уже имеющихся идентификаторов. Долгое время проводились попытки использовать естественный язык для этих же целей, но они провалились не только из-за того, что анализ полного набора грамматических конструкций затруднен (хотя анализ упрощенного подмножества вполне реален), но также из-за того, что для оперирования компьютерными сущностями лучше подходит специальный язык. Ведь, любая область человеческой деятельности рано или поздно приходит либо к своему жаргону (арго), либо к специфическому абстрактному языку (как в математике), которые лучше абстрагируют объекты и действия этой области.
* Высокоуровневые языки программирования, программные интерфейсы, форматы данных. По сути, ситуация такая же как и с текстовым интерфейсом, но с большими возможностями (которые заключается в наборе дополнительных абстракций, помогающих компоновать гораздо более сложные решения). Форматы данных, по сути, являются абстрактным языком (что неявно в двоичном виде, но явно в текстовом) для упорядочивания и ограничения информации.
* Операционная система. Среда, помогающая программному обеспечению и пользователю использовать аппаратное обеспечение. По сути же, предоставляет слой абстракции, который скрывает низкоуровневые сущности аппаратного обеспечения, а также позволяет программному обеспечению выстраивать свой слой абстракции, предоставляя набор сущностей, понятных пользователю.
* Файловая система. Предоставляет атомарный элемент хранения информации (файл) и иерархию каталогов, для упорядочивания файлов. Содержимое файла, теоретически, должно абстрагироваться в его имя и атрибуты (хотя их набор ограничен). Списки файлов, опять же теоретически, должны абстрагироваться (отображаться) в имя каталога. На практике же, принципы абстрагирования часто нарушаются, так имена файлов превращаются в бессмысленный набор символов, а каталог выбирается произвольным образом. Более того, информация о каталоге (которая теоретически должна классифицировать файл) теряется при копировании файла. Содержимое файлов часто спрятано обслуживающим приложением, поэтому информация внутри файла не может переиспользоваться (если это не предусмотрено в соответствующем приложении).
* Приложения. Являются слоем абстракции между операционной системой и пользователем. Предоставляют детерминированный набор действий на предопределенные реакции пользователя. Кодируют первоначальный смысл (то, как систему видят пользователи) в виде абстракций (сначала архитекторами, а потом и разработчиками), чтобы в итоге декодировать абстракции в смысл, понятный пользователем (естественно, во многих случаях, уже хоть немного, но искаженный, т.к. смысл проходит через несколько преобразований).