Re[18]: Процедурное программирование vs ООП
От: Fortnum  
Дата: 29.05.12 13:30
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Процедурное программирование выглядит очень по-разному. Без использования каких-либо популярных парадигм, в структурном программировании получается одно такое глобальное состояние. Тоже вполне работает на небольших задачах...


А парадигма состояния и кода, состояние это изменяющего, — это парадигма ООП или концепция из другой парадигмы в ООП украденная?
Re[22]: Процедурное программирование vs ООП
От: 0x7be СССР  
Дата: 29.05.12 13:34
Оценка:
Здравствуйте, FR, Вы писали:

FR>Его нет.

FR>И тут я его тоже не вижу.
Ну, вообще тут напрашивается абстрактный класс Brush и наследники — hatch, solid, pattern.
Хотя, то же самое может быть достигнуто полиморфизмом.
Re[25]: Язык ДРАКОН — новая идея в программировании
От: 0x7be СССР  
Дата: 29.05.12 13:36
Оценка: +2
Здравствуйте, grosborn, Вы писали:

G>Вы вдвоем вполне можете схлопнуться и аннигилировать без моего участия.

Но ты и правда не привел ни одного нормального аргумента.
Я прочитал Ваш спор — с твоей стороны исключительно эмоции в стиле "ну туп-ы-ы-ые!" и все.
Re[27]: Язык ДРАКОН — новая идея в программировании
От: samius Япония http://sams-tricks.blogspot.com
Дата: 29.05.12 13:39
Оценка:
Здравствуйте, FR, Вы писали:

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



V>>Ну и напоследок. Когда ООП еще не было столь популярно уже успел оформиться в модульном программировании некий стиль "хорошего тона" — в точности такой же, как я показал на примере Speex. Дело оставалось за малым — поддержать этот стиль в языках. Но от языковой поддержки ничего существенного не изменилось (кроме синтаксиса) для таких программ, написанных по правилам "хорошего тона" для модульного ПО.


FR>Это структурное программирование + абстрактные типы данных + модульность.

