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

Причуды абстракций

Абстрагирование что это понятным языком. a5fd52fe7dd306faa01234d00644e3d9. Абстрагирование что это понятным языком фото. Абстрагирование что это понятным языком-a5fd52fe7dd306faa01234d00644e3d9. картинка Абстрагирование что это понятным языком. картинка a5fd52fe7dd306faa01234d00644e3d9

Что такое абстракция?

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

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

Гради Буч определяет понятие абстракции значительно проще, но смысл тот же:
Абстракция выделяет существенные характеристики некоторого объекта, отличающие его от всех других объектов.

Зачем нужна абстракция?

Абстракции выполняют защитную функцию и помогают нам не сойти с ума от переизбытка информации. Представьте, как бы нам жилось, если при письме шариковой ручкой пришлось бы думать о том, что миллиарды молекул чернил взаимодействуют с молекулами бумаги, чтобы получилась буква. Другими словами, не тратя время на ненужные подробности, мы можем ухватить самую суть — взглянуть на проблему «сверху».
Абстрагирование что это понятным языком. c2f14bfde236d246798456823849b888. Абстрагирование что это понятным языком фото. Абстрагирование что это понятным языком-c2f14bfde236d246798456823849b888. картинка Абстрагирование что это понятным языком. картинка c2f14bfde236d246798456823849b888
Если бы не фотография с высоты птичьего полета, можно ли было бы себе представить насколько правильно спроектирована Барселона? Кстати, про пример с шариковой ручкой, читать бы тоже не получилось — начертания одной и той же буквы на письме отличаются даже у одного человека.

Абстрактное мышление — это механизм, который позволяет нам перерабатывать и усваивать кучу новых сведений. Если бы не было абстракции, то единственный вариант для нас — это остаться очень примитивными существами.
Абстрагирование что это понятным языком. b922d3294df6db9e2dccdfeb0bc164b5. Абстрагирование что это понятным языком фото. Абстрагирование что это понятным языком-b922d3294df6db9e2dccdfeb0bc164b5. картинка Абстрагирование что это понятным языком. картинка b922d3294df6db9e2dccdfeb0bc164b5
В Бразилии живет племя небольшое племя индейцев Пираха. Представители этой народности обладают крайне скудным абстрактным мышлением. Их алфавит состоит из трех гласных и восьми согласных. У них нет слов, обозначающих цифры, вместо цифр у них два понятия — несколько и много. У них нет цветов — только понятия светлый и темный, времени и истории — они живут только сегодняшним днем и помнят только то. что помнит старейший из ныне живущих; нет — религии, ремесел, искусства. У них еще много чего нет в нашем привычном понимании. И это все потому, что не развито абстрактное мышление. Правда, справедливости ради, стоит отметить, что при этом они себя ощущают абсолютно счастливыми людьми!

Итак, абстрагирование нам нужно как способ познания и описания окружающего мира, для обмена информацией друг с другом. Абстракции позволяют провести декомпозицию предметной области на набор понятий и связей между ними.
Абстрагирование что это понятным языком. b5adbb732661d34ce26d504ddab71bf8. Абстрагирование что это понятным языком фото. Абстрагирование что это понятным языком-b5adbb732661d34ce26d504ddab71bf8. картинка Абстрагирование что это понятным языком. картинка b5adbb732661d34ce26d504ddab71bf8
На картинке изображен Legoland в Лондоне. Несмотря на то, что все предметы собраны из детского конструктора, мы без труда узнаем в них дома, окна, двери, городские кварталы, людей.

Барьеры и побочные эффекты абстракций

Чтобы понять ключевые свойства абстракций проведем аналогию с построением проекций на плоскость.
Абстрагирование что это понятным языком. image loader. Абстрагирование что это понятным языком фото. Абстрагирование что это понятным языком-image loader. картинка Абстрагирование что это понятным языком. картинка image loader
Предположим, что у нас есть три фигуры: шар, цилиндр и параллелепипед, при этом ось симметрии цилиндра, проходящая через центры окружностей в основании, параллельна какой-нибудь оси симметрии параллелепипеда. Очевидно, что можно выбрать две плоскости для построения проекций таким образом, что шар и цилиндр спроецируются в окружности, а цилиндр и параллелепипед — в прямоугольники.

Проекция в нашем примере иллюстрирует абстракцию объекта — геометрической фигуры. Что мы видим — на одной плоскости не отличишь проекции шара и цилиндра, а на другой — цилиндра и параллелепипеда. Этот эффект называется барьером абстракции. Абстракция представляет не весь объект целиком, а только лишь его существенный набор характеристик.Нужно быть готовым к тому, что некоторые очень непохожие друг на друга объекты, могут стать неразличимыми. Если это неудобно, то нужно выбирать другой набор абстракций.

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

На самой первой картинке изображены две фигуры, собранные из щепок, так что при определенном освещении они отбрасывают «человеческие тени». Мне, например, кажется, что там один силуэт мужской, а другой — женский. Это тоже побочный эффект абстракций. Теперь мы можем классифицировать все фигуры по их тени.

Примеры абстракций

Сфера примененияАбстракцияКомментарий
Целые числаЧисло из кольца Zp, где p = 2^разрядность (8, 16, 32, 64 бита)Данная абстракция позволяет представить целые числа только из отрезка –p/2+1 до p/2. Побочный эффект – проблема переполнения.
Вещественные числаЧисла с плавающей точкойВещественных чисел несчетное число, а чисел с плавающей точкой — всего лишь конечное. Это значит, что несчетное количество вещественных чисел представлены одним числом с плавающей точкой. Побочный эффект – ошибка округления, из-за который два числа нельзя сравнивать с помощью операции сравнения, а лишь по модулю некоторого маленького epsilon |a-b| a == b, или a/b*1000 может сильно отличаться от a*1000/b. Появилась даже целая дисциплина в математике – численные методы, которая изучает как организовать вычисления с плавающей точкой так, чтобы результаты не сильно отличались от вычислений с вещественными числами.
ДеньгиЧисла с плавающей точкойПогрешность округления чисел с плавающей точкой делает, если не невозможным их использование для финансовых операций, то, по крайней мере, сильно усложняет жизнь. В любом случае, я бы сначала подумал в сторону написания отдельного класса для денежных единиц.
ИзображениеМашинная графикаМашинная графика развивается семимильными шагами, чтобы сделать изображение на экране компьютера все более реалистичным.
Программное обеспечениеПроцедураПроцедура является базовым элементом декомпозиции в процедурном программировании. Побочный эффект — процедура жестко заданная последовательность команд, которую невозможно изменить без переписывания самой процедуры.
Программное обеспечениеКлассО классах будем говорить ниже.
Предметная областьАбстракция сущности и связи между сущностямиПобочный эффект — отражает представление, заблуждения, предубеждения и т.д. о предметной области конкретного субъекта.
Бизнес-логикаПроцедураКак уже говорилось выше — побочный эффект процедуры — жесткая последовательность команд. Бизнес-логика же подвержена изменениям, как правило содержит много исключений, о которых пользователи обычно забывают рассказать. Попытка представить бизнес-операцию в виде процедуры часто делает терпит неудачу.
Программное обеспечениеПоток для распараллеливания операцийМногопоточное программирование получилось настолько сложным для восприятия, что немного людей в нем разбирается.
Квадрат — это прямоугольник, у которого все стороны равны.Класс квадрат нельзя наследовать от прямоугольника.Классы — это абстракции. У них есть свои собственные свойства, которые отличаются от математических объектов и которые делают невозможным наследование.

Классы

Гради Буч так определяет ООП:
Объектно-ориентированное программирование — это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.

В этом определении самый важный момент — это иерархия наследования. Потому что именно наследование отличает ООП от всех других методологий.

Два основных принципа человеческого мышления — это группировка и обобщение. Классы — это, по сути, абстракции механизмов группировки и обобщения человеческого мозга. Естественно, со своими побочными эффектами и барьером. При этом группировка достигается тем, что похожим объектам сопоставляется один класс, а обобщение в ООП достигается за счет иерархии классов. Иерархии классов реализуются через полиморфизм.

ООП, кстати, интересно еще хотя бы и тем, что это, пожалуй, последняя парадигма программирования на данный момент, которая поддерживается на аппаратном уровне.

Главный побочный эффект классов — они отражают опыт, стереотипы, предубеждения того программиста, который их написал. Отсюда следует, что разные люди получат разный набор классов для одной и той же задачи. Более того, один и тот же человек, решая одну и туже задачу, но в разные моменты времени, получит разный набор классов, просто потому что его жизненный опыт меняется.

Второй побочный эффект, который стоит отметить — чужой код всегда менее понятный, чем свой собственный.

Абстрагирование что это понятным языком. image loader. Абстрагирование что это понятным языком фото. Абстрагирование что это понятным языком-image loader. картинка Абстрагирование что это понятным языком. картинка image loader
Разберемся почему так происходит. Когда человек пишет код, для него естественнее двигаться снизу вверх — от более низкоуровневых компонент к более высокоуровневым. Сначала написали один класс, потом второй, который зависит от первого, затем третий, который зависти от первого и второго, четвертый — от третьего и т.д.

