LINUX.ORG.RU

Что общего у ООП и логического программирования

 ,


0

2

В последнее время задумываюсь о том, что ООП очень напоминает логическое программирование, по сути.

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

Действительно, я фофан решал на Io некоторые задачи логического программирования as is, встроенными средствами языка, не прибегая даже ни к какому расширению.

Что общего? Самое главное: мы что то декларируем, потом на основании этой декларации что-то вычисляем. Определенно это общая и самая существенная черта.

А вот в чем, на ваш взгляд принципиальное отличие, если оно есть?

Перемещено tailgunner из development

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

Ну и к какому же классу в объектной модели ты бы отнес входные объекты, если они персоны и одновременно жители городанейм.

anonymous ()

Интересно, как на логическом ЯП решается задача рисования круга.

theNamelessOne ★★★★★ ()

А в чем проблема? Пролог это предок SQL. В SQL выборка делается элементарно. А вот ООП с реляционными базами данных мешают толкьо мудаки.

DNA_Seq ★★☆☆☆ ()

Я правильно понял, это же анонимус?

Solace ★★ ()
Ответ на: комментарий от Solace

Конечно. Дурацкий ник, Io, идеи космического масштаба.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

идеи космического масштаба.

и космической же глупости.

DNA_Seq ★★☆☆☆ ()
Ответ на: комментарий от DNA_Seq

хорошо что не космической смеси банальщины и лютого капитанства, как у тебя.

asteroidcollide ()

Что общего у ООП и логического программирования

Буковки английского алфавита.

Deleted ()

А Red Hat Drools это «ООП» или «логическое программирование»(С).

Что там JSR-94 говорит про «business rules engine»?

Ну просто мне интересно.

Bioreactor ★★★★★ ()

ООП вообще про другое. Это способ автоматизации копипасты кода, причём большими кусками. Накопипастили, поменяли свойства, склеили ежа с ужом, а там пусть машина разбирается с тоннами кода.

Napilnik ★★★★★ ()
Ответ на: комментарий от Napilnik

Это квази-ооп об этом. ООП, в том числе(но не только) про совместное повторное использование.

asteroidcollide ()
Ответ на: комментарий от asteroidcollide

Это квази-ооп об этом. ООП, в том числе(но не только) про совместное повторное использование.

Совместное повторное использование это дёргание процедур с функциями из либ и модулей. Но тут возникает проблема с переменными: всем нужна переменная А1, вот и клонируй её вручную, промежуточные данные тоже сам храни, и как всё это сделать - тоже сам изучай. А вот чтобы просто накопипастить незнамо чего, и чтобы оно работало без лишней писанины, для этого и было придумано ООП. Можно было реализовать по другому, но сделали вот так. Есть конечно упоротые концепции, по типу «всё является объектами», но это просто кастрированная логика.

Napilnik ★★★★★ ()
Ответ на: комментарий от Napilnik

Есть конечно упоротые концепции, по типу «всё является объектами»

Это одно из непременных условий, без этого нет нормального ООП. Паста к нормальному ООП отношения не имеет.

http://wiki.c2.com/?AlanKaysDefinitionOfObjectOriented

но это просто кастрированная логика

Не понял, можно подробней?

asteroidcollide ()
Ответ на: комментарий от theNamelessOne

Объявляем точку. Через точку и встроенную математику - окружность. Объявляем частный случай окружности. Как-то так вроде

alex4321 ()
Ответ на: комментарий от Napilnik

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

DNA_Seq ★★☆☆☆ ()
Последнее исправление: DNA_Seq (всего исправлений: 1)
Ответ на: комментарий от asteroidcollide

Есть конечно упоротые концепции, по типу «всё является объектами»

Это одно из непременных условий, без этого нет нормального ООП.

Это говно, а не нормальное ООП. С какого хрена любая строка или массив являются объектами а не простыми переменными?

но это просто кастрированная логика

Не понял, можно подробней?

Порезали все сущности кроме палок и какашек, тем самым заставили думать только в пределах этих категорий.

