Jump to content

Список абстракций (информатика)

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

Общие абстракции программирования

[ редактировать ]

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

Общие абстракции программирования и их использование.
Абстракция Определение Использование
Переменная Место хранения в сочетании с соответствующим символическим именем, которое содержит некоторое известное или неизвестное количество информации, называемое значением. Обычно используется во всех парадигмах программирования.
Функция Абстракция, представляющая набор инструкций, которые можно применять к входным данным для получения выходных данных. Центральное место в процедурном и функциональном программировании; присутствует во всех парадигмах программирования.
Алгоритм Пошаговая процедура или формула решения проблемы. Основа для разработки и анализа алгоритмов в различных областях.
Тип данных Классификация, идентифицирующая один из различных типов данных, указывающая возможные значения для этого типа, операции, которые можно выполнять с этим типом, и способ хранения данных этого типа. Присутствует в большинстве языков программирования и служит основой систем типов.
Структура управления Конструкции, определяющие направление выполнения программы (например, if , while , for , switch ). Присутствует почти во всех языках программирования для управления потоком выполнения.
Подпрограмма (или метод ) Набор инструкций, предназначенных для выполнения часто используемых операций в программе. Основа структурирования кода как в процедурном, так и в объектно-ориентированном программировании.
Сорт Схема создания объектов, предоставляющая начальные значения состояния (переменные-члены или атрибуты) и реализации поведения (функции-члены или методы). Основы объектно-ориентированного программирования на основе классов.
Интерфейс Группа связанных методов с пустыми телами, используемая для определения методов, которые можно применять к различным типам данных. Широко используется в объектно-ориентированном программировании для абстракции и множественного наследования.
Модуль Автономный компонент, который группирует связанные переменные, функции, классы или типы. Используется для инкапсуляции кода, обеспечивая возможность повторного использования и удобства сопровождения.
Рекурсия Метод, при котором решение проблемы зависит от решений более мелких экземпляров той же проблемы. Ключевой метод функционального программирования и разработки алгоритмов.
Обработка исключений Процесс реагирования на возникновение во время вычислений исключений – аномальных или исключительных условий, требующих специальной обработки. Присутствует в структурированных языках программирования для обработки ошибок и управления потоками управления.

Структуры данных

[ редактировать ]

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

Общие структуры данных и их использование
Структура данных Определение Использование
Множество Коллекция элементов одного и того же типа данных фиксированного размера, доступная по индексам. Хранение и поиск общего назначения, основа многих более сложных структур.
Список Абстрактный тип данных, представляющий последовательность значений, в которой одно и то же значение может встречаться более одного раза. Поддержание порядка данных, реализация стеков, очередей и т. д.
Куча Коллекция, поддерживающая шаблон доступа «последним пришел — первым обслужен». Вызовы функций/рекурсивные вызовы, механизмы отмены в приложениях.
Очередь Коллекция, в которой объекты добавляются с одного конца («сзади») и удаляются с другого («спереди»). Упорядочение процессов, буферизация при распределении ресурсов.
Дерево Структура данных, состоящая из узлов с отношениями родитель-потомок. Иерархическое представление данных, например файловые системы, макеты пользовательского интерфейса.
Двоичное дерево Дерево, в котором каждый узел имеет не более двух дочерних элементов. Двоичные деревья поиска (BST), процессы принятия решений, алгоритмы сортировки.
График Набор вершин вместе с набором ребер, соединяющих пары вершин. Сетевая маршрутизация, социальные сети, молекулярное моделирование.
Хэш-таблица Структура данных, которая сопоставляет ключи со значениями, используя хэш-функцию для вычисления индекса в массиве слотов. Эффективный поиск данных, уникальное хранение элементов, индексирование данных.
Куча Древовидная структура данных, удовлетворяющая свойству кучи; в max-heaps родительские узлы имеют значения, большие или равные дочерним. Реализация приоритетных очередей, алгоритмов планирования, сортировки.
Приоритетная очередь Абстрактный тип, аналогичный обычной очереди, где каждый элемент имеет приоритет. Планирование процессора и диска, управление событиями в симуляциях.

Абстракции функционального программирования

[ редактировать ]

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

Абстракции функционального программирования и их использование.
Абстракция Определение Использование
Закрытие Структура данных, которая фиксирует функцию вместе с ее лексическим окружением. Дать возможность быть первоклассными гражданами, неся за собой государство.
Монада Шаблон проектирования, используемый для инкапсуляции вычислений с последовательной обработкой, побочными эффектами или другими операционными контекстами. Моделирование сложного поведения, такого как состояние, исключения или ввод-вывод, в рамках чистоты функционального программирования.
Неизменяемые данные Данные, которые нельзя изменить после создания. Обеспечивает предсказуемость и облегчает параллелизм в функциональных программах.
Чистая функция Функция, возвращаемое значение которой определяется только ее входными значениями, без побочных эффектов. Основная концепция функционального программирования, позволяющая упростить рассуждения и оптимизацию.
Рекурсия Метод, в котором функции определяются сами по себе, используемый для выполнения повторяющихся или цепных вычислений. Часто используется вместо итеративных циклов для решения сложных задач.
Функция высшего порядка Функция, которая принимает одну или несколько функций в качестве аргументов, возвращает функцию в качестве результата или и то, и другое. Обычно используется для таких абстракций, как карта, сокращение и фильтр, которые являются строительными блоками для управления коллекциями.
Лямбда-выражение Анонимная функция, предоставляющая простой способ создания функций «на лету» без указания им имени. Полезно для создания встроенных операций, особенно с функциями более высокого порядка.
Оптимизация хвостового вызова Стратегия оптимизации, при которой последним действием функции является вызов самой функции, которая может быть оптимизирована компилятором. Избегает переполнения стека в рекурсивных функциях, что делает их такими же эффективными с точки зрения использования памяти, как и итерации.
каррирование Процесс преобразования функции, принимающей несколько аргументов, в последовательность функций, каждая из которых имеет один аргумент. Упрощает создание специализированных функций из более общих и расширяет состав функций.
Ленивая оценка Стратегия задержки вычисления выражения до тех пор, пока не потребуется его значение. Может повысить производительность, не вычисляя ненужные значения, делая возможными бесконечные структуры данных, такие как потоки.

Модели параллелизма

[ редактировать ]

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

Модели параллелизма и связанные с ними концепции
Модель Ключевые абстракции Описание
Темы Поток, взаимное исключение (мьютекс), блокировка, семафор Параллелизм в рамках одного процесса, при котором несколько потоков могут одновременно выполнять код и совместно использовать ресурсы.
Модель актера Актер, Передача сообщений, Почтовый ящик Математическая модель, которая рассматривает «актеров» как фундаментальные единицы параллелизма, при этом каждый актер обрабатывает сообщения асинхронно.
Параллельные вычисления Процесс, задача, синхронизация, параллелизм данных, параллелизм задач Выполнение вычислений параллельно на нескольких процессорных элементах или компьютерах для повышения скорости.
Программирование, управляемое событиями Цикл событий, обработчик событий, обратный вызов, неблокирующий ввод-вывод Подход, при котором ход программы определяется событиями или изменениями состояния.
Сопрограммы Сопрограмма, Выход, Возобновить Функции, которые можно приостанавливать и возобновлять, что обеспечивает совместную многозадачность и упрощает асинхронное поведение.
Асинхронное программирование Будущее, обещание, асинхронное/ожидание Модель выполнения программы, которая упрощает неблокирующие операции, часто с использованием фьючерсов или обещаний для результатов, которые еще предстоит вычислить.
Программная транзакционная память (STM) Атомная транзакция, откат, переменная STM Стратегия, позволяющая составлять последовательности операций чтения/записи, которые должны выглядеть атомарными, без использования блокировок.
Взаимодействие последовательных процессов (CSP) Процесс, Канал, Сообщение Формальный язык для описания взаимодействий в параллельных системах, ориентированный на передачу сообщений между процессами.
Алгоритмы без блокировки и без ожидания Неблокирующий алгоритм, атомарная операция Алгоритмы, которые выполняют параллельные операции без традиционных стратегий блокировки, избегая таких проблем, как взаимоблокировка.
Реактивное программирование Наблюдаемый, Наблюдатель, Поток, Сигнал Модель программирования, ориентированная на потоки данных и распространение изменений, часто используемая для разработки быстродействующих систем с асинхронными потоками данных.

Шаблоны проектирования

[ редактировать ]

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

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

Шаблоны проектирования и их описания
Шаблон Описание
Шаблон синглтона Гарантирует, что класс имеет только один экземпляр, и предоставляет глобальную точку доступа к нему.
Шаблон фабричного метода Определяет интерфейс для создания объекта, но передает создание экземпляра подклассам.
Абстрактная фабрика Предоставляет интерфейс для создания семейств связанных или зависимых объектов без указания их конкретных классов.
Шаблон строителя Позволяет поэтапно строить сложные объекты, отделяя процесс строительства от его представления.
Шаблон прототипа Создает новые объекты путем копирования существующего объекта, известного как прототип.
Шаблон адаптера Позволяет двум несовместимым интерфейсам работать вместе, преобразуя интерфейс одного класса в интерфейс, ожидаемый клиентами.
Узор моста Отделяет абстракцию объекта от его реализации, чтобы они могли изменяться независимо.
Составной узор Собирает объекты в древовидные структуры для представления иерархий целых частей, позволяя клиентам единообразно обрабатывать отдельные объекты и композиции.
Шаблон декоратора Динамически прикрепляет дополнительные обязанности к объекту, предоставляя гибкую альтернативу созданию подклассов для расширения функциональности.
Фасадный рисунок Предоставляет упрощенный интерфейс для сложной подсистемы, упрощая ее использование.
Модель наилегчайшего веса Минимизирует использование памяти, разделяя как можно больше данных с другими подобными объектами.
Шаблон прокси Предоставляет суррогат или заполнитель для другого объекта для управления доступом к нему.
Схема цепочки ответственности Передаёт запрос по цепочке обработчиков, что позволяет использовать отдельные системы и динамическую обработку.
Шаблон команды Инкапсулирует запрос как объект, позволяя параметризировать клиентов с помощью очередей, запросов или операций.
Шаблон переводчика Реализует специализированный язык, используя классы для представления грамматических правил.
Шаблон итератора Предоставляет способ последовательного доступа к элементам агрегатного объекта, не раскрывая его базовое представление.
Шаблон посредника Определяет объект, который инкапсулирует взаимодействие между набором объектов, обеспечивая слабую связь, не позволяя им явно ссылаться друг на друга.
Сувенирный узор Позволяет захватывать и экспортировать внутреннее состояние объекта, чтобы его можно было восстановить позже, не нарушая инкапсуляцию.
Шаблон наблюдателя Определяет зависимость «один ко многим» между объектами, поэтому при изменении состояния одного объекта все его зависимые объекты автоматически уведомляются и обновляются.
Образец состояния Позволяет объекту изменять свое поведение при изменении его внутреннего состояния. Будет казаться, что объект меняет свой класс.
Паттерн стратегии Определяет семейство алгоритмов, инкапсулирует каждый из них и делает их взаимозаменяемыми. Стратегия позволяет алгоритму изменяться независимо от клиентов, которые его используют.
Шаблон метода шаблона Определяет скелет алгоритма в операции, откладывая некоторые шаги на подклассы.
Шаблон посетителя Представляет операцию, выполняемую над элементами структуры объекта, позволяющую определить новую операцию без изменения классов элементов.

Парадигмы программирования

[ редактировать ]

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

Парадигмы программирования и их ключевые характеристики
Парадигма Ключевые абстракции Описание
Процедурное программирование Процедура, функция, подпрограмма На основе концепции вызовов процедур. Он структурирует код с помощью последовательностей операторов и многократно используемых подпрограмм или функций.
Объектно-ориентированное программирование Класс, объект, наследование, полиморфизм, инкапсуляция Моделирует мир как взаимодействующие объекты со связанными данными и поведением, используя классы в качестве шаблонов. Поощряет инкапсуляцию и повторное использование.
Функциональное программирование Функция, чистая функция, лямбда, функция высшего порядка, рекурсия Рассматривает вычисления как оценку математических функций, избегая изменяющихся состояний и изменяемых данных. Функции являются гражданами первого сорта.
Логическое программирование Предикат, Факт, Правило, Цель Использует формальную логику для выражения вычислений. Алгоритмы записываются как набор логических операторов, а вычисления выполняются посредством логического вывода.
Программирование, управляемое событиями Событие, Обработчик событий, Обратный вызов Фокусируется на том, что ход программы определяется событиями. Часто используется для пользовательских интерфейсов, систем реального времени и обработки асинхронного ввода-вывода.
Императивное программирование Переменная, Цикл, Условная Явно детализирует шаги, которые программа должна предпринять для достижения желаемого состояния, с помощью операторов, которые изменяют состояние программы.
Декларативное программирование Выражение, Декларация Описывает желаемый результат или вычисление без явного перечисления команд или шагов, которые необходимо выполнить.
Аспектно-ориентированное программирование Аспект, Точка Присоединения, Совет, Pointcut Разбивает логику программы на отдельные части (задачи), не связанные с основной объектно-ориентированной моделью, с целью повышения модульности.
Параллельное программирование Поток, параллельный процесс, блокировка, синхронизация Управляет несколькими вычислениями, которые могут выполняться параллельно — как на одном процессоре, так и распределены по сети.
Программирование, управляемое данными Поток данных, Схема данных, Преобразование данных Вращается вокруг структур данных и проектирования систем для обработки больших объемов данных с функциями, которые сильно зависят от входных данных.

Абстракции программной инженерии

[ редактировать ]

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

Абстракции и концепции разработки программного обеспечения
Концепция Описание
Модуль Инкапсулирует набор связанных функций, процедур или классов и предоставляет интерфейс, скрывая сложность.
Шаблон проектирования программного обеспечения Общие повторяемые решения часто возникающих проблем при разработке программного обеспечения, описанные в шаблонах.
Программная среда Надежная платформа многократно используемых компонентов или систем, обеспечивающая определенную функциональность и предназначенная для облегчения разработки программного обеспечения.
Промежуточное ПО Программное обеспечение, которое находится между приложениями или системным программным обеспечением и облегчает связь или управление данными.
Интерфейс Четко определенные средства связи между различными компонентами программного обеспечения, часто в форме функций или протоколов.
Услуга Независимо развертываемые функциональные блоки, инкапсулирующие набор операций и предоставляющие функциональность через интерфейсы.
Компонент Многоразовые и взаимозаменяемые программные модули, которые взаимодействуют, образуя функциональную систему, обычно раскрывая интерфейсы и скрывая реализацию.
API Спецификации подпрограмм, структур данных, классов объектов и протоколов, используемых для связи между потребителем и разработчиком API.
Протокол Согласованный формат обмена данными между системами, обеспечивающий бесперебойную связь программных компонентов.

Примечания

[ редактировать ]

Ссылка на учебник:

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 64a20509d2ae569888967d9bea3f7a54__1717622640
URL1:https://arc.ask3.ru/arc/aa/64/54/64a20509d2ae569888967d9bea3f7a54.html
Заголовок, (Title) документа по адресу, URL1:
List of abstractions (computer science) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)