Здравствуйте, Aris, Вы писали:
A>Когда-то встречал такое понятие как "программирование с помощью абстрактных типов данных". При этом автор различал, что есть ООП, а есть еще вот такой подход, но это скорее не ООП а это лучше назвать программирование с помощью абстрактных типов данных.
ООП это запись решения задачи в виде кода определнным образом. Задачу ты решаешь с помощью АТД, эвристически, из книги заимствуешь — дело десятое.
Пример — стек. АТД тебе говорит, какие операции и какие свойства будут у операций этого стека, инварианты, предусловия, постусловия, результаты. Дальше ты этот стек пилишь в какой угодно парадигме, дело десятое.
В ООП стек будет сделан классом, у которого будут методы соответсвющие операциям в решении. У методов будут ровно те же свойства. Стек может отнаследовать какой другой контейнер, непринципиально, может реализовать какой нибудь интерфейс, тоже не сильно важно. Главное, что внутренности будут упрятаны особым образом — вот только это и есть ООП.
В процедурном и функциональном программировании стек будет сделан модулем. В модуле будут процедуры или функции которые будут соответствовать операциям в решении задачи.
Здравствуйте, Aris, Вы писали:
I>>Нет никакого атд-программирования атд это не парадигма.
A>Как минимум в одном источнике я встречал упоминание об этом подходе как о парадигме.
Да, время нынче такое, раньше изобретали велосипеды, сейчас — парадигмы. Тут целый форум этому посвящен. Не успели изобрести одну парадигму, уже начали вторую
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>АбстрактныйТД это не абстрактный класс из ООП, и не в какой ООЯ он не встроен. EP>АТД это фактически абстрактное описание математической структуры, такое же как например группа или моноид.
Разумеется. Но ООП как раз и даёт эту поддержку АТД
Здравствуйте, LaptevVV, Вы писали:
LVV>ООП имеет наследование, АТД — нет.
Если так, то это очень похоже на то, что делается в 1С. Там есть набор базовых типов ("Справочник", "Документ", "Регистр бухгалтерии" и т.п.), и от них можно порождать собственно те виды данных, с которыми потом все и работают. Например, Справочник.БанковскиеСчета, Документ.ПлатежноеПоручениеИсходящее, РегистрБухгалтерии.Управленческий. А вот накрутить ещё один уровень иерархии — тут жёсткий облом. Сделать что-то вроде Справочник.БанковскиеСчета.Расчетные и Справочник.БанковскиеСчета.Депозитные не получится. Нет даже такого пункта в меню.
Результат — потрясающий. С одной стороны, немножко гложет тоска по отсутствующей возможности вынести какую-нибудь логику в базовый класс, и от потребности в массовом копипасте приходится спасаться динамической типизацией. Но с другой стороны проблема построения иерархий ("что чему является базовым классом? окружность эллипсу или эллипс окружности?") отсутствует напрочь. У народа есть чёткое представление о критериях выбора базовых типов, и количество архитектурных ошибок в духе "не от того унаследовались" стремится к нулю. Вопреки банальной логике и очевидному здравому смыслу системы в результате получаются проще (и в разработке, и в использовании, и в развитии, и в сопровождении), функциональнее, надёжнее и, что особенно удивительно, шустрее.
Когда-то встречал такое понятие как "программирование с помощью абстрактных типов данных". При этом автор различал, что есть ООП, а есть еще вот такой подход, но это скорее не ООП а это лучше назвать программирование с помощью абстрактных типов данных.
Вспомнил эту штуку и хотел понять в чем там было отличие, но не могу нагуглить сходу. При чем это по-моему было что-то популярное. То ли Гради Буч "Объектно-ориентированный анализ и проектирование", то ли Мак-Конелл "Совершенный код", то ли Эккель "Философия С++". Подскажите если кто помнит или знает где почитать.
Здравствуйте, Aris, Вы писали: A>Когда-то встречал такое понятие как "программирование с помощью абстрактных типов данных". При этом автор различал, что есть ООП, а есть еще вот такой подход, но это скорее не ООП а это лучше назвать программирование с помощью абстрактных типов данных. A>Вспомнил эту штуку и хотел понять в чем там было отличие, но не могу нагуглить сходу. При чем это по-моему было что-то популярное. То ли Гради Буч "Объектно-ориентированный анализ и проектирование", то ли Мак-Конелл "Совершенный код", то ли Эккель "Философия С++". Подскажите если кто помнит или знает где почитать.
Г л а в а I. Предмет и задачи науки логики
§ 1. Логика мышления и наука логика
Словом «логика» называют правильность построения мыслей.
Правильное построение мыслей изучается наукой логикой.
Следует различать:
1) логику мышления (правильность построения мыслей)
2) науку логику
Логика есть наука о законах и формах правильного построения мыслей.
§ 2. Логические законы и формы
Логические законы:
1) определённость
2) непротиворечивость
3) последовательность
4) обоснованность
являются обязательными качествами правильного мышления.
Логическая форма — это структура, строение наших мыслей.
Две различные мысли с общим строением, единой структурой:
Медь — проводник электричества.
Пшеница — растение семейства злаковых.
Наука логика, исследуя логические формы, отвлекается от конкретного содержания
той или иной мысли.
Логические формы и законы обладают устойчивостью, постоянством.
§ 3. О материалистическом понимании мышления
Отношении мышления к бытию (философские направления):
1) материалистическое — бытие определяет сознание
2) идеалистическое — сознание определяет бытие
Материя первична, а мышление, сознание вторично.
Мышление — это свойство высокоорганизованной материи, а именно — свойство мозга.
Мышление не существует и не может существовать само по себе. Оно является
отображением материального мира в человеческой голове.
§ 4. Мышление и язык
Только язык делает возможным обмен мыслями в человеческом обществе.
Язык есть средство, орудие, при помощи которого люди общаются друг с другом,
обмениваются мыслями и добиваются взаимного понимания.
Будучи непосредственно связан с мышлением, язык регистрирует и закрепляет в
словах и в соединении слов в предложениях результаты работы мышления, успехи
познавательной работы человека и, таким образом, делает возможным обмен мыслями
в человеческом обществе.
§ 5. Значение логики
Можно логично рассуждать и не зная науки логики, так же, например, как можно
практически владеть языком, не изучив грамматики. Но как изучение грамматики
повышает культуру нашей устной и письменной речи, так и изучение науки логики
повышает культуру нашего мышления.
Чтобы научиться стройно и последовательно излагать свои мысли, правильно
пользоваться логическими формами, надо знать науку логику.
Содержание мыслей, конкретные знания всегда являются главным, основным в
правильном мышлении. Поэтому не следует думать, что с помощью одной только
логики можно научиться правильно мыслить. Логика не может заменить фактических
знаний, которые приобретаются путём изучения других наук, путём активного
участия в производственной и общественной работе.
Изучение логики оказывает большую помощь в процессе овладения новыми знаниями.
Логика помогает скорее и глубже понять содержание учебного материала,
подготовиться к урокам, решить задачи, стройно и последовательно изложить свои
мысли — в устной или письменной форме — и обосновать свои рассуждения. Логика
помогает найти и выделить главное, основное в изучаемом материале, лучше усвоить
его содержание.
Вопросы для повторения
1. Что такое правильное мышление?
2. Какие два значения имеет слово «логика»?
3. Что является предметом логики?
4. В чём ошибочность идеалистического взгляда на мышление?
5. Изложите материалистическое решение вопроса о мышлении.
С. В чём выражается связь мышления с языком?.
7. Для чего необходимо изучать логику?
Г л а в а II. Логические приёмы
§ 1. Мышление — опосредствованное и обобщённое познание действительности
Процесс познания начинается с ощущений, возникающих в результате
непосредственного воздействия предметов и явлений материального мира на органы
чувств.
Ощущение — это отображение нашим сознанием того или иного свойства материального
предмета, например твёрдости, цвета и так далее.
Отображение в нашем сознании отдельных предметов и явлений как целого есть
восприятие.
Ощущения и восприятия являются наглядными образами единичных предметов. Но чтобы
познать законы, по которым совершается развитие и изменение вещей и явлений,
человек сопоставляет, сравнивает, перерабатывает в своём мозгу ощущения и
восприятия этих вещей и явлений — отвлекает, выделяет важное и существенное,
отображает связи и отношения вещей и явлений. Эта деятельность нашего мозга
является новой ступенью в развитии познания и называется мышлением.
Мышление есть опосредствованное и обобщённое познание действительности.
Мысль отображает общие свойства вещей, закономерные связи и отношения между
вещами.
Мышление не представляет собой какой-то простой суммы ощущений и восприятий.
Мышление есть качественно новая форма познания, более совершенная по сравнению
с чувственным познанием.
Для того чтобы познать общие свойства, отношения, закономерности предметов и
явлений объективной действительности, человек применяет различные логические
приёмы.
Такими основными приёмами мышления являются:
1) сравнение
2) анализ и синтез
3) абстрагирование и обобщение
§ 2. Сравнение
Сравнение — это такой логический приём, с помощью которого устанавливается
сходство и различие предметов, явлений объективного мира.
Правила сравнения:
1) нужно сравнивать такие предметы, которые в действительности имеют какие-то
связи друг с другом. Бесполезной тратой времени будет, например, сравнение
«лошади» и «поэзии», «ума» и «яблока» и так далее.
2) правильность любого сравнения определяется тем, что мы возьмём за основу
сравнения. Для того чтобы сравнение действительно выявило лучшую бригаду, надо
количественный показатель дополнить качественным показателем.
Выбор показателя сравнения имеет очень важное значение в любом сравнении.
3) сравнение двух или нескольких предметов надо производить по одному и тому же
признаку, взятому в одном и том же отношении. Сравнивая в одном отношении разные
случаи образования пара, человек пришёл к практически важному правильному
выводу: причина образования пара — нагревание воды.
4) всякое сравнение должно проводиться не по первым попавшимся признакам, а по
таким признакам, которые имеют важное, существенное значение для сравниваемых
предметов.
§ 3. Анализ и синтез
Любой предмет состоит из отдельных частей, каждая из которых отличается своими
особенностями.
Анализ — это такой логический приём, с помощью которого мы мысленно расчленяем
предметы, явления, выделяя отдельные их части, свойства.
Никакой более или менее сложный предмет невозможно изучить, не подвергнув его
анализу.
Синтез — это такой логический приём, с помощью которого мы мысленно соединяем в
одно целое расчленённые в анализе отдельные части предмета, явления.
Анализ и синтез — это два неразрывно связанных друг с другом логических приёма.
Синтез невозможен, если предмет не был проанализирован, а всякий анализ должен
производиться на основе знания предмета как целого.
Мышление состоит столько же в разложении предметов сознания на их элементы,
сколько в объединении элементов в единство.
§ 4. Абстрагирование и обобщение
Абстрагирование — это такой логический приём, с помощью которого мы мысленно
выделяем существенные свойства предметов, явлений и отвлекаем их от
несущественных, второстепенных свойств предметов, явлений материального мира.
Результат абстрагирования называется абстракцией.
Абстракция может быть:
1) правильной, отображает содержание, заключённое в вещах
2) неправильной, мыслятся свойства, которые к изучаемому предмету никакого
отношения не имеют
Грубая ошибка совершается, когда отвлечённый от предмета признак начинают
рассматривать как что-то возникшее и существующее самостоятельно, забывая о
связи абстрактного понятия с предметом.
Познать предмет вне связи с окружающей средой нельзя.
Обобщение — это мысленное объединение общих свойств однородных предметов.
Обобщение может быть:
1) правильным, основано на познании общего, находящегося в самих вещах
2) неправильным, глубокое изучение свойств предмета или явления подменяется
поверхностным ознакомлением с ним
Вопросы для повторения
1. Чем отличается мышление от ощущений и восприятий?
2. Что такое сравнение?
3. Что такое анализ и синтез?
4. Что такое абстрагирование и обобщение?
Г л а в а III. Понятие
§ 1. Сущность понятия
Те вещи, явления окружающей нас действительности, о которых мы мыслим, принято
в логике называть предметами мысли.
Вещи, явления обладают различными свойствами.
Свойства вещей, явлений называются в логике признаками.
Своими признаками вещи, явления или отличаются друг от друга, или сходны друг с
другом.
Познавая окружающую действительность, человек сравнивает предметы друг с другом,
выявляет их сходство и различие; путём анализа и синтеза вскрывает сущность
предметов, мысленно выделяет их признаки; абстрагирует и обобщает эти признаки.
В результате человек образует понятие о предметах и явлениях действительности.
Понятие — это мысль, которая отображает общие и существенные признаки предметов.
Существенным признаком предмета называется тот признак, который выражает
коренное, наиболее важное свойство предмета; если существенный признак
отсутствует, то предмет перестаёт быть данным предметом.
Понятие может быть:
1) истиным, верно отражает действительность
2) ложным, искажённое отображение действительности
§ 2. Понятие и представление
Понятия существенно отличаются от представлений.
Представления — это наглядные образы предметов, явлений.
Поэтому нельзя, например, иметь представления о скорости движения света, так как
нельзя получить наглядного образа такого движения.
Представления всегда имеют индивидуальный характер. В них главное не отделяется
от второстепенного, они могут складываться и из несущественных признаков.
§ 3. Понятие и слово
Понятие, как и всякая мысль, возникает и существует на базе языкового материала,
на базе языковых терминов и фраз.
Реальность мысли, — проявляется в языке. Только идеалисты могут говорить о
мышлении, не связанном с «природной материей» языка, о мышлении без языка».
Языковой оболочкой понятия является слово.
Так, например, понятие о школе вообще выражается словом «школа». Когда мы мыслим
не о школе вообще, а о той школе, в которой мы учимся, то такая мысль выражается
группой слов: «наша школа» или «средняя школа, в которой мы учимся».
Часто одно и то же понятие можно выразить разными словами.
Например: «тот, кто победил» и «победивший».
Нередки случаи, когда слова, сходные по звучанию, употребляются для выражения
разных понятий. Например:
коса — сельскохозяйственное орудие для косьбы травы,
коса — пряди волос, сплетённые вместе,
коса — длинная узкая отмель, идущая от берега, коса—узкая полоса леса
Другие примеры таких слов (омонимов): мир, ключи др.
Неправильное употребление омонимов неизбежно приводит к смешению понятий,
то есть к ошибкам в рассуждении.
§ 4. Содержание и объём понятий
Каждое понятие имеет:
1) содержание
2) объём
Содержание понятия — это знание о совокупности существенных признаков класса
предметов.
Например, в понятие «стратостат» входят следующие существенные признаки:
воздушный шар с гондолой, оборудованный для полётов в стратосферу.
В ходе человеческой практики, по мере того как люди глубже познают материальный
мир, содержание понятий обогащается новыми признаками, а устаревшие признаки
понятия отбрасываются.
Например, содержание понятия об электричестве менялось, обогащалось новыми при
знаками, по мере того как познавались новые, ранее неизвестные свойства
электричества.
века.
Но понятия изменяются не только потому, что люди глубже проникают в сущность
явлений, но также и потому, что сами явления с течением времени изменяются.
Объём понятия — это знание о круге предметов, существенные признаки которых
отображены в понятии.
Объём понятия «стратостат» составляют все мыслимые виды стратостатов.
§ 5. Соотношение между содержанием и объёмом понятия
Итак, понятия, более широкие но объёму, являются более узкими по содержанию —
такова зависимость между содержанием и объёмом понятий.
Эта зависимость имеет значение закона, который называется законом обратного
отношения содержания и объёма понятий.
Формулировка закона следующая: чем шире содержание понятия, тем уже его объём.
И соответственно наоборот: чем уже содержание понятия, тем шире его объём.
Закон «обратного отношения» распространяется только на такие понятия, из которых
одно входит в объём другого.
Однако из данного закона не следует, что более широкие по объёму, то еесть более
общие, понятия имеют для нас меньшую ценность.
§ 6. Ограничение и обобщение понятия
В практике мышления мы нередко пользуемся логическими приёмами, которые
называются:
1) обобщением понятия
2) ограничением понятия.
Обобщить понятие — это значит перейти от менее общего к более общему понятию.
Ограничить понятие — это значит перейти от более общего понятия к менее общему
понятию.
В соответствии с этим (согласно «закону обратного отношения») изменяется
содержание понятия.
Процесс ограничения понятия представляет собой постепенный переход от более
общих понятий к менее общим.
понятий к менее общим.
Ограничением понятий мы пользуемся в тех случаях, когда разъясняем содержание
какого-либо понятия, причём строим своё разъяснение на основе уже известных,
более общих понятий.
Ограничение понятия применяется также в тех случаях, когда бывает необходимо
уточнить содержание понятия, указать, к какому именно кругу явлений относится
данное понятие, следовательно, отграничить понятие от других понятий, в том
числе и от более общих.
В процессе ограничения понятий, переходя от более общих понятий к менее общим,
мы приходим, наконец, к таким понятиям, объём которых равен единице и которые,
следовательно, не могут подлежать дальнейшему ограничению.
Такие понятия отражают единичные, индивидуальные предметы и являются предельно
узкими по объёму.
Обобщение понятия представляет собой процесс, обратный ограничению.
При обобщении понятия путём исключения некоторых его признаков мы переходим от
менее общих ко всё более и более общим понятиям.
Процесс обобщения понятия протекает на основе того, что круг рассматриваемых
нами предметов всё более и более расширяется за счёт новых, отличных по своим
свойствам предметов.
Обобщением понятий широко пользуется наука, которая всегда стремится вскрыть в
предметах наиболее общие их свойства.
Обобщая понятия, переходя от менее общих к более общим, мы приходим, наконец, к
предельно широким по объему понятиям, которые не подлежат дальнейшему обобщению.
Такие понятия называются категориями.
Примеры категорий: «материя», «время», «движение», «пространство», «количество»,
«форма» и другое.
§ 7. Родовые и видовые понятия
Мы уже знаем, что как в процессе ограничения, так и в процессе обобщения
получается ряд понятий, из которых одни являются:
1) менее общими
2) более общими
Более общие понятия называются родовыми понятиями,
менее общие — видовыми понятиями.
понятию «город».
Одно и то же понятие в одно и то же время может быть и видовым, и родовым, но
только в разных отношениях:
1) по отношению к менее общему — оно родовое
2) по отношению к более общему — видовое
Родовое понятие (или род) не может существовать отдельно от видовых понятий, а
видовые понятия (или виды) не могут существовать отдельно от рода.
Род и вид всегда взаимно связаны.
Эта взаимная связь рода и вида отражает существующую в предметах связь общего и
отдельного, а именно:
1) каждый предмет объективного мира содержит в себе и общие свойства, которые
объединяют его с однородными предметами,
2) и свои, особые свойства.
Общие свойства существуют только в отдельных предметах.
Тем самым общие свойства являются признаком отдельных предметов.
§ 8. Основные классы понятий
По своему объёму понятия делятся на:
1) единичные
2) общие
Единичные понятия являются понятиями об отдельных (единичных) предметах.
Примерами таких понятий могут быть следующие: «полководец Кутузов»,
«город Ленинград», «Республика Болгария», «самое глубокое озеро в мире».
В общих понятиях отображается множество однородных предметов.
Например: «звезда», «книга», «школа», «песня», «урожай» и другие.
Каждое из этих понятий относится к большой группе однородных предметов.
Общие понятия могут быть более общими и менее общими.
Понятие «трактор» является менее общим по отношению к понятию
«сельскохозяйственная машина», но более общим по отношению к понятию «гусеничный
трактор».
Число предметов, которые охватываются общим понятием, может быть
1) ограниченным
2) неограниченным
Например, общее понятие «корабль» относится ко всем кораблям, которые были, есть
и будут. К общим понятиям с ограниченным объёмом относятся понятия:
«станции Московского метро первой очереди», «произведения Лермонтова»,
«учёные XIX века».
Общие и единичные понятия могут быть собирательными понятиями.
Собирательные понятия — это понятия, в которых мыслится совокупность однородных
предметов как единое целое.
Например: «лес» (деревьев), «библиотека» (книг), «собрание» (учеников).
Особенность собирательных понятий заключается в том, что их нельзя приложить к
отдельным предметам, совокупность которых мыслится в данном собирательном
понятии.
Собирательные понятия можно приложить или к совокупности предметов как единому
целому, или к ряду таких совокупностей:
1) в первом случае будет единичное собирательное понятие
2) во втором случае — общее собирательное понятие
Например, понятие о Государственной библиотеке имени В. И. Ленина в Москве будет
единичным собирательным понятием, а понятие о библиотеке (вообще) будет общим
собирательным понятием, так как оно относится ко многим библиотекам.
Примеры единичных собирательных понятий: «созвездие Большая Медведица»,
«коллектив служащих (такого-то) учреждения», «рабочий класс Польши».
Примеры общих собирательных понятий: «группа», «созвездие», «коллектив», «полк»,
«народ», «толпа», «класс» и другое.
Каждое понятие находится в различных отношениях с другими понятиями и поэтому
одновременно входит в разные классы.
1) понятие «высота» есть общее, несобирательное;
2) понятие «собрание» — общее, собирательное;
3) понятие «единство стиля и содержания в рассказах Чехова» — единичное,
собирательное.
§ 9. Отношения между понятиями
Понятия, которые по своему содержанию находятся в далёком отношении друг к
другу, называются несравнимыми понятиями.
Все остальные понятия являются сравнимыми.
Они делятся на две группы:
1) совместимые понятия
2) несовместимые понятия
Если объёмы двух (или более) понятий совпадают полностью или частично, то это
будут совместимые понятия, если же не совпадают, то это будут несовместимые
понятия.
Заметим, что в том и другом случае имеются в виду объёмы понятий, следовательно,
отношения между понятиями, которые будут рассматриваться далее, — это отношения
по объёму.
Рассмотрим группу
1.а) отношение тождества
1.б) отношение подчинения
1.в) отношение частичного совпадения объёмов
совместимых понятий.
1.а) Отношение тождества.
Есть понятия, которые могут различаться по своему содержанию, но в которых
мыслится один и тот же предмет. Такие понятия находятся в отношении тождества.
Например: «первая мировая война» и «империалистическая война 1914 года».
В этих двух понятиях мыслится одна и та же война, но при этом выделяются в
качестве признаков разные стороны этой войны.
Объём одного понятия (А) полностью совпадает с объёмом другого понятия (Б).
1.б) Отношение подчинения.
При отношении подчинения одно понятие (менее общее) входит в объём
другого понятия (более общего).
Отношение подчинения есть отношение вида и рода.
Объём видового понятия совпадает с частью объёма родового понятия.
Например: «берёза» и «дерево». Понятие, большее по объёму, — «дерево» —
полностью включило в себя понятие, меньшее по объёму,—«берёза».
1) Более общее (родовое) понятие называется подчиняющим,
2) а менее общее (видовое) называется подчинённым понятием.
Отношение подчинения понятий не следует смешивать с отношением части и целого.
Такие, например, понятия, как «месяц» и «год», «ветви» и «дерево», «цех» и
«завод», относятся как часть к целому, но не как вид к роду.
Нельзя, например, сказать, что «каждый месяц есть год», но мы говорим, что
«каждый куст есть растение».
Конечно, «кусты» тоже являются частью всех «растений», но они не только часть
растений, но и вид растений, в то время как «месяц» — только часть, но не вид
«года», «цех» — только часть, но не вид «завода».
1.в) Отношение частичного совпадения объёмов.
В таком отношении находятся, например, понятия «комсомольцы» и «колхозники».
Часть комсомольцев — колхозники, а часть колхозников — комсомольцы.
Такие понятия, объёмы которых частично совпадают, называются перекрещивающимися
понятиями.
Другие примеры перекрещивающихся понятий: «рабочие» и «москвичи»; «художники» и
«поэты».
Отношения тождества, подчинения и частичного совпадения объёмов являются
отношениями совместимых понятий, то есть таких понятий, объёмы которых в той или
иной мере совпадают.
Между несовместимыми понятиями также существуют
2.а) отношение соподчинения
2.б) отношение противоположности
2.в) отношение противоречия.
три вида отношений:
2.а) Отношение со подчинения.
Когда одному и тому же родовому понятию подчинены несколько видовых понятий, то
эти видовые понятия находятся между собой в отношении соподчинения.
Например: понятия «Европа», «Азия», «Африка» находятся в отношении соподчинения,
так как каждое из них является видом по отношению к понятию «части света».
Отношение соподчинения есть отношение между видами, объединёнными общим родом.
Отношение соподчинения, в котором находятся понятия А, Б и В, общим родом для
которых является понятие Г.
Объёмы соподчинённых понятий не совпадают друг с другом, но все они входят в
объём одного и того же родового понятия.
Примеры соподчинённых понятий: «первобытно-общинный строй», «рабовладельческий
строй», «феодальный строй», «капиталистический строй», «социалистический строй»
(общий род — «общественный строй»).
2.б) Отношение противоположности.
В отношении противоположности находятся такие два понятия, которые по своему
содержанию противоположны друг другу, но оба входят в объём одного и того же
родового понятия.
Например: «чёрный цвет» и «белый цвет» (общий их род —«цвет»).
Другие примеры: «храбрость» и «трусость», «подъём» и «спуск».
Каждое из противоположных понятий не только отрицает своим содержанием другое,
противоположное понятие, но и утверждает взамен другого, противоположного, нечто
новое, несовместимое с ним.
2.в) Отношение противоречия.
В отношении противоречия находятся такие два понятия, из которых одно полностью
отрицает другое, но содержание отрицающего понятия остаётся неопределённым.
Например: «чёрный» (цвет) и «не чёрный» (цвет); «высокий» (предмет) и
«не высокий» (предмет).
Объём понятия разделён на две части, из которых одна совершенно несовместима по
своему содержанию с другой. Однако содержание отрицающей части остаётся
нераскрытым.
Отношения между понятиями:
сравнимые
1) совместимые
1.а) отношение тождества
1.б) отношение подчинения
1.в) отношение частичного совпадения объёмов
2) несовместимые
2.а) отношение соподчинения
2.б) отношение противоположности
2.в) отношение противоречия
несравнимые
Вопросы для повторения
1. Что называется понятием?
2. Что такое существенные признаки? (Приведите примеры.)
3. Чем отличается понятие от представления?
4. Что такое содержание понятия?
5. Что такое объем понятия?
6. Что такое ограничение понятия?
7. Что такое обобщение понятия?
8. Какое существует отношение между объёмом и содержанием понятия?
9. Укажите основные классы понятий. (Приведите примеры.)
10. Какие могут быть отношения между понятиями?
11. Чем отличаются противоположные понятия от противоречащих понятий?
Г л а в а IV. Определение и деление понятия
§ 1. Сущность определения понятия
§ 2. Правила определения
§ 3. Генетическое определение
§ 4. Номинальное определение
§ 5. Значение определений
§ 6. Приёмы, заменяющие определение
§ 7. Сущность деления понятия
§ 8. Правила деления
§ 9. Дихотомическое деление
§ 10. Приёмы, сходные с делением
§ П. Классификация
Вопросы для повторения
Г л а в а V. Суждение
§ 1. Сущность суждении
§ 2. Состав суждения
§ 3. Суждение и предложение
§ 4. Виды суждений
§ 5. Утвердительные и отрицательные суждения
§ 6. Единичные, частные и обшие суждения
§ 7. Соединение делений суждений по количеству и по качеству
§ 8. Условные, разделительные и категорические суждения
§ 9. Суждения возможности, действительности и необходимости
§ 10. Объём подлежащего и сказуемого в суждении
§ 11. Отношения между суждениями
Вопросы для повторения
Г л а в а VI. Преобразование суждений
§ 1. Уточнение логического смысла суждений
§ 2. Превращение
§ 3. Обращение
Вопросы для повторения
Г л а в а VII. Основные законы логического мышления
§ 1. Понятие о логическом законе
§ 2. Закон тождества
§ 3. Закон противоречия
§ 4. Закон исключённого третьего
§ 5. Закон достаточного основания
§ 6. Значение логических законов
Вопросы для повторения
Г л а в а VIII. Дедуктивные умозаключения
§ 1. Понятие об умозаключении
§ 2. Определение силлогизма
§ 3. Состав силлогизма
§ 4. Аксиома силлогизма
§ 5. Правила силлогизма
§ 6. Понятие о фигурах силлогизма
§ 7. Разновидности силлогизма
§ 8. Характеристика фигур
§ 9. Познавательное значение силлогизма
§ 10. Условно-категорический силлогизм
§ 11. Разделительно-категорический силлогизм
§ 12. Энтимема
§ 13. О сложных силлогизмах
Вопросы для повторения
Г л а в а IX. Индуктивные умозаключения
§ 1. Сущность индукции
§ 2. Полная индукция
§ 3. Неполная индукция
§ 4. Научная индукция
§ 5. О причинной связи явлений
§ 6. Методы исследования причинной связи явлений
§ 7. Условия применения методов индукции
Вопросы для повторения
Глава X. Аналогия
Вопросы для повторения
Г л а в а XI. Гипотеза
§ 1. Определение гипотезы
§ 2. Проверка гипотезы
§ 3. Гипотеза и теория
Вопросы для повторения
Г л а в а XII. Доказательство
§ 1. Определение логического доказательства
§ 2. Состав доказательства
§ 3. Доказательства прямые и косвенные
§ 4. Правила доказательства
§ 5. Опровержение
Вопросы для повторения
Здравствуйте, Aris, Вы писали:
A>Когда-то встречал такое понятие как "программирование с помощью абстрактных типов данных". При этом автор различал, что есть ООП, а есть еще вот такой подход, но это скорее не ООП а это лучше назвать программирование с помощью абстрактных типов данных. A>Вспомнил эту штуку и хотел понять в чем там было отличие, но не могу нагуглить сходу. При чем это по-моему было что-то популярное. То ли Гради Буч "Объектно-ориентированный анализ и проектирование", то ли Мак-Конелл "Совершенный код", то ли Эккель "Философия С++". Подскажите если кто помнит или знает где почитать.
У Бертрана Мейера в "Объектно-ориентированном конструировании программных систем" была отдельная глава, посвященная АТД и взаимосвязям АТД и ООП.
Здравствуйте, Ikemefula, Вы писали:
I>В процедурном и функциональном программировании стек будет сделан модулем. В модуле будут процедуры или функции которые будут соответствовать операциям в решении задачи.
Здравствуйте, BulatZiganshin, Вы писали:
I>>В процедурном и функциональном программировании стек будет сделан модулем. В модуле будут процедуры или функции которые будут соответствовать операциям в решении задачи.
BZ>модуль — это не тип данных
Сам тип может быть сделан как угодно, непринципиально. Вот так, например
module Stack =
struct
type 'a t = {mutable elements : 'a list }
let create () = { elements = [] }
let push x s = s.elements <- x :: s.elements
let pop s =
match s.elements with
h::t -> s.elements <- t; h
| [] -> failwith "Empty stack"
end;;
Здравствуйте, Ikemefula, Вы писали:
I>>>В процедурном и функциональном программировании стек будет сделан модулем. В модуле будут процедуры или функции которые будут соответствовать операциям в решении задачи. BZ>>модуль — это не тип данных I>Сам тип может быть сделан как угодно, непринципиально. Вот так, например I>module Stack = I> struct
ну а вот это уже и есть атд-программирование, а не процедурное
Здравствуйте, BulatZiganshin, Вы писали:
BZ>>>модуль — это не тип данных I>>Сам тип может быть сделан как угодно, непринципиально. Вот так, например I>>module Stack = I>> struct
BZ>ну а вот это уже и есть атд-программирование, а не процедурное
Нет никакого атд-программирования атд это не парадигма.
Здравствуйте, BulatZiganshin, Вы писали:
I>>Нет никакого атд-программирования атд это не парадигма.
BZ>с чего ты решил? чем клу хуже например симулы-67, что она тянет на отдельную парадигму, а он — нет?
Потому что во все времена АТД были математической моделью типов данных. АТД всего лишь говорит, какие свойства будут у операций push, pop, count, peek. То есть, это теоретическая концепция для проектирования структур данных, алгоритмов, анализа, взаимодействия и тд.
Некоторые языки имеют встроенную поддерку АТД — контракты, протоколы, интерфейсы, абстрактные типы.
Кроме того, скажем, всякие HANDLE, FILE, HWND и тд имеют более чем прямое отношение к АТД. Фактически, это opaque types, не знаю, как это на русском.
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, BulatZiganshin, Вы писали:
BZ>>>>модуль — это не тип данных I>>>Сам тип может быть сделан как угодно, непринципиально. Вот так, например I>>>module Stack = I>>> struct
BZ>>ну а вот это уже и есть атд-программирование, а не процедурное
I>Нет никакого атд-программирования атд это не парадигма.
Как минимум в одном источнике я встречал упоминание об этом подходе как о парадигме.
Отличная презентация! Но она не об ATD (Abstract Data Type), а об AlgTD (Algebraic Data Type).
В Немерле, как и в любом дотнет-языке ATD обычно реализуются через интерфейсы и их конкретные реализации. Например, IList[T] — это ATD, а List[T] его конкретная реализация.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
A>Когда-то встречал такое понятие как "программирование с помощью абстрактных типов данных". При этом автор различал, что есть ООП, а есть еще вот такой подход, но это скорее не ООП а это лучше назвать программирование с помощью абстрактных типов данных.
Все очень просто.
ООП имеет наследование, АТД — нет.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, VladD2, Вы писали:
EP>>Думаю ТС алгебраические и имел в виду, раз говорит про противопоставление с ООП. VD>Очевидно, что — нет: VD>
VD>Когда-то встречал такое понятие как "программирование с помощью абстрактных типов данных"
Я читал, но вот сомневаюсь что он всё правильно воспроизвёл
Например АбстрактныеТД и ООП не противопоставляются, они вообще в разных плоскостях лежат. А вот АлгебраическиеТД и ООП как раз противопоставляются, например по части полиморфизма
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Я читал, но вот сомневаюсь что он всё правильно воспроизвёл
Лично у меня вопросов не возникло. Вопрос явно об Абстрактных Типах Данных.
Человек просто не понимает разницы между ООП и АТД.
EP>Например АбстрактныеТД и ООП не противопоставляются, они вообще в разных плоскостях лежат. А вот АлгебраическиеТД и ООП как раз противопоставляются, например по части полиморфизма
А он и не противопоставляет. Он спрашивает в чем разница.
Как бы разница в том, что ООП — это вид ЯП. А АТД — это паттерн программирования. В ООЯ он или встроен явно или очень легко реализуется на абстрактных классах. В ФЯ он реализуется на базе инкапсуляции обычно производимой в модулях (как тут уже отмечалось). Но сам механизм там может быть разный. Причем АлгТД никакого отношения к АТД не имеет и их реализовывать не может (без других фич).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>А АТД — это паттерн программирования. VD>В ООЯ он или встроен явно или очень легко реализуется на абстрактных классах.
АбстрактныйТД это не абстрактный класс из ООП, и не в какой ООЯ он не встроен.
АТД это фактически абстрактное описание математической структуры, такое же как например группа или моноид.
VD>или очень легко реализуется на абстрактных классах.
Конкретный класс стэка, заточенный под единственный тип данных, без всяких виртуальных функций и абстрактных классов, уже сам по себе является воплощением АТД "стэк".
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>АбстрактныйТД это не абстрактный класс из ООП, и не в какой ООЯ он не встроен.
Википедии что ли начитался? Интерфейсы и абстрактные типы делают реализацию АТД в ООЯ элементарным занаятием. И то что абстрактный тип и АТД формально не одно и то же не означает, что в ООЯ нет средств реализации АТД.
Конечно всегда можно создать интерфейс не соответствующий определению АТД, но это ровным счетом ничего не меняет.
EP>АТД это фактически абстрактное описание математической структуры, такое же как например группа или моноид.
Не стоит заниматься демагогией. Мы на форуме программистов. Здесь чистые математические абстракции никому не интересны. Если ты не понял, что я сказал, просто прочти мои слова еще рез.
EP>Конкретный класс стэка, заточенный под единственный тип данных, без всяких виртуальных функций и абстрактных классов, уже сам по себе является воплощением АТД "стэк".
Похоже ты сам не понимаешь что такое АТД. Намек: стек он может быть и на базе СУБД реализован. Плюс это только пример. Не стоит упираться в частности рассуждая об абстракциях.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
EP>>АбстрактныйТД это не абстрактный класс из ООП, и не в какой ООЯ он не встроен. VD>Википедии что ли начитался?
Там в том числе. Если у тебя есть ссылки на другие определения — то приводи
VD>Интерфейсы и абстрактные типы делают реализацию АТД в ООЯ элементарным занаятием.
Вот только интерфейсы и абстрактные классы описывают только синтаксический интерфейс, в то время как основной частью АТД является семантика и математическая модель, а синтаксический интерфейс вообще вторичен.
Не говоря уже о том насколько вообще корректно выражение о реализации абстрактной математической структуры (не её конкретной модели, а именно самой структуры).
VD>И то что абстрактный тип и АТД формально не одно и то же не означает, что в ООЯ нет средств реализации АТД.
Приведи тогда конкретные средства "реализации" АТД в ООЯ.
EP>>АТД это фактически абстрактное описание математической структуры, такое же как например группа или моноид. VD>Не стоит заниматься демагогией. Мы на форуме программистов.
Где ты увидел демагогию? Это моё понимание термина.
VD>Здесь чистые математические абстракции никому не интересны.
Может залудить опрос, делов-то. "Интересны ли вам математические абстракции"
Да даже если тебе они не интересны, это не означает что определения и терминологию можно прогибать как угодно под свои хотелки
EP>>Конкретный класс стэка, заточенный под единственный тип данных, без всяких виртуальных функций и абстрактных классов, уже сам по себе является воплощением АТД "стэк". VD>Похоже ты сам не понимаешь что такое АТД.
А я думаю что ты не понимаешь — это терминологический спор.
VD>Намек: стек он может быть и на базе СУБД реализован.
Конечно может, я нигде не утверждал обратного. Это будет конкретным воплощением Абстрактного Типа Данных (или математической модели) "стек".
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Там в том числе. Если у тебя есть ссылки на другие определения — то приводи
Английскую вики отредактировал кто-то матаном головного мозга. Разговоры об абстрактных математических понятиях мало интересны для программистов. Для программистов АТД — это паттерн проектирования.
EP>Вот только интерфейсы и абстрактные классы описывают только синтаксический интерфейс, в то время как основной частью АТД является семантика и математическая модель,
Это треп бесполезный для программиста. Любой интефейс подразумевает некоторую семантику. От части ее можно выразить пред/пост-условиями, от части — документацией. В большинстве же случаев сематника и так очевидна. Вряд ли метод Push() у стека будет делать что-то отличное от того что мы с тобой под ним подразумеваем.
EP> а синтаксический интерфейс вообще вторичен.
Это вообще какой-то набор слов. Что такое "синтаксический интерфейс"?
Для программиста в АТД важны две идеи: абстракции (от реализации) и инкапсуляции. Но это базовые идеи ООП. Откровенно говоря идея наследования как раз вторична.
EP>Не говоря уже о том насколько вообще корректно выражение о реализации абстрактной математической структуры (не её конкретной модели, а именно самой структуры).
Очень даже корректно, если мы говорим о практическом программировании, а не просто хотим напыщенно по филосовствовать. Абстракции ради абстракции никому не интересны. Всем интересно получение выгоды из применения АТД. Она на лица и она согласуется с общими идеями ООП.
Просто надо понимать, что АТД придумали во времена когда ООП не было даже в проекте. Но цели были те же. И придумали их не абстрактные математики, а практики. Это уже потом под это дело заумную базу попытались подвести.
Прелесть АТД в том, что этот паттерн применим не только в ООЯ, но и в любом другом поддерживающем абстракцию данных. Скажем весь WinAPI (за редким исключением) построен на базе АТД.
EP>Приведи тогда конкретные средства "реализации" АТД в ООЯ.
Уже раз 20 это сделал. Сколько можно? Интерфейс и его реализация.
EP>Может залудить опрос, делов-то. "Интересны ли вам математические абстракции"
Залуди, если тебе это интересно. Но думаю, что тебя просто никто не поймет. каждый будет понимать под этим что-то твое и ты получишь чушь вместо ответа.
EP>Да даже если тебе они не интересны, это не означает что определения и терминологию можно прогибать как угодно под свои хотелки
EP>>>Конкретный класс стэка, заточенный под единственный тип данных, без всяких виртуальных функций и абстрактных классов, уже сам по себе является воплощением АТД "стэк". EP>...Конечно может, я нигде не утверждал обратного. Это [b] будет конкретным воплощением Абстрактного Типа Данных[/b] (или математической модели) "стек".
Вот эти твои слова противоречат друг другу.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.