Re: Программирование с помощью АТД vs ООП.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 06.05.16 21:58
Оценка: 1 (1) +2
Здравствуйте, Aris, Вы писали:

A>Когда-то встречал такое понятие как "программирование с помощью абстрактных типов данных". При этом автор различал, что есть ООП, а есть еще вот такой подход, но это скорее не ООП а это лучше назвать программирование с помощью абстрактных типов данных.


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

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

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

Бертран Мейер, ООП. Там как раз глава про это.
Re[7]: Программирование с помощью АТД vs ООП.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 07.05.16 10:08
Оценка: :))
Здравствуйте, Aris, Вы писали:

I>>Нет никакого атд-программирования атд это не парадигма.


A>Как минимум в одном источнике я встречал упоминание об этом подходе как о парадигме.


Да, время нынче такое, раньше изобретали велосипеды, сейчас — парадигмы. Тут целый форум этому посвящен. Не успели изобрести одну парадигму, уже начали вторую
Re[6]: Программирование с помощью АТД vs ООП.
От: BulatZiganshin  
Дата: 07.05.16 08:17
Оценка: +1
Здравствуйте, Ikemefula, Вы писали:

I>Нет никакого атд-программирования атд это не парадигма.


с чего ты решил? чем клу хуже например симулы-67, что она тянет на отдельную парадигму, а он — нет?
Люди, я люблю вас! Будьте бдительны!!!
Re[8]: Программирование с помощью АТД vs ООП.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 28.06.16 07:36
Оценка: -1
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>АбстрактныйТД это не абстрактный класс из ООП, и не в какой ООЯ он не встроен.

EP>АТД это фактически абстрактное описание математической структуры, такое же как например группа или моноид.

Разумеется. Но ООП как раз и даёт эту поддержку АТД
Re[2]: Программирование с помощью АТД vs ООП.
От: Voblin Россия http://maslyaew.narod.ru/
Дата: 29.09.16 09:27
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>ООП имеет наследование, АТД — нет.


Если так, то это очень похоже на то, что делается в 1С. Там есть набор базовых типов ("Справочник", "Документ", "Регистр бухгалтерии" и т.п.), и от них можно порождать собственно те виды данных, с которыми потом все и работают. Например, Справочник.БанковскиеСчета, Документ.ПлатежноеПоручениеИсходящее, РегистрБухгалтерии.Управленческий. А вот накрутить ещё один уровень иерархии — тут жёсткий облом. Сделать что-то вроде Справочник.БанковскиеСчета.Расчетные и Справочник.БанковскиеСчета.Депозитные не получится. Нет даже такого пункта в меню.

Результат — потрясающий. С одной стороны, немножко гложет тоска по отсутствующей возможности вынести какую-нибудь логику в базовый класс, и от потребности в массовом копипасте приходится спасаться динамической типизацией. Но с другой стороны проблема построения иерархий ("что чему является базовым классом? окружность эллипсу или эллипс окружности?") отсутствует напрочь. У народа есть чёткое представление о критериях выбора базовых типов, и количество архитектурных ошибок в духе "не от того унаследовались" стремится к нулю. Вопреки банальной логике и очевидному здравому смыслу системы в результате получаются проще (и в разработке, и в использовании, и в развитии, и в сопровождении), функциональнее, надёжнее и, что особенно удивительно, шустрее.
Программирование с помощью АТД vs ООП.
От: Aris  
Дата: 06.05.16 18:26
Оценка:
Когда-то встречал такое понятие как "программирование с помощью абстрактных типов данных". При этом автор различал, что есть ООП, а есть еще вот такой подход, но это скорее не ООП а это лучше назвать программирование с помощью абстрактных типов данных.
Вспомнил эту штуку и хотел понять в чем там было отличие, но не могу нагуглить сходу. При чем это по-моему было что-то популярное. То ли Гради Буч "Объектно-ориентированный анализ и проектирование", то ли Мак-Конелл "Совершенный код", то ли Эккель "Философия С++". Подскажите если кто помнит или знает где почитать.
Re: Программирование с помощью АТД vs ООП.
От: velkin Удмуртия http://blogs.rsdn.org/effective/
Дата: 06.05.16 19:14
Оценка:
Здравствуйте, Aris, Вы писали:

A>Когда-то встречал такое понятие как "программирование с помощью абстрактных типов данных". При этом автор различал, что есть ООП, а есть еще вот такой подход, но это скорее не ООП а это лучше назвать программирование с помощью абстрактных типов данных.

A>Вспомнил эту штуку и хотел понять в чем там было отличие, но не могу нагуглить сходу. При чем это по-моему было что-то популярное. То ли Гради Буч "Объектно-ориентированный анализ и проектирование", то ли Мак-Конелл "Совершенный код", то ли Эккель "Философия С++". Подскажите если кто помнит или знает где почитать.

