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

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


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

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

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

Бертран Мейер, ООП. Там как раз глава про это.
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[6]: Программирование с помощью АТД vs ООП.
От: BulatZiganshin  
Дата: 07.05.16 08:17
Оценка: +1
Здравствуйте, Ikemefula, Вы писали:

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


с чего ты решил? чем клу хуже например симулы-67, что она тянет на отдельную парадигму, а он — нет?
Люди, я люблю вас! Будьте бдительны!!!
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[7]: Программирование с помощью АТД vs ООП.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 07.05.16 10:08
Оценка: :))
Здравствуйте, Aris, Вы писали:

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


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


Да, время нынче такое, раньше изобретали велосипеды, сейчас — парадигмы. Тут целый форум этому посвящен. Не успели изобрести одну парадигму, уже начали вторую
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 . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.