Napilnik ★★★★★ ()
Ответ на: комментарий от DNA_Seq

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

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

Napilnik ★★★★★ ()
Ответ на: комментарий от cheerfulboy

В чем заключается упоротость?

Базовые строки с массивами это разновидности переменных а не объекты, другие типы сущностей, а в упоротых концепциях сделали как в антиутопии «боятся ли компьютеры адского пламени»: там заменили людей на клонов, а чтобы не париться, выращивали только мужиков, но половине из них потом делали тяп-ляп операцию по смене пола - удешевили производство на три копейки, а дальше, трахайтесь как хотите...

Napilnik ★★★★★ ()
Ответ на: комментарий от Napilnik

С какого хрена любая строка или массив являются объектами а не простыми переменными?

ООП это про объекты и поведение. всё что имеет поведение это объект. если у строк и массивов есть выраженное поведение то это объект, если нет то не объект. есть/нет зависит от логического построения языка/системы.

всё остальное это красноглазие.

vtVitus ★★★★★ ()
Ответ на: комментарий от Napilnik

Ты обнюханный штоле?

Ты волен не пользоваться методами и свойствами строк, тебя никто не заставляет. Так в чем проблема?

cheerfulboy ()
Ответ на: комментарий от cheerfulboy

ну, например, если строка — это не объект, можно понастроить кучу сахара для неё, а так — нельзя

next_time ★★★★ ()
Ответ на: комментарий от Napilnik

а не объекты

В быдлоязыках они могут быть примитивными типами данных(никак не переменными, естественно, это бред). Это имитация объектов. Но это проблемы быдлоязыков, зачем об этом думать?

asteroidcollide ()
Ответ на: комментарий от vtVitus

ООП это про объекты и поведение. всё что имеет поведение это объект. если у строк и массивов есть выраженное поведение то это объект, если нет то не объект.

Тогда СИ - объектный язык программирования.

Napilnik ★★★★★ ()
Ответ на: комментарий от cheerfulboy

Ну так сколько полей, деструкторов и конструкторов должно быть у каждой переменной типа byte - это же афигеннейший объектище.

Napilnik ★★★★★ ()
Ответ на: комментарий от Napilnik

все можно считать частным случаем ООП, любой язык.

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

asteroidcollide ()
Ответ на: комментарий от asteroidcollide

В быдлоязыках они могут быть примитивными типами данных(никак не переменными, естественно, это бред). Это имитация объектов. Но это проблемы быдлоязыков, зачем об этом думать?

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

Napilnik ★★★★★ ()
Ответ на: комментарий от Napilnik

Нет, это ты берега попутал. Переменная — это одно(идентификатор), то на что она указывает — это совершенно другое(объект, структура, etc)

asteroidcollide ()
Ответ на: комментарий от asteroidcollide

А тебе надо чтобы каждый байт памяти компьютера обладал собственным продвинутым ИИ?

Всё что механизированная копипаста кода с автогенерацией своих необходимых переменных и данных, то ООП нормальное. В идеале, для мышевозанья или лепки перчатками виртуальной реальности. Всё что для писательства сего вручную, с тоннами всяких скобочек и примочек, в количестве которых нельзя ошибаться, то ООП недоразвитое, вот и весь сказ, а не то что ты в рекламе прочитал.

Napilnik ★★★★★ ()
Ответ на: комментарий от asteroidcollide

Переменная — это одно(идентификатор), то на что она указывает — это совершенно другое(объект, структура, etc)

А ты не смешивай в кучу переменные разных типов. Если переменная типа byte, то она цельная и без фокусов, если конечно ЯП нормальный и она не меняет байтность от фазы луны.

Napilnik ★★★★★ ()
Ответ на: комментарий от Napilnik

нет. если бы ты подумал немного, то понял бы, что ООП это логическая парадигма, которая может быть выражена на любом языке программирования хоть на асме. В 90стые на СИ ооп реализовывали просто в лёт. Но сдаётся мне, ты просто не понимаешь чего такое объект и поведение.

vtVitus ★★★★★ ()
Последнее исправление: vtVitus (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.