Слишком мутное описание, вот например:
"Структуры данных в C++" Уильям Топп, Уильям Форд



А вот полезнее на мой взгляд:
  небольшая вырезка из учебника по логике

Г л а в а 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. Опровержение
Вопросы для повторения

П р и л о ж е н и е . Логические упражнения

Re: Программирование с помощью АТД vs ООП.
От: so5team https://stiffstream.com
Дата: 06.05.16 19:46
Оценка:
Здравствуйте, Aris, Вы писали:

A>Когда-то встречал такое понятие как "программирование с помощью абстрактных типов данных". При этом автор различал, что есть ООП, а есть еще вот такой подход, но это скорее не ООП а это лучше назвать программирование с помощью абстрактных типов данных.

A>Вспомнил эту штуку и хотел понять в чем там было отличие, но не могу нагуглить сходу. При чем это по-моему было что-то популярное. То ли Гради Буч "Объектно-ориентированный анализ и проектирование", то ли Мак-Конелл "Совершенный код", то ли Эккель "Философия С++". Подскажите если кто помнит или знает где почитать.

У Бертрана Мейера в "Объектно-ориентированном конструировании программных систем" была отдельная глава, посвященная АТД и взаимосвязям АТД и ООП.
Отредактировано 06.05.2016 19:47 so5team . Предыдущая версия .
Re[2]: Программирование с помощью АТД vs ООП.
От: BulatZiganshin  
Дата: 07.05.16 07:35
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>В процедурном и функциональном программировании стек будет сделан модулем. В модуле будут процедуры или функции которые будут соответствовать операциям в решении задачи.


модуль — это не тип данных
Люди, я люблю вас! Будьте бдительны!!!
Re[3]: Программирование с помощью АТД vs ООП.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 07.05.16 08:03
Оценка:
Здравствуйте, 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;;
Re[4]: Программирование с помощью АТД vs ООП.
От: BulatZiganshin  
Дата: 07.05.16 08:06
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>>>В процедурном и функциональном программировании стек будет сделан модулем. В модуле будут процедуры или функции которые будут соответствовать операциям в решении задачи.

BZ>>модуль — это не тип данных
I>Сам тип может быть сделан как угодно, непринципиально. Вот так, например
I>module Stack =
I> struct

ну а вот это уже и есть атд-программирование, а не процедурное
Люди, я люблю вас! Будьте бдительны!!!
Re[5]: Программирование с помощью АТД vs ООП.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 07.05.16 08:09
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>>>модуль — это не тип данных

I>>Сам тип может быть сделан как угодно, непринципиально. Вот так, например
I>>module Stack =
I>> struct

BZ>ну а вот это уже и есть атд-программирование, а не процедурное


Нет никакого атд-программирования атд это не парадигма.
Re[7]: Программирование с помощью АТД vs ООП.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 07.05.16 08:52
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

I>>Нет никакого атд-программирования атд это не парадигма.


BZ>с чего ты решил? чем клу хуже например симулы-67, что она тянет на отдельную парадигму, а он — нет?


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

Некоторые языки имеют встроенную поддерку АТД — контракты, протоколы, интерфейсы, абстрактные типы.
Кроме того, скажем, всякие HANDLE, FILE, HWND и тд имеют более чем прямое отношение к АТД. Фактически, это opaque types, не знаю, как это на русском.
Re[6]: Программирование с помощью АТД vs ООП.
От: Aris  
Дата: 07.05.16 09:02
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Здравствуйте, BulatZiganshin, Вы писали:


BZ>>>>модуль — это не тип данных

I>>>Сам тип может быть сделан как угодно, непринципиально. Вот так, например
I>>>module Stack =
I>>> struct

BZ>>ну а вот это уже и есть атд-программирование, а не процедурное


I>Нет никакого атд-программирования атд это не парадигма.


Как минимум в одном источнике я встречал упоминание об этом подходе как о парадигме.
Re: Программирование с помощью АТД vs ООП.
От: IT Россия linq2db.com
Дата: 19.05.16 15:16
Оценка:
Здравствуйте, Aris, Вы писали:

A>Подскажите если кто помнит или знает где почитать.


Есть посмотреть правда для Немерле:

https://www.youtube.com/watch?v=KkUz8_fZLiY
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Программирование с помощью АТД vs ООП.
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.06.16 22:11
Оценка:
Здравствуйте, IT, Вы писали:

IT>Есть посмотреть правда для Немерле:

IT>https://www.youtube.com/watch?v=KkUz8_fZLiY

Отличная презентация! Но она не об ATD (Abstract Data Type), а об AlgTD (Algebraic Data Type).