FR>И сформировалось оно все-таки пораньше чем мейнстримный сейчас (C++/C#/Java) ООП.
FR>И это по моему не ООП, наследования нет и полиморфизм без виртуальных методов.
В минимальном наборе фич Пирса и К указана альтренатива наследованию — делегирование. А виртуальные методы там вообще не значатся. Это лишь инструмент для диспетчеризации, которая возможна и без них. Т.е. наследование и виртуальные методы не являются обязательными фичами ООП.
Re[23]: Процедурное программирование vs ООП
От: FR  
Дата: 29.05.12 13:44
Оценка: +2
Здравствуйте, 0x7be, Вы писали:

FR>>И тут я его тоже не вижу.


0>Ну, вообще тут напрашивается абстрактный класс Brush и наследники — hatch, solid, pattern.


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

type brush = Hatch | Solid | Pattern


и это эмуляция ФП

0>Хотя, то же самое может быть достигнуто полиморфизмом.


Там и так полиморфизм.
Re[28]: Язык ДРАКОН — новая идея в программировании
От: FR  
Дата: 29.05.12 13:47
Оценка:
Здравствуйте, samius, Вы писали:

FR>>Это структурное программирование + абстрактные типы данных + модульность.

FR>>И сформировалось оно все-таки пораньше чем мейнстримный сейчас (C++/C#/Java) ООП.
FR>>И это по моему не ООП, наследования нет и полиморфизм без виртуальных методов.
S>В минимальном наборе фич Пирса и К указана альтренатива наследованию — делегирование. А виртуальные методы там вообще не значатся. Это лишь инструмент для диспетчеризации, которая возможна и без них. Т.е. наследование и виртуальные методы не являются обязательными фичами ООП.

Я про мейнстримный ооп.
Но даже без этого делегирования что-то не видно в тех же Brush Functions например.
Re[17]: Процедурное программирование vs ООП
От: 11molniev  
Дата: 29.05.12 13:54
Оценка:
Здравствуйте, artelk, Вы писали:

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


S>>Если вас интересует, как выглядит просто процедурное программирование, ознакомьтесь со старым C RTL с его FILE*


A>За FILE* может скрываться, например, pipe. Т.е. тут тоже полиморфизм.

Так вроде будет скрываться на уровне ОС? Файловый int/handle и скрывает.
Re[24]: Процедурное программирование vs ООП
От: 0x7be СССР  
Дата: 29.05.12 13:54
Оценка: +1 :)
Здравствуйте, FR, Вы писали:

FR>А это уже замыленный ООП взгляд

А то!

FR>А я могу сказать что вижу размазанный алгебраический тип данных

А это уже замыленный функциональный взгляд
Re[2]: [UML] Процедурное программирование vs ООП
От: 11molniev  
Дата: 29.05.12 14:00
Оценка: +1
Здравствуйте, Fortnum, Вы писали:

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


>>> Согласен. Вас надули.

>>> Надули с "новизной" ООП и прочих ископаемых аспектов.
G>>Ты вообще о чем? Типа про отсутствие новизны при переходе от процедурного программирования со структурами данных к ООП стилю программирования? Это как бы "и там и там текст и буквы, значит в любой книге нет ничего нового"?

F>Простой вопрос. Разработано ли для WinAPI и подобных псевдообъектно-ориентированных систем что-нибудь вроде UML и каких-либо методологий? Если нет, то назвать WinAPI объектно-ориентированной системой нельзя. Пресловутые полиморфизм с инкапсуляцией и т.п. можно разглядеть в совершенно неожиданных местах. Но это не значит что все, где это можно разглядеть, разрабатывалось с объектно-ориентированной парадигмой в уме. Действительно, если шимпанзе ходит на двух ногах — это еще не повод называть шимпанзе человеком. Сервис ориентированная архитектура — это ООП или не ООП? Пока не сможете ткнуть пальцем в конкретную методологию реализации, все эти рассуждения, является ли WinAPI объектно-ориентированной системой или не является — полная аналогия с эпизодом "синкопа-не-синкопа" в одном известном фильме.


Как минимум обратное тоже не верно. Нельзя однозначно утверждать, что WinAPI не является ООП подходом.
А насчет UML — ДА, разработано. Вы забыли, что UML это не только модель классов.
Re[29]: Язык ДРАКОН — новая идея в программировании
От: samius Япония http://sams-tricks.blogspot.com
Дата: 29.05.12 14:16
Оценка: +1
Здравствуйте, FR, Вы писали:

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


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


FR>Я про мейнстримный ооп.

FR>Но даже без этого делегирования что-то не видно в тех же Brush Functions например.
Так делегирование ведь не должно торчать из каждой строчки. В WinAPI оно в наличии. А конкретно в Brush Functions — можно лишь догадываться. Реализацию я не видел. Вполне возможно что оно реализовано с помощью делегирования, а может за C-style фасадом скрывается реализация всамделешными классами C++ и наследованием. Если и нет, то оно могло бы быть таким в Вынь10.
Re[3]: [UML] Процедурное программирование vs ООП
От: Fortnum  
Дата: 29.05.12 14:18
Оценка: -1
Здравствуйте, 11molniev, Вы писали:

F>>Простой вопрос. Разработано ли для WinAPI и подобных псевдообъектно-ориентированных систем что-нибудь вроде UML и каких-либо методологий? Если нет, то назвать WinAPI объектно-ориентированной системой нельзя. Пресловутые полиморфизм с инкапсуляцией и т.п. можно разглядеть в совершенно неожиданных местах. Но это не значит что все, где это можно разглядеть, разрабатывалось с объектно-ориентированной парадигмой в уме. Действительно, если шимпанзе ходит на двух ногах — это еще не повод называть шимпанзе человеком. Сервис ориентированная архитектура — это ООП или не ООП? Пока не сможете ткнуть пальцем в конкретную методологию реализации, все эти рассуждения, является ли WinAPI объектно-ориентированной системой или не является — полная аналогия с эпизодом "синкопа-не-синкопа" в одном известном фильме.


1>Как минимум обратное тоже не верно. Нельзя однозначно утверждать, что WinAPI не является ООП подходом.


Сама жизнь является ООП-подходом, а что с того? Есть конкретные системы для разработки конкретного результата. А что дают рассуждения, насколько процедурная WinAPI соответствует перечисленным человеком Х необходимым и достаточным требованиям? А перечисленным человеком Y? А являются ли эти требования действительно достаточными и действительно необходимыми? Все это софистика: "Стакан наполовину полон или наполовину пуст". Не более того.

1>А насчет UML — ДА, разработано. Вы забыли, что UML это не только модель классов.


Ссылку на конкретную книгу дайте, пожалуйста. Лично я не встречал таких книг или методологий, которые бы показывали и предписывали как же все-таки следует правильно и почему на колбэках строить наследование на процедурных языках. Максимум — какие-нибудь внутрикорпоративные конвенции, которые нигде не являются стандартом кроме как у конкретной группы разработчиков в конкретной организации в конкретное время. И если эти ad-hoc конвенции удовлетворяют каким-то или даже всем пунктам, перечисленным X или Y, это не делает эти конвенции ОО-системами программирования. Только в сознании отдельных ее создателей, которые теми или иными конкретными способами взяли и решили конкретные проблемы. Потому что если рассуждать как вы, в названиях GetWindowTextA и GetWindowTextW можно увидеть полиморфизм и проникнуться глубиной ОО-миросозерцания авторов этой конвенции. Непонятно только, почему никто так же не делает?
Re[27]: Язык ДРАКОН — новая идея в программировании
От: vdimas Россия  
Дата: 29.05.12 14:33
Оценка:
Здравствуйте, FR, Вы писали:

V>>Ну и напоследок. Когда ООП еще не было столь популярно уже успел оформиться в модульном программировании некий стиль "хорошего тона" — в точности такой же, как я показал на примере Speex. Дело оставалось за малым — поддержать этот стиль в языках. Но от языковой поддержки ничего существенного не изменилось (кроме синтаксиса) для таких программ, написанных по правилам "хорошего тона" для модульного ПО.


FR>Это структурное программирование + абстрактные типы данных + модульность.

FR>И сформировалось оно все-таки пораньше чем мейнстримный сейчас (C++/C#/Java) ООП.
FR>И это по моему не ООП, наследования нет и полиморфизм без виртуальных методов.

Виртуальные методы там есть, ес-но, полиморфизм работает на указателях на ф-ии. Просто таблица виртуальных ф-ий описана "ручками". Наследование структур — агрегация. Наследование поведения — повторное использование кода над агрегированными структурами. Там это всё в полный рост. Сдается мне, что язык С был выбран по соображениям более широкого распространения компилятора и ни по каким причинам более.

Про абстрактные типы данных замечание уже делал рядом: структурное программирование + абстрактные типы данных — это и есть ООП, ИМХО. Просто в мейнстриме популярен такой синтаксис, что ф-ии переползли в т.н. "методы". Но ведь так не везде: например, в объектном Лиспе методы объектов оформлены как внешние ф-ии, как в показанном примере с кодеком. ИМХО, это всего-лишь детали синтаксиса используемого языка, не особо влияющие на подход к проектированию и реализации.
Re[24]: Процедурное программирование vs ООП
От: vdimas Россия  
Дата: 29.05.12 14:46
Оценка:
Здравствуйте, FR, Вы писали:

FR>А это уже замыленный ООП взгляд

FR>А я могу сказать что вижу размазанный алгебраический тип данных

FR>
FR>type brush = Hatch | Solid | Pattern
FR>


FR>и это эмуляция ФП


АлгТД — это никакая не эмуляция ФП.
ФП — это отсутствие мутабельных состояний + ФВП.

А способ диспетчеризации для достижения полиморфизма не принципиален. Для простых перечислений в ПМ вроде бы и так и так таблица диспетчеризации получается.
Re[22]: Процедурное программирование vs ООП
От: vdimas Россия  
Дата: 29.05.12 14:51
Оценка:
Здравствуйте, Fortnum, Вы писали:


F>Ага, а современные машины отличаются от первых тарантасов наличием парктроника.


Абстрактные типы данных — это уже не такой уж и тарантас. По меркам автомобилестроения это как минимум 60-е. Дизайн и ходовая ходовая порша с тех пор не особо изменились.

А так-то да... ничего нового. Электромобили были еще в начале века. Ни принцип действия, ни КПД, ни массо-габаритные показатели электромоторов фактически не изменилось за это время, се ля ви. (Всё уже было изобретено и отшлифовано на электростанциях). Существенный прогресс был только в технологии аккумуляторов.
Re[19]: Процедурное программирование vs ООП
От: vdimas Россия  
Дата: 29.05.12 14:54
Оценка:
Здравствуйте, Fortnum, Вы писали:

F>А парадигма состояния и кода, состояние это изменяющего, — это парадигма ООП или концепция из другой парадигмы в ООП украденная?


Не понял, кто кого у кого украл? Изначально программы рассматривались как описание работы эквивалентного автомата. Переход от глобального состояния к динамически создаваемым экземплярам взаимодействующих автоматов и был переходом к современной концепции ООП.

Что сказать-то хотел?
Re[28]: Язык ДРАКОН — новая идея в программировании
От: FR  
Дата: 29.05.12 14:55
Оценка:
Здравствуйте, vdimas, Вы писали:

FR>>Это структурное программирование + абстрактные типы данных + модульность.

FR>>И сформировалось оно все-таки пораньше чем мейнстримный сейчас (C++/C#/Java) ООП.
FR>>И это по моему не ООП, наследования нет и полиморфизм без виртуальных методов.

V>Виртуальные методы там есть, ес-но, полиморфизм работает на указателях на ф-ии. Просто таблица виртуальных ф-ий описана "ручками".


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

А в си вообще, да нормальная практика.

V>Наследование структур — агрегация. Наследование поведения — повторное использование кода над агрегированными структурами. Там это всё в полный рост.


Снаружи что-то не видно.
Наоборот почти везде в прозрачных структурах явный cbSize или отдельная EX структура.

V>Сдается мне, что язык С был выбран по соображениям более широкого распространения компилятора и ни по каким причинам более.


Это да, хотя ходят смутные слухи что был сначала паскаль.

V>Про абстрактные типы данных замечание уже делал рядом: структурное программирование + абстрактные типы данных — это и есть ООП, ИМХО. Просто в мейнстриме популярен такой синтаксис, что ф-ии переползли в т.н. "методы". Но ведь так не везде: например, в объектном Лиспе методы объектов оформлены как внешние ф-ии, как в показанном примере с кодеком. ИМХО, это всего-лишь детали синтаксиса используемого языка, не особо влияющие на подход к проектированию и реализации.


С этим я не согласен.
Тот же полиморфизм на виртуальных функциях с наследованием очень существенно меняет структуру кода,
и на си в таком стиле писать очень неудобно.
Re[28]: Язык ДРАКОН — новая идея в программировании
От: Fortnum  
Дата: 29.05.12 14:57
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Про абстрактные типы данных замечание уже делал рядом: структурное программирование + абстрактные типы данных — это и есть ООП, ИМХО. Просто в мейнстриме популярен такой синтаксис, что ф-ии переползли в т.н. "методы".


Помнится вы утверждали
Автор: vdimas
Дата: 28.05.12
, что "Windows API — это самая настоящая ОО-концепция". Так где в WinAPI используются "абстрактные типы данных"? Или таковыми вы считаете соглашение WinAPI об использовании первого поля структур для sizeof? Хм, по-вашему, вдруг получается, что Windows API — это уже не настоящая ОО-концепция, или как? Или сейчас будете играть понятиями "концепция", "принцип", "парадигма" и т.п.?
Re[25]: Процедурное программирование vs ООП
От: FR  
Дата: 29.05.12 14:57
Оценка:
Здравствуйте, vdimas, Вы писали:


FR>>и это эмуляция ФП


V>АлгТД — это никакая не эмуляция ФП.

V>ФП — это отсутствие мутабельных состояний + ФВП.

Остальное подтянется за АлгТД

V>А способ диспетчеризации для достижения полиморфизма не принципиален. Для простых перечислений в ПМ вроде бы и так и так таблица диспетчеризации получается.


Нет только не это
Re[23]: Процедурное программирование vs ООП
От: Fortnum  
Дата: 29.05.12 14:59
Оценка:
Здравствуйте, vdimas, Вы писали:

F>>Ага, а современные машины отличаются от первых тарантасов наличием парктроника.

V>Абстрактные типы данных — это уже не такой уж и тарантас. По меркам автомобилестроения это как минимум 60-е. Дизайн и ходовая ходовая порша с тех пор не особо изменились.
V>А так-то да... ничего нового. Электромобили были еще в начале века. Ни принцип действия, ни КПД, ни массо-габаритные показатели электромоторов фактически не изменилось за это время, се ля ви. (Всё уже было изобретено и отшлифовано на электростанциях). Существенный прогресс был только в технологии аккумуляторов.

Ну хотя бы микроконтроллеры возьмите в расчет.
Re[20]: Процедурное программирование vs ООП
От: Fortnum  
Дата: 29.05.12 15:04
Оценка: 1 (1)
Здравствуйте, vdimas, Вы писали:

F>>А парадигма состояния и кода, состояние это изменяющего, — это парадигма ООП или концепция из другой парадигмы в ООП украденная?

V>Не понял, кто кого у кого украл? Изначально программы рассматривались как описание работы эквивалентного автомата. Переход от глобального состояния к динамически создаваемым экземплярам взаимодействующих автоматов и был переходом к современной концепции ООП.
V>Что сказать-то хотел?

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