Как стать автором
Обновить

Примеры абстракций в технике и повседневности

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров15K

Поговорим про абстракциях. Что вообще это за слово такое абстракция? И накой оно нам?

Абстракция  (отвлечение) про­цесс от­вле­че­ния (абстрагирования) от тех или иных ха­рак­те­ри­стик объекта для их из­би­ра­тель­но­го анализа; при этом на­блю­дае­мый объ­ект за­ме­ща­ет­ся его идеализированным тео­ре­тическим об­ра­зом — аб­стракт­ным объектом. Абстракции являются уни­вер­саль­ным методом на­учного по­зна­ния, они необходимы для фор­ми­ро­ва­ния по­ня­тий, уз­на­ва­ния и клас­си­фи­ка­ции объ­ек­тов исследования на всех уров­нях фор­ми­ро­ва­ния зна­ний.

Синонимами можно считать такие слова как отвлеченный, умозрительный, теоретический. Абстракция это модель, теория.

Противоположное слово это конкретный, фактический.

Абстракция это когда берут какой-то сложный объект и убирают те детали, которые не имеют существенного значения для понимания какого бы то ни было свойства этого объекта.

Взять например карту метро. Карта метро - это хорошая полезная абстракция от реальной формы туннелей в метро. На карте нет тех изгибов тоннелей которые на самом деле есть. Вы же когда приезжаете в какой-то новый для себя город не рассматриваете на полу  разложенные аэрофотоснимки гектаров кварталов города чтобы понять где вам надо выйти в метро. Это было бы просто смешно. Вы просто подходите к схеме метрополитена смотрите и вам сразу всё становится понятно. Так и в остальном.

Абстракции в разработке программного обеспечения

В IT индустрии вообще всё держится на абстракциях. Тут их столько, что хоть штабелями укладывай. Наращивать уровни абстракций это основной способ создания программных систем. Они тут выстаиваются в иерархии. 

Виртуальная память это абстракция от физических адресов. Виртуальная машина это абстрагирования от реальной физической машины (будь то телефон, DeskTop, Server). Любой язык программирования это способ отвлечения от безумно сложных и скучных машинных кодов. В каждой программе есть абстрактные структуры данных такие как бинарные деревья, очереди, стеки, циклические массивы, графы, косые деревья, хеш-таблицы. Файл как и файловые системы преобразуют нули и единицы в удобные текстовые файлики. Алгоритмы компрессии данных это способ отвлечения от реального размера файла. Операционная система это способ отвлечения от конкретного оборудования. POSIX (Portable Operating System Interface) это пример полезного абстрагирования от реализации функций операционных систем. Благодаря POSIX у разных операционных систем появилась совместимость на уровне исходного кода. Программные сокеты это способ упрощения заполнения TCP и UDP пакетов. Иконки на рабочем столе - тоже самое. Гипервизоры нужны чтобы не обращать внимания на то как меняются операционные системы. Байт-код это отвлечение от целевой платформы для которой собрана программа. Язык Python абстрагируется от типов данных. Модель OSI-7 это условное представление того через какие слои проходят данные в интернете. Физический, канальный, сетевой, транспортный, представления, сеансовый, прикладной. DNS адреса удобнее запоминать чем сырые IP адреса. Да и сам IP адрес это тоже форма абстракции от меняющегося оборудования c разными MAC адресами. Название e-mail - это мощная абстракция, которая инвариантна к имени, физическому адресу (дома, улицы), ip адресу, и даже MAC адресу устройства. Любое прикладное ПО с GUI это чистейшей воды абстракция от консольных команд. Прикладное ПО (например программа для трассировки печатных плат) это умозрительная концепция, коротая решает конкретную задачу реализованная на основе интерфейсов, которые предоставляет операционная система.

В общем абстракции очень полезны в программировании. Для разработки софтвера надо обязательно обладать развитым абстрактным мышлением.

Более того любой язык и, в частности, нотная грамота - это абстракция от звука. Вместо того чтобы записывать осциллограмму на листе бумаги (*.wav файл) или записывать коэффициенты ряда Фурье для разложения звука, музыканты просто схематично указывают последовательность символов (ноты на струнах).

Абстракции в аппаратном обеспечении