В Немерле, как и в любом дотнет-языке ATD обычно реализуются через интерфейсы и их конкретные реализации. Например, IList[T] — это ATD, а List[T] его конкретная реализация.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Программирование с помощью АТД vs ООП.
От: LaptevVV Россия  
Дата: 25.06.16 02:35
Оценка:
A>Когда-то встречал такое понятие как "программирование с помощью абстрактных типов данных". При этом автор различал, что есть ООП, а есть еще вот такой подход, но это скорее не ООП а это лучше назвать программирование с помощью абстрактных типов данных.
Все очень просто.
ООП имеет наследование, АТД — нет.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Программирование с помощью АТД vs ООП.
От: Evgeny.Panasyuk Россия  
Дата: 25.06.16 08:06
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Отличная презентация! Но она не об ATD (Abstract Data Type), а об AlgTD (Algebraic Data Type).


Думаю ТС алгебраические и имел в виду, раз говорит про противопоставление с ООП.

P.S. Если быть точным, то по-русски пишется АТД, а по-английски — ADT.
Re[4]: Программирование с помощью АТД vs ООП.
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.06.16 08:58
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Думаю ТС алгебраические и имел в виду, раз говорит про противопоставление с ООП.


Очевидно, что — нет:

Когда-то встречал такое понятие как "программирование с помощью абстрактных типов данных"

Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Программирование с помощью АТД vs ООП.
От: Evgeny.Panasyuk Россия  
Дата: 25.06.16 11:48
Оценка:
Здравствуйте, VladD2, Вы писали:

EP>>Думаю ТС алгебраические и имел в виду, раз говорит про противопоставление с ООП.

VD>Очевидно, что — нет:
VD>

VD>Когда-то встречал такое понятие как "программирование с помощью абстрактных типов данных"


Я читал, но вот сомневаюсь что он всё правильно воспроизвёл
Например АбстрактныеТД и ООП не противопоставляются, они вообще в разных плоскостях лежат. А вот АлгебраическиеТД и ООП как раз противопоставляются, например по части полиморфизма
Re[6]: Программирование с помощью АТД vs ООП.
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.06.16 13:31
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Я читал, но вот сомневаюсь что он всё правильно воспроизвёл


Лично у меня вопросов не возникло. Вопрос явно об Абстрактных Типах Данных.

Человек просто не понимает разницы между ООП и АТД.

EP>Например АбстрактныеТД и ООП не противопоставляются, они вообще в разных плоскостях лежат. А вот АлгебраическиеТД и ООП как раз противопоставляются, например по части полиморфизма


А он и не противопоставляет. Он спрашивает в чем разница.

Как бы разница в том, что ООП — это вид ЯП. А АТД — это паттерн программирования. В ООЯ он или встроен явно или очень легко реализуется на абстрактных классах. В ФЯ он реализуется на базе инкапсуляции обычно производимой в модулях (как тут уже отмечалось). Но сам механизм там может быть разный. Причем АлгТД никакого отношения к АТД не имеет и их реализовывать не может (без других фич).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Программирование с помощью АТД vs ООП.
От: Evgeny.Panasyuk Россия  
Дата: 25.06.16 20:06
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А АТД — это паттерн программирования.

VD>В ООЯ он или встроен явно или очень легко реализуется на абстрактных классах.

АбстрактныйТД это не абстрактный класс из ООП, и не в какой ООЯ он не встроен.
АТД это фактически абстрактное описание математической структуры, такое же как например группа или моноид.

VD>или очень легко реализуется на абстрактных классах.


Конкретный класс стэка, заточенный под единственный тип данных, без всяких виртуальных функций и абстрактных классов, уже сам по себе является воплощением АТД "стэк".
Отредактировано 25.06.2016 20:07 Evgeny.Panasyuk . Предыдущая версия .
Re[8]: Программирование с помощью АТД vs ООП.
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.06.16 23:48
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>АбстрактныйТД это не абстрактный класс из ООП, и не в какой ООЯ он не встроен.


Википедии что ли начитался? Интерфейсы и абстрактные типы делают реализацию АТД в ООЯ элементарным занаятием. И то что абстрактный тип и АТД формально не одно и то же не означает, что в ООЯ нет средств реализации АТД.

Конечно всегда можно создать интерфейс не соответствующий определению АТД, но это ровным счетом ничего не меняет.

EP>АТД это фактически абстрактное описание математической структуры, такое же как например группа или моноид.


Не стоит заниматься демагогией. Мы на форуме программистов. Здесь чистые математические абстракции никому не интересны. Если ты не понял, что я сказал, просто прочти мои слова еще рез.

EP>Конкретный класс стэка, заточенный под единственный тип данных, без всяких виртуальных функций и абстрактных классов, уже сам по себе является воплощением АТД "стэк".


Похоже ты сам не понимаешь что такое АТД. Намек: стек он может быть и на базе СУБД реализован. Плюс это только пример. Не стоит упираться в частности рассуждая об абстракциях.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Программирование с помощью АТД vs ООП.
От: Evgeny.Panasyuk Россия  
Дата: 27.06.16 07:53
Оценка:
Здравствуйте, VladD2, Вы писали:

EP>>АбстрактныйТД это не абстрактный класс из ООП, и не в какой ООЯ он не встроен.

VD>Википедии что ли начитался?

Там в том числе. Если у тебя есть ссылки на другие определения — то приводи

VD>Интерфейсы и абстрактные типы делают реализацию АТД в ООЯ элементарным занаятием.


Вот только интерфейсы и абстрактные классы описывают только синтаксический интерфейс, в то время как основной частью АТД является семантика и математическая модель, а синтаксический интерфейс вообще вторичен.
Не говоря уже о том насколько вообще корректно выражение о реализации абстрактной математической структуры (не её конкретной модели, а именно самой структуры).

VD>И то что абстрактный тип и АТД формально не одно и то же не означает, что в ООЯ нет средств реализации АТД.


Приведи тогда конкретные средства "реализации" АТД в ООЯ.

EP>>АТД это фактически абстрактное описание математической структуры, такое же как например группа или моноид.

VD>Не стоит заниматься демагогией. Мы на форуме программистов.

Где ты увидел демагогию? Это моё понимание термина.

VD>Здесь чистые математические абстракции никому не интересны.


Может залудить опрос, делов-то. "Интересны ли вам математические абстракции"

Да даже если тебе они не интересны, это не означает что определения и терминологию можно прогибать как угодно под свои хотелки

EP>>Конкретный класс стэка, заточенный под единственный тип данных, без всяких виртуальных функций и абстрактных классов, уже сам по себе является воплощением АТД "стэк".

VD>Похоже ты сам не понимаешь что такое АТД.

А я думаю что ты не понимаешь — это терминологический спор.

VD>Намек: стек он может быть и на базе СУБД реализован.


Конечно может, я нигде не утверждал обратного. Это будет конкретным воплощением Абстрактного Типа Данных (или математической модели) "стек".
Re[10]: Программирование с помощью АТД vs ООП.
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.06.16 15:03
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Там в том числе. Если у тебя есть ссылки на другие определения — то приводи


Английскую вики отредактировал кто-то матаном головного мозга. Разговоры об абстрактных математических понятиях мало интересны для программистов. Для программистов АТД — это паттерн проектирования.

EP>Вот только интерфейсы и абстрактные классы описывают только синтаксический интерфейс, в то время как основной частью АТД является семантика и математическая модель,


Это треп бесполезный для программиста. Любой интефейс подразумевает некоторую семантику. От части ее можно выразить пред/пост-условиями, от части — документацией. В большинстве же случаев сематника и так очевидна. Вряд ли метод Push() у стека будет делать что-то отличное от того что мы с тобой под ним подразумеваем.

EP> а синтаксический интерфейс вообще вторичен.


Это вообще какой-то набор слов. Что такое "синтаксический интерфейс"?

Для программиста в АТД важны две идеи: абстракции (от реализации) и инкапсуляции. Но это базовые идеи ООП. Откровенно говоря идея наследования как раз вторична.

EP>Не говоря уже о том насколько вообще корректно выражение о реализации абстрактной математической структуры (не её конкретной модели, а именно самой структуры).


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

Просто надо понимать, что АТД придумали во времена когда ООП не было даже в проекте. Но цели были те же. И придумали их не абстрактные математики, а практики. Это уже потом под это дело заумную базу попытались подвести.

Прелесть АТД в том, что этот паттерн применим не только в ООЯ, но и в любом другом поддерживающем абстракцию данных. Скажем весь WinAPI (за редким исключением) построен на базе АТД.

EP>Приведи тогда конкретные средства "реализации" АТД в ООЯ.


Уже раз 20 это сделал. Сколько можно? Интерфейс и его реализация.

EP>Может залудить опрос, делов-то. "Интересны ли вам математические абстракции"


Залуди, если тебе это интересно. Но думаю, что тебя просто никто не поймет. каждый будет понимать под этим что-то твое и ты получишь чушь вместо ответа.

EP>Да даже если тебе они не интересны, это не означает что определения и терминологию можно прогибать как угодно под свои хотелки


EP>>>Конкретный класс стэка, заточенный под единственный тип данных, без всяких виртуальных функций и абстрактных классов, уже сам по себе является воплощением АТД "стэк".

EP>...Конечно может, я нигде не утверждал обратного. Это [b] будет конкретным воплощением Абстрактного Типа Данных[/b] (или математической модели) "стек".

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