![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Для C++ существует огромное множество библиотек выполненных в различных техниках исполнения. Программисты создавшие их следовали разным ментальным моделям. К сожалению лично мне использование этих творений неудобно, хотя они и предоставляют весь нужный функционал. Похоже проблема в том, что сами программисты создавая свои творения мыслили в парадигме обобщённого функционального, вместо обобщённого объектно-ориентированного программирования.
Совершенную абстракцию создать не получится, потому что в мире нет ничего совершенного. Но если она достигнет хотя бы уровня в котором возможности языка будут использоваться в наибольшей степени, думаю этого будет вполне достаточно. Потому открываю тему микрообсуждений особенностей абстрактных ядер и их использования. |
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
atomicxp, чувствуется знакомый слог. особенно, учитывая это
возникает вопрос, а Вы случаем с unicuum не братья-близнецы ![]() если нет, то напрашивается следующий : a зачем стоило заводить то новый ник ?! ![]() Это сообщение отредактировал(а) mes - 3.5.2009, 00:59 |
||||
|
|||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
||||
|
||||
unicuum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 16.3.2005 Где: Рашка Репутация: нет Всего: 8 |
вот же всё написал -------------------- ![]() обычный день на винграде |
|||
|
||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Вряд ли у многих ли вызывает удивление, что алгоритмы вычисления контрольных сумм записываются в виде отдельных классов. Более того, они все идут от базы и имеют специальную виртуальную функцию, которая через единый потоковый интерфейс позволяет работать с различными источниками данных.
Возникает вопрос, почему такие алгоритмы как MD5, SHA1, TTH и другие имеют право называться сущностью, тогда как арифметические операции: сложение, вычитание, умножение, деление, или тригонометрические: синус, тангенс, косинус и прочие, лишены возможности иметь собственную сущность и обречены находится в одном классе. Как гласит правило объектно-ориентированного программирования, плохо, когда в одном классе больше семи сущностей. А поскольку в стандартных математических классах, да и многих других, как правило лежит гораздо больше операций, получается простой и очевидный вывод, такое программирование относится к функциональному или в случае применения шаблонов обобщённому функциональному программированию, но уж никак не к объектно-ориентированному. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
![]() ![]() Как понял Вы в качестве объектной модели программирования рассматриваете модель примененную в Cpp. Во первых не забывайте, что это далеко не чистое воплощение принципов ООП. Во вторых - что принципом Cpp является : не добавлять ничего лишнего, чего не было затребовано/использовано. В третьих - что полиморфизм бывает времени рантайма и времени компиляции. Посредством плюса мы легко складываем как и простые типы, так и строчки и другие более сложные объекты - чем Вам не абстракция ? Посмотрите как работают шаблоны, применяя алгоритмы, к объектам разных типов, имеющих нужные методы. В четвертых кто Вам мешает описать на Cpp свой класс, в котором нужные операции будут виртуальными (как Вы это представляете), и использовать их ? Никто не лишил их права.. Наоборот у них есть привелегия быть простыми функциями. Не забывайте, что на чистой абстракции далеко не уедешь, нужно еще и реализацию делать - ну а при реализации кто то должны быть простыми функциями, на которые нужно опираться.
Двойной ужас : "В классе" "7 сущностей" ! Правило гласит: Каждый объект должен представлять одну сущность. А вы считаете, что ООП это верх совершенства ? Это сообщение отредактировал(а) mes - 3.5.2009, 10:02 |
|||
|
||||
atomicxp |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Понятно же что это относится к включению или наследованию, смотри предыдущий флудовый топик. Класс сущность и содержит сущности, то есть классы посредством включения или наследования. Плюс методы тоже можно по разному рассматривать.
Это не полиморфизм, а приведение типов. Я пытаюсь найти такой способ "дёргать компьютер за ниточки", чтобы это было удобно хотя бы лично мне, вот и всё. |
||||
|
|||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Т.е класс "человек" не удовлетворяет правилам хорошего тона ООП, потому что включает в себя более семи сущностей ?! ![]() Так а если включены три противоречиворечивые сущности, то все в порядке?! ведь три менее семи ! а нельзя ли поподробней где Вы там приведение типов увидели ? ![]()
успехов в этом нелегком деле ![]() |
||||
|
|||||
atomicxp |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Я так понял речь идёт о static_cast и dynamic_cast, при невозможности приведения типов в одном случае получаем крах системы, во втором нулевой указатель. Или сам поясняй, что тобой подразумевалось.
То есть как пишут в книге "Совершенный код" автор С. Макконнелл, сам человек не может охватить больше семи сущностей за раз. Потому рекомендовано делить всё на логические группы не более семи.
Насчёт противоречий, прочти "Совершенный код", та это тоже описано, да и много чего ещё. |
||||
|
|||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
ужастокакой... я думаю подразумевалась идиома CRTP Добавлено через 3 минуты и 30 секунд
|
|||
|
||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
||||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Читал, но дело не в том что написано в книге, а как Вы это поняли ![]() где там такое можно было увидеть : Я лучше отпишусь кодом
Так как классы обладают одним и тем же интерфейсом, то типы А и B статически полиморфны. Это может проявляться как на уровне типов, так и функций или библиотек. ![]() |
||||
|
|||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
||||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
неa, слишком глубoко копнули. ![]() ![]() Это сообщение отредактировал(а) mes - 3.5.2009, 16:31 |
|||
|
||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
И мы с тобой говорим об одном и том же. Но я воспринимаю достижение полиморфизма посредством приведения типов как два отдельных понятия, приведение типов и полиморфизм. Как сказал mes: А вот сам mes похоже говорит о чём-то другом. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
||||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
да да, и мне было бы интересно услышать определение этого тернмина из уст atomicxp ![]() Это сообщение отредактировал(а) mes - 3.5.2009, 16:37 |
|||
|
||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Использование множества разных сущностей единым интерфейсом. Если кто-то написал одинаковые имена, то лично для меня это не полиморфизм. А вот если независимо от имён и прочего можно брать разные сущности и применять к ним полиморфные алгоритмы, тогда это полиморфизм. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
Lazin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
ну мало-ли для кого что не полиморфизм, для меня например это полиморфизм)
![]() |
||||
|
|||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Ну, например, последовательности. С ними же можно много что делать, проходить в каком-то порядке, сортировать, у них есть единые операции, на вроде добавления, удаления и так далее. На основе этих действий пишутся полиморфные алгоритмы, и потом применяются к любым сущностям, которые так можно представить. Например, к файловой системе, элементов в списке, содержимому в файле, к xml и так далее.
Добавлено через 4 минуты и 57 секунд
Да, это полиморфизм, но это обобщённое функциональное программирование, а не обобщённое объектно-ориентированное. Иными словами полиморфизм проявляется по разному в разных парадигмах. |
|||
|
||||
mes |
|
||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
А в языке который мы рассматриваем интерфейс объектов описывается именами их методов, так что Применить не получится. ![]()
И может иметь несколько проявлений в одной и той же парадигме ![]()
для данного вопроса это неразличимо ![]() |
||||||
|
|||||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
ну так это и есть compile time полиморфизм, ведь эти алгоритмы работают и с голыми указателями, и с классами указателей, не имеющими ничего общего между собой ![]() |
|||
|
||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Просто в твоём примере надо было наследовать два класса от одного класса, потом проводить приведение типов к базовому классу и через него уже использовать нужную функциональность. Если необходимо базовый класс тоже может иметь множество его базовых классов. Полиморфизм не через наследование, а через обобщение тоже полиморфизм. Но я же нахожусь в поисках абстракций реализованных по принципу обобщённого объектно-ориентированного программирования, следовательно алгоритмы написанные по другим принципам лишь кусочки для сборки системы. |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
А какое отношение данный пример имеет к ФП?! |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
не в моем. ![]()
"Полиморфизм через наследование" - динамический полиморфизм. "Полиморфизм относительно его интерфейса" - статический (он же compile time) полиморфизм. Тут я сути не уловил ![]() Добавлено @ 17:30 то что в шаблоне была описана функция, а не класс ![]() ![]() Это сообщение отредактировал(а) mes - 3.5.2009, 17:31 |
|||
|
||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Lazin уже привёл пример. Вот как-то так и надо делать функции, то есть они должны быть не глобальными, а принадлежать классу и являться полиморфными, что опять же не исключает их обобщающую суть, которая состоит в подмене типов и генерации новых классов. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Во первых, зачем ? А во вторых, Вы слышали о "минимизации интерфейса" ? Ну а в третьих, как сторонику чистого ООП, некрасиво употреблять слово "класс". ![]() Это сообщение отредактировал(а) mes - 3.5.2009, 17:53 |
|||
|
||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Предположим у нас есть операция сложения. Вопрос как лучше её воспринимать, функцией, следуя парадигме функционального программирования или как сущность в объектно-ориентированном переопределяя однотипные методы.
В языке C++ существуют операторы, благодаря им есть возможность записывать последовательность определённых видов операций в кратком виде выражением, однако сути это не меняет. Для начала можно написать что-либо наподобие этого, все равно в последствии оно будет оптимизировано исключив повторные определения, потому что Addition и operator+ одно и тоже, а static Addition почти.
Интересен тот факт, что данный интерфейс работает прежде всего с последовательностями. Иными словами используются ли числа для полиморфного интерфейса или последовательности, но воспринимается он как единое понятие. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Во первых подобная оптимизация не относится к виртуальным функциям Во вторых зачем вообще там виртуальные функции ? Для решения задачи хватает статического полиморфизма. Я опять не уловил сути, что доказывает Ваш пример ? |
|||
|
||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
||||
|
||||
mes |
|
||||||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
То что ищете иной путь, я понял. Но не уловил в чем именно преимущества и отличия вашего подхода в отличие к примеру от стл, которой Вы, как я понял, недовольны. Прошу объяснить на пальцах, вот два кода :
Это сообщение отредактировал(а) mes - 3.5.2009, 18:56 |
||||||||||
|
|||||||||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
На таких примитивных примерах почти не о чём говорить. Кардинальные различия будут видны при построении системы из множества понятий. Пока можешь принять как факт, что STL это обобщённое функциональное программирование, так же как и Boost. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Тогда хотелось бы услышать от Вас трактовку двух понятий : 1. обобщённое функциональное программирование 2. обобщённое объективное программирование |
|||
|
||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Вот я о том и говорю, ты называешь обобщённое объектно-ориентированное программирование - объективным, как будь-то тебе даже все равно как оно называется. А для того, чтобы понять ООП надо мыслить по другому и ориентироваться на объекты, а не на функции. |
|||
|
||||
mes |
|
||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
ну предположим, так как вначале надо разобраться как мыслит автор.
могу я спросить, Вы будете нас просвещать ? или ограничетесь лишь абстрактными высказываниями ? ![]() и в чaстности :
Добавлено через 1 минуту и 41 секунду а также , если можно |
||||||
|
|||||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
А я здесь вовсе не для того, чтобы кого-то чему-либо учить. Просто мысли вслух о создании абстрактного ядра. Определение: 1. Функциональное программирование 2. Обобщённое объективное программирование - не знаю такого Это сообщение отредактировал(а) atomicxp - 3.5.2009, 20:06 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Ну и где общее между приведенной по ссылке парадигмой и воплощением стл ?! Ну так сами же писали про обобщенное объектноориентирование программирование ОООП ![]() Понятно. Просто высказываетесь, а я то думал Вы ради дискуссии открыли тему. |
|||
|
||||
atomicxp |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Несмотря на то, что операции сложения и вычитания являются сущностями, их функции естественно называются по другому, а именно суммой и разностью. В книге "Совершенный код" рекомендуют именовать функции с типом не void по возвращаемому результату. В следствии этого проведено маленькое изменение, одно из многих предстоящих в будущем.
Срочное сообщение, специально для mes. Посмотри пример, в нём наглядно показано, чем отличается объектно-ориентированное программирование от функционального. В функциональном у тебя бы не было сущности операции, была бы только функция возвращающее по какому-либо алгоритму значение. Добавлено через 2 минуты и 3 секунды
Ну скажем так, если меня будут поправлять, когда буду ошибаться насчёт ООП, я совсем не буду против. Однако если кто-то хочет программировать в функциональном стиле, я не хочу им мешать. |
||||
|
|||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Чтоб поправлять, надо понять что Вы подразумеваете, а Вы пока не очень ясны в объяснениях. А насчет поправки : то, что Вы называетe функциональным стилем программированием, называется - процедурным. ![]() Добавлено @ 20:45
Может я и не хочу, и хотел бы применить Ваш подход, но Вы к сожалению не пытаетесь донести отличие от стандартного. Добавлено @ 20:45
Может я и не хочу по старому, и хотел бы применить Ваш подход, но Вы, к сожалению, не пытаетесь донести отличие от стандартного. Это сообщение отредактировал(а) mes - 3.5.2009, 20:46 |
||||
|
|||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Очевидно ты не читал топик из которого пришла эта тема. Там я уже рассказал, что процедурное программирование оно же функциональное. Сейчас я употребляю функциональное, потому что в C++ отсутствует понятие процедура, вместо этого в возвращаемом значении применяется пустой тип - void. Ну и второе объяснение, почему весь тот топик я именовал программирование процедурным, а сейчас называют функциональным, потому что я целиком и полностью сосредоточился на C++. И есть такая книга "Язык программирования C++" автор Бьерн Страуструп, так вот он называет этот вид программирования функциональным, а не процедурным. Пока что от тебя вижу не обсуждения, а придирки, и это довольно скучно. Прочитай с 10 по 15 главу только что упомянутой книги, раздел называется "Механизмы абстракции". А то так мы попросту ни о чём говорим. |
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Перед тем как поправить, я спросил, что Вы подразумеваете под этими терминами . Однако Вы ответили не :
a : Если для Вас это одно и то же, то тогда я не вижу смысла в поправках, да и в дальнейшем участии в этой теме. Еще раз успехов в этом нелегком деле. Это сообщение отредактировал(а) mes - 3.5.2009, 21:01 |
||||
|
|||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Я не хочу возвращаться к теме как корпорации нас имеют подменяя понятия на те которые им выгодны. Хочешь воспринимать функциональное программирование по другому, не как процедурное, твоё право. Лишь логическое и объектно-ориентированное программирование имеют реальное, а не выдуманное пиарщиками отличие. Добавлено через 9 минут и 4 секунды А вообще всё это печально, люди якобы понимают разницу между функциональным и процедурным программированием, но ничего не смыслят в ООП. ![]() |
|||
|
||||
mes |
|
||||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Не смог удержаться чтоб не ответить.
Однако переняли их традицию, по крайней мере в этой теме.
Если бы Вы внимательно читали, то я не один раз выражал желание понять Вашу точку зрения, однако...
Откуда такая уверенность ?!
А вот это в самую точку. Как в зеркало в воду глядите ! ![]() Это сообщение отредактировал(а) mes - 3.5.2009, 21:55 |
||||||||
|
|||||||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Какой ты mes неугомонный
![]() |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
Перед этим приводишь ссылку на вики... ТЫ это.. читать не пробовал, что по ссылке? ![]() Как там принято в таких случаях? Во, нашёл - ![]() |
|||
|
||||
Lazin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
в ООП нет методов, опомнись ![]() методы, это такая штука, которую придумали для того, что-бы всякие so-called programmers, привыкшие мыслить категориями процедурного программирования, не заблудились в мире чистого ООП ![]() впрочем, классы придумали для того-же)
В функциональном программировании у тебя бы была операция, которая бы являлась объектом сама по себе, и возможно была-бы полиморфной, и применяя ее к входным параметрам ты бы получал не значение, а другую ф-ю, но только без параметров ))
давай будем называть вещи своими именами, есть ФП, а есть процедурное программирование ту тему не читал, так как не располагаю бесконечным количеством свободного вермени... |
||||
|
|||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
В том то и дело, что я хочу называть вещи своими именами, иначе хавал бы что дают и радовался. Размытые абстракции меня не устраивают, когда одна немножечко A и B, а другая немножечко B и C. А написано буквально следующее, си подобные языки (значит и C++) ведут себя как процедурные, но с указателем на функцию получается уже функциональные, а если ещё учесть механизмы абстракций, то C++ ещё и объектно-ориентированный, но это не всё, он так же позволяет работать в обобщённом стиле подставляя типы. Prolog обозвали функционально-логическим, то есть девушка немножко беременна. Кто как хочет, но лично я не хочу жить в мире размытых абстракций, когда закон как дышло, как повернул так и вышло. Добавлено через 1 минуту и 49 секунд Что-то новенькое, в C++ классе есть элементы - поля и методы. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
ну и что? ![]() |
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Ну Вам уже выше говорилось, что Cpp только издали напоминает чистое ООП, а Вы все туда же ![]()
А вы считайте что в C++ нет функций, только процедуры. И называются они именно функциями по той случайности, что на тот момент было принято условное деление, что подпрограмма возвращающая результат называется функцией, а не возвращающая процедурой.
А вот то что человек может быть одновременно (к примеру) : и внук, и дед, и сын, и отец, и муж, и брат, и друг, и работник и т.д. Вас не смущает ? Ну так тогда может начать действовать. Для начала определить термины, от которых можно было б отталкиваться, а то пока кроме наведения мрака и выкрика несколько неясно-абстрактных фраз, которые вполне можно отнести ко флуда, ничего в теме нет. Но я все ж надеюсь, что это была разминка, и Вы в конце сможете объяснить свои взгляды, и показать нам наши ошибки и заблуждения. Как говорится, назвался груздем, полезай в кузов. Мы в Вас верим, не обманите наши надежды ![]() Это сообщение отредактировал(а) mes - 3.5.2009, 23:03 |
||||
|
|||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
1. процедурное - данные как аргументы 2. функциональное - функции как аргументы 3. обобщённое - типы как аргументы 4. объектно-ориентированное - создание типов Если кому не нравятся мои определения, поправляйте. Первые три грубо для себя обзываю пробросом, они меня мало волнуют поскольку в них нет ничего особенного. Причём первое и второе изложены до десятой главы книги "Язык программирования C++", то есть не относятся к механизмам абстракций о которых идёт речь. Четвёртое является способом группировки и использования сущностей. Оно не отменяет первое, второе и третье, наоборот переводит на новый уровень. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Позволил себе написать свою трактовку, и заодно изменить порядок.
1. процедурное - вид структурного программирования, при котором выделяются подпрограммы, выраженные как действие над данным. 2. функциональное - ..., выраженные, как действие над действием. 3 . объектно-ориентированное - ..., выраженные как законченный объект. 4. обобщенное - описание общих действий для сущностей разных типов. При этом
![]() |
|||
|
||||
baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
atomicxp, не понимаю, чего ты добиваешься.
ОООП - твоя маленькая выдумка скрестить ужа с ежом (как раньше никто до этого не додумался?). может, выдумка неплохая, но её надо формально определить. это будет не как два паль так просто, т.к. определения обобщенного и ОО программирования не очень просты и создавались множеством неглупых людей годами, и до сих пор не закончены. Итак, чего? Абстракция ради абстракции? Бессмысленно. Борешься за чистоту ООП? Возьми чистый ООП язык. С++ тоньше и сложнее. Но судя по примерам достигать целей ты намерен используя всю мощь С++. Видимо для того, что бы пользователь ограничился одной парадигмой. ![]() Базар (именно так, простите) о терминологии показался смешным: есть общепринятые разумные определения. Почему бы не пользоваться ими? Некоторые, возможно, стоит сначала изучить. Тогда не будет казусов с ФП из-за того, что Страуструп написал "functional" (он то это сделал лишь потому, что в С и С++ "functions"). Если нужны новые термины - вводите, определяйте, но не путайте с тем что уже есть. Я не вижу никаких преимуществ class IAddition. Я не вижу преимуществ делать синус и косинус объектами. Тяга к прекрасному? Возможно, и то только потому, что о вкусах не спорят. Кстати заметь: и арифметические операции, и синусы с косинусами таки являются объектами, только в метамодели, т.е. это экземпляры предопределенных (компилятором, языком, Создателем) классов. Пожалуйста, можешь мыслить так, и ничего писать не придется. В общем по-моему ты пытаешься мыслить сложно для того, что бы мыслить просто. Еще одно. Инженерные решения (а это именно то, созданием чего мы все занимаемся) это компромиссные решения. Сложная инженерия как правило использует синтез методов, это эффективно. Именно поддержкой ряда мощных методов (парадигм) и силен С++. Зачем же от этого отказываться? Возьмем пресловутый boost: поглядите хотя бы на Spirit, это отличный пример удачного сочетания различных парадигм. И ООП там, что бы ты не говорил, используется, и используется грамотно - в нужных местах, в нужном объеме, в полном соответствии с принципами ООП. ЗЫ: меня лично трясет, когда я вижу
Ну какой тут к черту класс! Но зато ООП: инкапсуляция, да. ЗЗЫ: был один политический деятель, ему в америке достижения выращивания кормов показали, так мы потом кукурузу на завтрак обед и ужин |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |