Другие языки программирования и технологии

Что такое Уровень абстракции?

Здрасте, граждане программисты! Недавно столкнулся с понятим "уровень абстракции".Почитал в википедии. Понял так: абстракция это метод программирования, когда программист скрывает от пользователя те процессы, которые происходят в проце при запуске программы.
Если я прав, то зачем было изобретать такой термин? Ведь простому пользователю по идее и не нужно знать все, что творится внутри.
Абстракция - это отличный термин. Собственно, абстрагирование - это процесс выделения из множества наблюдаемых свойств подмножества тех, что важны для решения задачи. Уровень абстракции - условная величина, соответствующая мощности этого подмножества. Чем меньше мощность множества, чем выше абстракция. Самый высокий уровень абстракции у классов типа Object - у них совсем нет свойств.

Дело же не в том, чтобы что-то от кого-то скрыть. Дело в том, чтобы не брать в расчет, например, цвет автомобиля, когда в задаче требуется только рассчитать время, за которое он проедет из пункта А в пункт Б. И наоборот, учитывать его, если речь идет о продаже. Таким образом, один и тот же автомобиль для одной задачи может быть описан как "тойота белого цвета", а в другой просто как "автомобиль".

Или, например, одного и того же молодого человека одна инстанция может рассматривать как лейтенанта запаса, а другая как программиста PHP. Разные уровни абстракции.
Игорь Бавдей
Игорь Бавдей
2 663
Лучший ответ
Абстракция в программировании это способ обобщенно решать широкий класс задач или обрабатывать целую категорию данных схожего типа. Например, абстракция аппаратного уровня позволяет обращаться к железу через вспомогательный обобщенный интерфейс не отвлекаясь на детали, отличающиеся у производителей. Т. е. с одной стороны на заводе-производители поставляют драйвера, заточенные под конкретную железяку, но соответствующие API операционной системы. Программисту же отдается интерфейс, условно набор команд, через который он может писать программы для ВСЕХ устройств, соответствующих стандарту. Другой пример, абстракции позволяют формулировать алгоритмы, распространяемые на целые множества типов данных (например, сортировки чисел независимо от того, целочисленные ли они или нет) . Абстракции изучаются в таких разделах математической науки как теория категорий и групп, дискретная математика и т. п. Еще одна прелесть абстракций это возможность найти хороший алгоритм решения задачи, если удается установить соответствие между какими-то моделями или теориями. Например, маршрутизация в интернете, решение задач планирования основаны на соответствии между матрицами и графами.
В win8, например, вместо синего экрана смерти абстрактный грустный смайлик, не сообщающий ничего полезного. До нее был экран с кодами ошибки, который помогал по телефону звонком специалисту, или просто вбив в гугл самостоятельно решить проблему на уровне пользователя - а с win8 теперь только выезд специалиста на точку. Уровень абстракции налицо.
А пользователю самому виднее, нужно ему знать что внутри или нет, и создание "черного ящика" еще к добру не приводило.
Уровень абстракции предоставляет способ сокрытия деталей реализации определенного множества функциональных возможностей.
Rudik Ligay
Rudik Ligay
345