Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> В поисках совершенных абстракций 
:(
    Опции темы
Любитель
Дата 3.5.2009, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: нет
Всего: 92



Цитата(atomicxp @  3.5.2009,  20:51 Найти цитируемый пост)
Очевидно ты не читал топик из которого пришла эта тема. Там я уже рассказал, что процедурное программирование оно же функциональное.

Перед этим приводишь ссылку на вики... ТЫ это.. читать не пробовал, что по ссылке? smile 

Цитата(atomicxp @  3.5.2009,  21:12 Найти цитируемый пост)
Хочешь воспринимать функциональное программирование по другому, не как процедурное, твоё право. Лишь логическое и объектно-ориентированное программирование имеют реальное, а не выдуманное пиарщиками отличие.

Как там принято в таких случаях? Во, нашёл - smile 


--------------------
PM MAIL ICQ Skype   Вверх
Lazin
Дата 3.5.2009, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



Цитата(atomicxp @  3.5.2009,  18:21 Найти цитируемый пост)
Предположим у нас есть операция сложения. Вопрос как лучше её воспринимать, функцией, следуя парадигме функционального программирования или как сущность в объектно-ориентированном переопределяя однотипные методы.

в ООП нет методов, опомнись smile 
методы, это такая штука, которую придумали для того, что-бы всякие so-called programmers, привыкшие мыслить категориями процедурного программирования, не заблудились в мире чистого ООП smile 
впрочем, классы придумали для того-же)
Цитата(atomicxp @  3.5.2009,  20:36 Найти цитируемый пост)
В функциональном у тебя бы не было сущности операции, была бы только функция возвращающее по какому-либо алгоритму значение.

В функциональном программировании у тебя бы была операция, которая бы являлась объектом сама по себе, и возможно была-бы полиморфной, и применяя ее к входным параметрам ты бы получал не значение, а другую ф-ю, но только без параметров ))
Цитата(atomicxp @  3.5.2009,  20:51 Найти цитируемый пост)
Очевидно ты не читал топик из которого пришла эта тема. Там я уже рассказал, что процедурное программирование оно же функциональное.

давай будем называть вещи своими именами, есть ФП, а есть процедурное программирование
ту тему не читал, так как не располагаю бесконечным количеством свободного вермени...
PM MAIL Skype GTalk   Вверх
atomicxp
  Дата 3.5.2009, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 2.5.2009
Где: Удмуртия, Ижевск

Репутация: нет
Всего: 1



Цитата(Lazin @  3.5.2009,  22:19 Найти цитируемый пост)
давай будем называть вещи своими именами, есть ФП, а есть процедурное программирование

В том то и дело, что я хочу называть вещи своими именами, иначе хавал бы что дают и радовался. Размытые абстракции меня не устраивают, когда одна немножечко A и B, а другая немножечко B и C. А написано буквально следующее, си подобные языки (значит и C++) ведут себя как процедурные, но с указателем на функцию получается уже функциональные, а если ещё учесть механизмы абстракций, то C++ ещё и объектно-ориентированный, но это не всё, он так же позволяет работать в обобщённом стиле подставляя типы.

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

Добавлено через 1 минуту и 49 секунд
Цитата(Lazin @  3.5.2009,  22:19 Найти цитируемый пост)
в ООП нет методов, опомнись smile 

Что-то новенькое, в C++ классе есть элементы - поля и методы.
PM MAIL WWW Skype GTalk Jabber   Вверх
Lazin
Дата 3.5.2009, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



Цитата(atomicxp @  3.5.2009,  22:42 Найти цитируемый пост)
Что-то новенькое, в C++ классе есть элементы - поля и методы.

ну и что? smile 
PM MAIL Skype GTalk   Вверх
mes
Дата 3.5.2009, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(atomicxp @  3.5.2009,  21:42 Найти цитируемый пост)
Что-то новенькое, в C++ классе есть элементы - поля и методы.

Ну Вам уже выше говорилось, что Cpp только издали напоминает чистое ООП, а Вы все туда же  smile 

Цитата(atomicxp @  3.5.2009,  21:42 Найти цитируемый пост)
ведут себя как процедурные, но с указателем на функцию получается уже функциональные,

А вы считайте что в C++ нет функций, только процедуры. И называются они именно функциями по той случайности, что на тот момент было принято условное деление, что подпрограмма возвращающая результат называется функцией, а не возвращающая процедурой.

Цитата(atomicxp @  3.5.2009,  21:42 Найти цитируемый пост)
Prolog обозвали функционально-логическим, то есть девушка немножко беременна

А вот то что человек может быть одновременно (к примеру) : и внук, и дед, и сын, и отец, и муж, и брат, и друг, и работник и т.д. Вас не смущает ?

Цитата(atomicxp @  3.5.2009,  21:42 Найти цитируемый пост)
но лично я не хочу жить в мире размытых абстракций

Ну так тогда может начать действовать. Для начала определить термины, от которых можно было б отталкиваться,
а то пока кроме наведения мрака и выкрика несколько неясно-абстрактных фраз, которые вполне можно отнести ко флуда, ничего в теме нет.
Но я все ж надеюсь, что это была разминка, и Вы в конце сможете объяснить свои взгляды, и показать нам наши ошибки и заблуждения.
Как говорится, назвался груздем, полезай в кузов. Мы в Вас верим, не обманите наши надежды smile




Это сообщение отредактировал(а) mes - 3.5.2009, 23:03


--------------------
PM MAIL WWW   Вверх
atomicxp
  Дата 3.5.2009, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 2.5.2009
Где: Удмуртия, Ижевск

Репутация: нет
Всего: 1



Цитата(mes @  3.5.2009,  23:01 Найти цитируемый пост)
Для начала определить термины, от которых можно было б отталкиваться

1. процедурное - данные как аргументы
2. функциональное - функции как аргументы
3. обобщённое - типы как аргументы

4. объектно-ориентированное - создание типов

Если кому не нравятся мои определения, поправляйте. Первые три грубо для себя обзываю пробросом, они меня мало волнуют поскольку в них нет ничего особенного. Причём первое и второе изложены до десятой главы книги "Язык программирования C++", то есть не относятся к механизмам абстракций о которых идёт речь.

Четвёртое является способом группировки и использования сущностей. Оно не отменяет первое, второе и третье, наоборот переводит на новый уровень.
PM MAIL WWW Skype GTalk Jabber   Вверх
mes
Дата 4.5.2009, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Позволил себе написать свою трактовку, и заодно изменить порядок.

1. процедурное   - вид структурного программирования, при котором выделяются подпрограммы, выраженные как действие над данным.
2. функциональное  -  ..., выраженные, как действие над действием.
3 . объектно-ориентированное - ..., выраженные как законченный объект.

4. обобщенное -  описание общих действий для сущностей разных типов.
При этом
Цитата(atomicxp @  3.5.2009,  22:34 Найти цитируемый пост)
Четвёртое является способом группировки и использования сущностей. 

smile



--------------------
PM MAIL WWW   Вверх
baldina
Дата 4.5.2009, 03:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



atomicxp, не понимаю, чего ты добиваешься.

Цитата

Создаётся для увеличения уровня абстракций, поскольку обычные библиотеки не соответствую принципам обобщённого объектно-ориентированного программирования.


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

Итак, чего?
Абстракция ради абстракции? Бессмысленно.
Борешься за чистоту ООП? Возьми чистый ООП язык. С++ тоньше и сложнее. Но судя по примерам достигать целей ты намерен используя всю мощь С++. Видимо для того, что бы пользователь ограничился одной парадигмой.  smile 

Базар (именно так, простите) о терминологии показался смешным: есть общепринятые разумные определения. Почему бы не пользоваться ими? Некоторые, возможно, стоит сначала изучить. Тогда не будет казусов с ФП из-за того, что Страуструп написал "functional" (он то это сделал лишь потому, что в С и С++ "functions").
Если нужны новые термины - вводите, определяйте, но не путайте с тем что уже есть.

Я не вижу никаких преимуществ class IAddition. Я не вижу преимуществ делать синус и косинус объектами. Тяга к прекрасному? Возможно, и то только потому, что о вкусах не спорят. 
Кстати заметь: и арифметические операции, и синусы с косинусами таки являются объектами, только в метамодели, т.е. это экземпляры предопределенных (компилятором, языком, Создателем) классов. Пожалуйста, можешь мыслить так, и ничего писать не придется.

В общем по-моему ты пытаешься мыслить сложно для того, что бы мыслить просто.

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

ЗЫ: меня лично трясет, когда я вижу
Код

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}


Ну какой тут к черту класс! Но зато ООП: инкапсуляция, да.
ЗЗЫ: был один политический деятель, ему в америке достижения выращивания кормов показали, так мы потом кукурузу на завтрак обед и ужин
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0965 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.