То, что абстракции очень полезны в программировании это очевидно и понятно даже слепому. А вот то, что абстрагирование полезно при разработке аппаратного обеспечения это приходится доказывать с огнем и мечом. Тем не менее и в разработке железа есть примеры хороших абстракций.  

Вот например автоматическая коробка передач абстрагируется от реальной геометрии переключения положения шестерен очень полезная абстракция воплощенная в железе. Или драйвер шагового двигателя это способ абстрагироваться от того как на самом деле осуществляется управления вращением вала шагового мотора. Затем появилась цифровая схемотехника, чтобы не вникать в реализацию логических элементов. Далее сформировался язык Verilog абстрагируется от схемотехники цифровых цепей и описывает цифровую схему просто как текст. Схемы конечный автоматов это пример отвлечения от физического расположения микросхем триггеров на электронной плате. Принстонская/Гарвардская архитектура микропроцессора это умозрительная модель понимания структуры всего компьютера.

Вот в схеме топологии печатной платы нет абсолютно никакой абстракции. Топология PCB она максимально конкретная. Поэтому и анализировать топологию всегда трудно. Многое отвлекает.

https://habr.com/ru/articles/655879/

Поэтому люди придумали схемы электрические принципиальные. Схемотехника это абстракция от топологии. Однако и схемотехника современных электронных устройств тоже достигла высокого уровня сложности. Схемотехника в 40…100 страниц это уже вообще сегодня норма жизни. Поэтому люди придумали блок-схемы электронных плат. Блок-схема это абстракция от схемотехники, которая работает на 2м уровне. Потом делают схемы топологии сети. Это уже, как минимум, 3тий уровень абстракции. 

https://habr.com/ru/articles/667030/

Проследите цепочку получившихся уровней:  Физика > Полупроводниковые приборы > аналоговые схемы > цифровые схемы > логические элементы > микроархитектура(АЛУ) > процессор > SoC > PCB > OS(системное ПО) > Прикладное ПО. Минимум 11 уровней!

Абстракции это не выдумка программистов. Абстракции появились задолго до появления программирования и электроники так таковой вообще. Это более фундаментальная концепция! Скорее всего это пришло из искусства. Наскальная живопись, корявые рисунки животных первобытных людей. Всё это пошло откуда-то оттуда.

Вероятно абстракции появились как побочный эффект познания мироустройства в науке. Например, закон всемирного тяготения это абстракция. Реальные силы значительно труднее в понимании и объяснении. Это доказывают опыты наблюдения смещения перигелия Меркурия. https://ru.wikipedia.org/wiki/Смещение_перигелия_Меркурия

Потом в физике есть такие уж совсем абстрактные понятия как материальная точка, идеальный/математический маятник, идеальный газ, абсолютно черное тело, невесомая/нерастяжимая нить, несжимаемая жидкость, идеальные часы (которые не спешат и не отстают) абсолютно тонкая линза и может быть ещё что-то. Всего этого добра в природе в принципе не существует. Люди искусственно ввели эти эфемерные понятия, чтобы применять логические/математические формальные методы. Вот так...

В эпоху Великих Географический Открытий появилась ценность географических карт. Географическая карта это тоже абстракция от реальной формы земной поверхности и береговой линии. Там реки указывают плавной линией хотя на самом деле они извиваются как змеи и через каждые 100—200 метров поворот.

Абстракции мы всегда видим в повседневности. Деньги это вообще абстракция от вида трудовой деятельности. Будь то труд каменщика или труд пекаря.  Поэтому и говорят: "деньги не пахнут".

Мультики это способ отвлечения от реального внешнего вида животных. Если бы мультики снимали видеокамерой с реальными животными в качестве артистов, то их бы никто и не смотрел вообще. Те же самые бобры в реальной жизни просто чудовища.

У каждой уважающей себя организации, компании есть логотип. Это условное обозначение которое впитывает в себя огромное количество аспектов. Чем занимается компания, какое у нее прошлое, где находится, какая у компании цель - всё это отражается в хорошем логотипе.

А оut source компании это пресловутый способ абстрагирования от найма как такового и социальных противоречий связанных с этим для продуктовых компаний.
https://habr.com/ru/articles/720464/

У абстракций есть недостатки?

Да, конечно. Уровни абстракции отбирают у системы некоторые ресурсы. Java код исполняется медленнее чем нативный С-код. Артефакты Java компилятора занимают больше места на диске, чем артефакты от C компилятора. Системные вызовы от приложений обрабатываются на уровне операционной системы и требуют времени. Это плата за упрощение понимания и переносимость программ. На каждом уровне абстракции время течет медленнее. То что в прикладном ПО одна строчка кода, то в коде на физическом уровне целая эпоха.

В чем достоинства абстракций?

1--Они помогают понять сложные вещи. Абстракции делают возможным применение формальных методов, и алгоритмов, т.е. в конечном счете логики. (модель атома Бора, абстрактные структуры данных в программировании, закон всемирного тяготения, математический маятник, идеальный газ, материальная точка)

2--Они уменьшают время понимания сложных вещей (схема метро, электрические принципиальные схемы)

3--Они позволяют масштабировать сложность, декомпозировать трудные задачи. (автоматическая коробка передач, драйвер шагового двигателя, алгоритмы компрессии данных).

4--Они помогают переносить объекты на другую систему координат (Языки программирования Java, гипервизоры, Doсker контейнеры)

5--Они заменяют сложное на простое (языки программирования, файловые системы, DNS адреса, иконки на рабочем столе, программы с GUI).

6--Они помогают уйти от ответственности (out source компании, модель OSI-7)

Способность к абстрактному мышлению это мощное эволюционное преимущество. Все эти абстрактные концепции как раз пришли из государств, которые сейчас составляют центральную ось развития всей мировой цивилизации.  

Способность к абстрагированию помогла им построить самую эффективную лаконичную нотацию для обозначения своего языка общения, чертежей, математических выражений, а потом и языков программирования. Как следствие они получили способность проектировать разрабатывать и производить сложные и эффективные технические средства: двигатели, корабли, самолеты, вооружение и компьютеры.

Как научиться абстрактному мышлению раз это так полезно? Как научиться придумывать полезные абстракции?

У меня нет четкого ответа на этот вопрос. Наверно надо пробовать. Далее эксперименты покажут какие абстракции жизнеспособны, а какие нет. Это как в физике. Была модель атома Томсона и модель атома Бора. В результате экспериментов Резерфорда выяснилось, что модель атома Бора оказалась более пригодной к реальности. Многие языки программирования тоже канули в лету. Где сейчас Паскаль, Fortran или Бэйсик? Тут как с языками программирования. Некоторые абстракции будут существовать до поры до времени, пока их не заменят более эффективные простые абстракции. И это нормально.

Вывод

У природы же видимо нет абстракций. В природе всё максимально конкретно. Абстрагирование это чисто человеческое свойство. Это люди придумывают абстракции и уровни абстракций для себе подобных. Это и понятно. Смысл абстракции это уменьшение сложности, увеличения скорости понимания, объяснение сути чего-либо, будь-то карта материка или электронная плата. 

Создавайте свои абстракции, господа. В этом нет ничего предосудительного.

Известные мне примеры умозрительных понятий я перечислил тут https://docs.google.com/spreadsheets/d/1JxEuo7bxo2A7J5qksBxekWf3FJVuDCJbXaZKx9IvDnU/edit#gid=0

Если Вам известны ещё примеры красивых абстракций в технике или в повседневной жизни, то напишете про это, пожалуйста, в комментариях.

https://habr.com/ru/companies/tiktokcoach/articles/206994/

https://habr.com/ru/companies/skillfactory/articles/508716/

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Вы прибегаете к помощи абстракций в повседневной жизни?
95.35% да41
4.65% нет2
Проголосовали 43 пользователя. Воздержались 2 пользователя.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Вы сами придумывали какие-нибудь абстракции?
92.31% да36
7.69% нет3
Проголосовали 39 пользователей. Воздержались 3 пользователя.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Вы прибегаете к помощи абстракций на работе?
94.87% да37
5.13% нет2
Проголосовали 39 пользователей. Воздержались 2 пользователя.
Теги:
Хабы:
Всего голосов 14: ↑9 и ↓5+7
Комментарии12

Публикации

Истории

Работа

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань