5. Абстрагирование
Понятие «абстрагирование» произошло от понятия «абстракция» (лат. abstractio — отвлечение). Абстрагироваться — это значит мысленно отвлечься от несущественных, частных свойств и связей предмета, с тем чтобы выделить существенные его признаки. Понятие «абстрактное » противопоставляется понятию «конкретное».
Сущность этого метода — в мысленном отвлечении от несущественных свойств, связей, отношений предметов и в одновременном выделении, фиксировании одной или и нескольких интересующих исследователя сторон этих предметов.
Процесс абстрагирования — это совокупность операций, ведущих к получению результата (абстракции).
Примеры абстракции: шар, дом, море, дерево, дорога, воздух, газ, жидкость и т.п.
6. Индукций и дедукция
Это парные, взаимосвязанные методы исследования.
Дедукция
Индукция (лат, induclio — наведение) — умозаключение от частных, единичных фактов к некоторой гипотезе (общему утверждению). Различают полную индукцию, когда обобщение относится к конечнообозримой области фактов, и неполную индукцию, когда оно относится к бесконечно- или конечнонеобозримой области фактов.
7. Моделирование
Моделирование — исследование каких-либо явлений, процессов или систем объектов путем построения и изучения их моделей; использование моделей для определения или уточнения характеристик и рационализации способов построения вновь конструируемых объектов.
Под моделями понимаются такие материальные системы, которые замещают объект исследования (оригинал) и служат источником информации о нем.
Модели выступают такими аналогами оригиналов, сходство которых с этими оригиналами существенно, а различие не существенно для решения конкретной познавательной задачи. Быть аналогом данной материальной системы — это необходимое, но не достаточное условие того, чтобы быть ее моделью, аналог — это «потенциальная» модель.
Замещение оригинала моделью имеет смысл и в том случае, когда модель отлична от оригинала. А это значит, что модель всегда представляет собой одностороннее, абстрактное отображение оригинала, ибо абстрактность присуща всем моделям и ей обладают все модели без исключения. Исследователь при выборе или создании модели сознательно отвлекается от многих свойств, как оригинала, так и модели, представляющихся несущественными.
Завершая рассмотрение метода моделирования, можно сказать, что «модельное» исследование имеет следующую структуру.
постановка задачи;
создание или выбор модели;
исследование модели;
перенос знания с модели на оригинал.
8. Идеализация
Для исследования и целей научного познания широко используются так называемые идеальные объекты, которые не существуют в действительности и вообще практически неосуществимы: точка, линия, абсолютно твердое тело, абсолютно черное тело, безвоздушное пространство и т.д.
Мысленное конструирование объектов такого рода и называется идеализацией.
Процесс конструирования идеального объекта обязательно предполагает абстрагирующую деятельность сознания. Создавая такой идеальный объект, как абсолютно твердое тело, мы абстрагируемся от способности реальных тел деформироваться под воздействием внешних сил, говоря об абсолютно черном теле, мы абстрагируемся от того факта, что все реальные тела в той или иной мере обладают способностью отражать падающий на них свет. В любом случае идеализация включает в себя момент абстрагирования, что позволяет рассматривать идеализацию как вид абстрагирования действительности.
многоступенчатое абстрагирование.
мысленный переход к предельному случаю в развитии какого-либо свойства. Располагая, например, реальные тела в ряд соответственно увеличению их твердости, можно мысленно продолжить этот ряд и в конце его представить такое тело, которое не деформируется под действием любых сил. Это и будет «абсолютно твердое тело»;
простое абстрагирование, отбрасывание некоторых реальных свойств объектов. Это возможно в том случае, когда подобное отбрасывание реальных свойств вещи выступает как одновременное наделение этой вещи нереальными свойствами.
§ 4. Абстрагирование и обобщение . Логика. Учебник для средней школы. [Издание восьмое. Утверждён Министерством просвещения РСФСР.]
Много тысячелетий тому назад человек в процессе трудовой деятельности заметил, что из камня можно сделать прочное орудие, что шкуры животных хорошо защищают от холода, что дерево не тонет в воде и поэтому из него можно делать плоты и т. д.
С течением времени способность выделять отдельные свойства вещей, возникшая в процессе производственной деятельности, всё более и более совершенствовалась. Мысленно отвлекать существенное от случайного нам приходится и теперь буквально на каждом шагу.
Опыт показывает, что для подлинного познания вещи пли явления надо выявить существенные свойства и отделить их от случайных.
Так, например, если мы ставим перед собой задачу отобрать из ряда предметов такой, которым можно разрезать стекло, то мы обращаем внимание на одно качество нужного предмета — твёрдость, отвлекаясь, абстрагируясь от всех остальных свойств.
Абстрагирование — это такой логический приём, с помощью которого мы мысленно выделяем существенные свойства предметов, явлений и отвлекаем их от несущественных, второстепенных свойств предметов, явлений материального мира.
Результат абстрагирования называется абстракцией.
Абстракция может быть правильной, а может быть и неправильной.
Правильная абстракция отображает содержание, заключённое в вещах. Так, абстрактное понятие «геометрическая фигура» отображает конкретное свойство предметов материального мира, их формы.
Неправильной абстракция бывает в тех случаях, когда мыслятся свойства, которые к изучаемому предмету никакого отношения не имеют. Грубая ошибка совершается и тогда, когда отвлечённый от предмета признак начинают рассматривать как что-то возникшее и существующее самостоятельно, забывая о связи абстрактного понятия с предметом.
В процессе абстракции мы выделяем свойства предметов, явлений. Но познать предмет вне связи с окружающей средой нельзя. Каждый единичный предмет входит в состав какого-то класса предметов, органически связан с чем-то более общим. Наша мысль и отображает связи изучаемого предмета с тем общим, к которому принадлежит предмет.
В течение многих столетий человек наблюдал отдельных животных: лошадей, собак, волков, лисиц, медведей и др., и постепенно выделил только те признаки, которые присущи всем животным и которые отличали живые организмы от окружающей среды, а именно: необходимость потреблять пищу, продолжать потомство и т. п. При этом были откинуты второстепенные признаки, которые встречались лишь у отдельных видов животных, как, например, однокопытность лошади, наличие рогов у коровы, жизнь крота под землёй и т. п.
Обобщение — это мысленное объединение общих свойств однородных предметов.
В процессе обобщения человек как бы отходит от конкретных предметов, отклоняется от массы деталей, присущих единичным вещам. Но это необходимо для того, чтобы, познав общее, глубже проникнуть в сущность единичных предметов.
Абстрагируя свойства предметов, мы тем самым уже отображаем общие свойства предметов. Абстрагирование и обобщение представляют собой единый, неразрывный процесс.
Логический приём обобщения, так же как и приём абстрагирования, возник в процессе общественной производственной деятельности из практической потребности людей.
Употребление орудий связано с осознанием некоторых устойчивых, постоянных свойств предметов и столь же устойчивых отношений данных предметов к другим, например отношения орудия к тому, что этим орудием добывается. Выделив при помощи абстрагирования однородные полезные свойства предметов, человек мысленно объединял в сознании это общее для данной группы предметов.
Но обобщения могут быть как правильные, так и неправильные. Обобщение правильно только в том случае, если основано на познании общего, находящегося в самих вещах. Отступление от этого условия ведёт к логическим ошибкам.
Так, если глубокое изучение свойств предмета или явления подменяется поверхностным ознакомлением с ним, то это может привести к неправильному, поспешному обобщению.
Введение в информатику, часть 17: абстракция
Простая схема: введение в информатику, часть 17: абстракция
|
Мы все время говорили об абстракции. Всякий раз, когда вы найдете самостоятельно выполняя несколько подобных вычислений, таких как
> (предложение 'она (слово 'бег'с)) (ОНА БЕЖИТ) > (предложение 'она (слово 'прогулка')) (ОНА ИДЕТ) > (предложение «она» (слово «программа») (ОНА ПРОГРАММИРУЕТ)
и вы фиксируете сходство в процедуре
(определить (глагол от третьего лица) (предложение 'она (слово-глагол's)))
вы абстрагируете схему вычислений выражая его в форме, которая пропускает конкретный глагол в любом пример.
В предисловии мы сказали, что наш подход к информатике заключается в том, чтобы научить вас мыслить более крупными кусками, чтобы вы могли уместить в уме более крупные проблемы однажды; «абстракция» — это техническое название этого процесса фрагментации.
В этой части книги мы более подробно рассмотрим два конкретных вида
абстракция. Один из них — это абстракция данных, что означает изобретение
новые типы данных. Другой — реализация более высокого порядка. функции, важная категория того же самого процесса, абстракция которого от третьего лица
— тривиальный пример.
До сих пор мы использовали слова и предложения так, как если бы они были частью
естественный порядок вещей. Теперь мы обнаружим, что предложения-схемы существуют.
только в нашем сознании и обретают форму с помощью конструкторов и
селекторы ( предложение
, сначала
и так далее), которые мы написали.
реализация предложений основана на более фундаментальном типе данных, называемом списков. Затем мы увидим, как можно использовать списки для изобретения другого
тип данных в наших умах, деревьев. (Технический термин для изобретенного
тип данных — это абстрактный тип данных .)
Вы уже знаете, как функции высшего порядка могут выражать многие вычислительные процессы в очень компактной форме. Теперь сосредоточим внимание на высший порядок процедуры , реализующие эти функции, изучая механика, с помощью которой мы создаем эти абстракции процесса.
(обратно к оглавлению)
ЗАДНЯЯ резьба главы СЛЕДУЮЩАЯ
Брайан Харви, [email protected]
уровней абстракции в программировании: обзор — BMC Software
DevOps BlogВ этой статье описываются уровни абстракции, которые можно использовать во многих областях программирования. Давайте начнем.
Что такое уровень абстракции?
Уровень абстракции создает разделение между двумя вещами. Для программирования это часто разделение задач на отдельные сущности.
Например, объекту A может быть назначена задача извлечения изображения из базы данных, а затем обработка изображения при извлечении
Создание уровня абстракции разделит этот объект A на объекты A и B, где:
- Объект A извлекает ресурс.
- Сущность B — теперь абстракция — зависит от изображения, возвращаемого из первой операции, чтобы затем выполнить вторую операцию.
Уровень абстракции позволяет одной стороне или операции нести полную ответственность за одну задачу, в то время как зависимая сторона ожидает, пока эта сторона вернет данные для обработки.
(Источник)
Абстракция в коде
API — это уровни абстракции. Хотя API служат многим целям, они используются следующим образом: разработчик пытается создать приложение, использующее твиты, поэтому он использует новый APIv2 Twitter для получения данных твитов.
Разработчик не несет ответственности за создание службы, позволяющей пользователям общаться друг с другом с помощью сообщений длиной 140 символов. Сервис Twitter управляется компанией Twitter, и вся ответственность за сбор их данных ложится на их плечи.
Разработчику остается только получить данные и использовать их в своих целях. Поскольку разработчик не несет ответственности за получение данных и предоставление службы Twitter на своем уровне работоспособности, API Twitter абстрагируется от операций разработчика.
В нашем случае абстракцию также можно назвать косвенностью. Известная цитата Дэвида Уилера:
: «Все проблемы в информатике могут быть решены на другом уровне косвенности».
Создать абстракцию так же просто, как изменить одну функцию на две. Эта функция Python открывает текстовый документ и подсчитывает количество строк, количество слов и количество символов в нем.
def processDoc (имя файла): с открытым (имя файла, 'r') как f количество_линий = 0 количество_слов = 0 количество_символов = 0 для строки в f: строка = строка.strip("\n") слова = строка.split() число_линий += 1 number_of_words += len(слов) число_символов += длина (строка) вернуть number_of_lines, number_of_words, number_of_characters
Чтобы создать уровень абстракции из этой функции, «счетную» часть функции можно абстрагировать от «открывающей» части функции. Одна функция не отвечает за обе; за этот процесс отвечают две функции:
- Функция openDoc откроет документ и вернет документ в виде строки, которую может использовать компьютер.
- Функция processDoc принимает в качестве входных данных строку, выводимую функцией openDoc, запускает некоторые сценарии подсчета и возвращает их значения.
Для исходной функции этап обработки текстов является уровнем абстракции — он на один шаг удален от исходной задачи. Используя соответствующую номенклатуру, она была абстрагирована от исходной функции.
по определению openDoc (имя файла): с открытым (имя файла, 'r') как f текст = f.readlines возвращаемый текст деф процессДок (текст): количество_линий = 0 количество_слов = 0 количество_символов = 0 для строки в тексте: строка = строка.strip("\n") слова = строка.split() число_линий += 1 number_of_words += len(слов) число_символов += длина (строка) вернуть number_of_lines, number_of_words, number_of_characters
Уровни абстракции в разных областях
Вы будете использовать уровни абстракции по-разному в зависимости от области программирования.
Для клиентского программирования создание более модульного кода означает создание большего количества уровней абстракции. Использование модульного кода во внешних программах обеспечивает:
- Повторное использование кода
- Долгосрочную устойчивость
Контейнеры и, более того, использование контейнеров для определенных целей в коде использует уровни абстракции. Для внутренних разработчиков контейнеры — это способ сделать код более модульным.
Функции как услуга (FaaS), которые обычно представляют собой функции, упакованные в контейнер, — это функции, работающие на уровне абстракции, отличном от основного кода. Пример кода выше — это две функции, которые можно записать в два разных контейнера:
- Одна функция — это облачная функция, которая открывает файлы и возвращает из них текст.
- Другой может быть облачной функцией, которая принимает строку в качестве входных данных и подсчитывает ее строки, слова и символы.
В Kubeflow, программном обеспечении Google для машинного обучения с открытым исходным кодом, каждый шаг конвейера представляет собой контейнер. Вместо того, чтобы запускать задание ML из одного скрипта Python, внутри одной записной книжки Jupyter или в одном контейнере, каждый шаг в файле преобразуется в функцию ввода и вывода. Весь блокнот абстрагируется и запускается через контейнеры. Используя встроенный метод Kubeflow, они предоставляют инструменты для преобразования функции в контейнер.
По своей структуре инфраструктура Kubernetes, возможность маневрировать и запускать контейнеры в неизменной инфраструктуре, выступает за то, чтобы кодовые функции и процессы существовали на абстрактных уровнях.
Когда использовать уровни абстракции
Уровни абстракции не нужны начинающим программистам. Абстрактные слои вступают в игру скорее как художественная форма — их можно использовать при обдумывании дизайна кода и для определения того, какие процессы происходят, когда и где, а какие процессы зависят друг от друга.
Дополнительные ресурсы
Для соответствующего чтения изучите следующие ресурсы:
- Блог BMC DevOps
- Что такое Citizen Developer?
- Проектирование устойчивости: введение
- Облачные функции Google
- Блог машинного обучения BMC и больших данных
- Контейнерное машинное обучение: введение в машинное обучение в контейнерах
Эти публикации являются моими собственными и не обязательно отражают позицию, стратегию или мнение BMC.