Когда же человек пытается понять чужой код, он как раз двигается наоборот — сверху вниз. То есть сначала понимает общую суть, затем разбивает на компоненты, потом пытается понять суть каждого компонента и т.д. Часто эти движения мысли снизу вверх и сверху вниз у разных людей не совпадают. Естественно, что изучающему чужой код было бы легче, если разбиение кода на компоненты совпадало с его собственными убеждениями, как надо делать. Если это не так, придется затрачивать определенные усилия, чтобы понять ход мыслей разработчика. Поэтому, когда кто-то говорит, что здесь «полный хардкод», но если я перепишу, то будет все проще и понятнее. Это всегда 100% правда… Но только для него, для остальных ценность переписывания уже не так очевидна.

Кстати, если ничего не предпринимать специально, то при разработке снизу вверх, код становится сильно связанным между собой, то есть не повторно используемым. Чтобы побороть этот эффект надо следовать принципу инверсии зависимостей (The Dependency Inversion Principle).

Проиллюстрируем как проявляется описанный побочный эффект на простом примере. Многие жители крупных городов закупаются в крупных супермаркетах. Предположим, что жена отправляет мужа за покупками и, чтобы он не забыл, как обычно, чего-нибудь, составляет список «для тех кто в танке».
Постараемся проследить ход ее мыслей:
— Так чего я сегодня буду готовить на ужин?
— Надо приготовить чего-нибудь вкусненькое, чтобы побаловать ребенка.
— Так, нужна будет мука, молоко.
— Кажется в миксере сели батарейки.
— Стоп! Ребенку нужны витамины. Морковь. Буду делать морковный сок. и мандарины. Скоро же Новый год!
— А хлеб дома есть? Нет, кажется, нет.Значит, надо купить!
— Еще надо купить масло.
— Забыла про ребенка — витамины. Купить яблоки.
— Чего-то ручка плохо пишет. Наверное скоро кончатся чернила. Надо купить!
— Так, ребенку надо купить сока.
— А еще игрушку — пусть порадуется.
— Картошка у нас есть на борщ? На борщ хватит, но на неделю нет. Значит тоже надо купить.
— Чуть не забыла учительница просила принести две тетради.
— К борщу нужна сметана.
— Вроде сахар кончился.
— Ребенок любит виноград.
— И еще надо купить бутилированной воды.

Когда приходит муж в магазин то, что он обнаруживает? Указанные в списке товары оказываются в разных частях магазина. Обычно список длинный, поэтому запомнить что-либо, что было уже куплено достаточно трудно. На это накладывается, что какие-то отделы временно закрыты — идет выгрузка товаров, какого-то товара нет в продаже, плюс толчея, зимняя одежда. Более опытные товарищи ходят с карандашом или ручкой с очень озабоченным видом и постоянно смотрят в свой список. Но, в итоге, все равно, что-нибудь да забудешь купить. По своему опыту могу сказать, что это «что-нибудь» окажется самым важным, из-за чего вообще и стоило ехать в магазин.

Еще одно важное наблюдение — невозможно по самим абстракциям определить насколько удачными они получились. Это можно сделать, только если мы попытаемся их использовать на практике. И тут уж выясняется, что одни абстракции лучше подходят для задачи, а другие — хуже. А если еще немного изменить исходные условия, то и прежний «хороший» набор абстракций уже может не работать. Например, второй список покупок из примера перестанет работать, если прийти с ним в другой магазин с иным порядком выкладки товаров. Он станет ничем не лучше, чем первый.
Отсюда вывод — невозможно придумать набор классов, который подойдет на все случаи жизни. В статье The Open-Closed Principle это называется стратегическая замкнутость.

Естественный вопрос, а как сразу создавать хорошие абстракции. Увы, но на этот счет нет точного ответа. Зато со временем выработался набор практик, который говорит, как надо поступать, и обещает, что в этом случае будет хороший результат. К таким практикам относится рефакторинг, стандарты кодирования, code review, объектная гимнастика и т.д. Цель данных практик — направить ход мыслей группы разработчиков в одном направлении, тогда шансов, что чужой код будет понятнее, станет больше. Отношение к каждой из практик у отдельно взятого человека зависит лишь от приобретенного им опыта использования практики. Часто слова «Это не работает» надо интерпретировать как «Я пробовал — у меня не получилось». Нет никаких объективных аргументов «ЗА», равно как и «ПРОТИВ».

Так зачем нужно тогда ООП?

Проведем параллели между естественным языком и ООП

естественный языкООП
Словокласс
ПравилаСинтаксис
ЖанрАрхитектура
литературные приемыпаттерны

ООП — это инструмент, который создавался с прицелом на большие по размеру программы. Но, это всего лишь один из инструментов, который потребуется, чтобы написать крупный проект.

Меня всегда удивляют, статьи в стиле Почему я люблю X или Почему я не люблю X. Все прекрасно понимают, что X — инструмент. Ведь нет же таких статей про лопату. Хотя, кто знает, ведь ООП существует несколько десятилетий, а лопата несколько тысяч, и быть может где-нибудь в в каменном веке шли жестокие холивары на тему, что лучше лопатка мамонта или мотыга из камня?

Источник

Что значит абстрагироваться и как это сделать с пользой

Абстрагирование что это понятным языком. vita. Абстрагирование что это понятным языком фото. Абстрагирование что это понятным языком-vita. картинка Абстрагирование что это понятным языком. картинка vita

Журналист, писатель, творческая личность с трезвым подходом к жизни. Главны.

Абстрагирование что это понятным языком. 1614234189. Абстрагирование что это понятным языком фото. Абстрагирование что это понятным языком-1614234189. картинка Абстрагирование что это понятным языком. картинка 1614234189

Практикующий психолог, гештальт-терапевт. Закончила Тольяттинский Государ.

С неба падают камни, земля разверзается между ног или сосед воскресным утром продолжает делать ремонт, а ты блаженно пьёшь чай и читаешь любимую книгу? Что ж, ты достигла умения абстрагироваться от внешнего мира и не позволяешь раздражителям мешать тебе думать, жить своей жизнью, выбиваться из колеи. Но если же даже взмах крыла бабочки в другой части мира способен вывести тебя из равновесия, значит, тебе только предстоит освоить мастерство отвлечения.

В чём суть абстрагирования

В русском языке глагол «абстрагироваться» — пришелец, но само понятие знакомо чуть ли не каждому школьнику. В соответствии с однокоренной «абстракцией» он подразумевает упрощение реальности, мысленное отвлечение от чего-либо с целью сосредоточения на чём-либо конкретном и важном в текущий момент времени.

Абстрагирование что это понятным языком. pexels matheus henrin 4936991. Абстрагирование что это понятным языком фото. Абстрагирование что это понятным языком-pexels matheus henrin 4936991. картинка Абстрагирование что это понятным языком. картинка pexels matheus henrin 4936991

Это ценное качество действительно помогает в жизни. К примеру, у тебя срочная работа, а над душой стоит коллега, которой очень нужно рассказать тебе о своих кошках? Способность абстрагироваться чудесным образом превратит её в фоновое «радио», и ты сможешь беспрепятственно продолжить своё занятия.

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

Чем полезно умение абстрагироваться

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

Абстрагирование же является более доступной вещью, обращаясь к которой, ты сможешь:

Абстрагирование что это понятным языком. . Абстрагирование что это понятным языком фото. Абстрагирование что это понятным языком-. картинка Абстрагирование что это понятным языком. картинка

Как быть спокойным в любой ситуации — 3 техники от психолога

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

Вспомни пример подобного отвлечения внимания на примере кинематографа. Героиня фильма «Вам письмо» блаженно направляется к своему уютному магазинчику «За углом». Вокруг кипит утренняя нью-йоркская жизнь: чуть не сталкиваются таксисты, ругаются водители, рядом завершается стройка магазина-конкурента… А она улыбается. Плывёт по улице, вспоминая полученное утром сообщение о букете отточенных карандашей. Глупость, и всё же приятнее рутинной жизни серого мегаполиса.

В «Трудном ребёнке» чуть не доведённый до безумия отец крушит дом, радуясь внезапной свободе от сбежавшей сварливой жены и приёмного сына-хулигана, но находит среди жестоких детских карикатур единственный нормальный рисунок со своим портретом. Весь мир для него преображается. Рассматривая рисунок, герой видит проблему с новой стороны и приходит к выводу, что его любят. Всё: он больше не может злиться и хочет вернуть сына, видя корень зла не в мальчике, а в другом своём окружении, справедливо получившему карикатурное оформление.

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

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

Может ли умение мешать

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

Дежурный папа из одноимённого фильма забывает про совещание, обнаружив в бумагах рисунок маленького сына. В итоге, он решает отказаться от солидного оклада и высокой должности в пользу собственного детского сада. Развязка соответствует теме сюжета, но в итоге-то герой лишается хорошей карьеры…

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

Как научиться игнорировать отвлекающие факторы

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

Есть несколько способов для обучения абстрагированию. Если в данный момент ты не торопишься на работу или по другим неотложным делам, то отведённое себе время посвяти следующим вещам:

Если же ты ограничена во времени и «заглушить» раздражители нужно как можно быстрее, попробуй сделать так:

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *