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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ООП маст дай! 
:(
    Опции темы
djamshud
Дата 27.9.2010, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


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

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



mes,

>а терь можно узнать пару тройку фактов почему ? 

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


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
A5uKa
  Дата 27.9.2010, 07:36 (ссылка)  | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

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



Доброе утро.
Цитата

Помимо того, что детей плохому учат

Про IT в образовании вообще отдельный вопрос, по крайней мере в этой стране.

п.с. Я за процедурное программирование и функциональный подход.
PM   Вверх
Shaggie
Дата 27.9.2010, 10:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

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



Цитата(djamshud @  27.9.2010,  01:05 Найти цитируемый пост)
Вас заставили в этом поверить учителя-адепты, из-за чего ООП и занял свою "нишу".

А власти скрывают!

Цитата(djamshud @  27.9.2010,  00:14 Найти цитируемый пост)
сейчас стараюсь самые высокоуровневые вещи <...> реализация основных модулей на С, иногда "С с классами и темплейтами", над этим иногда выстраивается интерфейс из "C с классами и наследованием".

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

Цитата(djamshud @  27.9.2010,  01:30 Найти цитируемый пост)

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

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

Цитата(djamshud @  27.9.2010,  01:58 Найти цитируемый пост)
Помимо того, что детей плохому учат, есть и вполне практические доводы против. Но опять не всего ООП, а того, как и в каком качестве оно используется.

И что плохого в использовании ООП подхода в программировании?


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
MAKCim
Дата 27.9.2010, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



инкапсуляция, полиморфизм и наследование хороши как концепции
какая разница, какой язык, есть там классы или нет?

пример
ядро linux - сплошное ООП и выглядит это все логично, красиво, расширяемо
мне достаточно


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
djamshud
Дата 27.9.2010, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


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

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



Пост был пропатчен. Shaggie, заголовок лишь для провокации флейма. Это ж раздел с холиворами!

Добавлено через 11 минут и 54 секунды
А, забыл. Православный ООП - это тот, что отписан в bluebook (это тот блюбук, который про смолток 80).


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Vex
Дата 28.9.2010, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 2
Всего: 88



Главное, чтобы ООП не лишали здравого смысла как например это сделли в С#. Вот какого фига оттуда убрали локальные функции? Почему они в Делфи есть а в С# нет? В результате приходится подпрограммы выносить на уровни метода, а это логический ###.

Это сообщение отредактировал(а) Vex - 28.9.2010, 10:15


--------------------
Слава Україні.
PM   Вверх
A5uKa
  Дата 28.9.2010, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

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



Цитата(Vex @ 28.9.2010,  10:15)
Главное, чтобы ООП не лишали здравого смысла как например это сделли в С#. Вот какого фига оттуда убрали локальные функции? Почему они в Делфи есть а в С# нет? В результате приходится подпрограммы выносить на уровни метода, а это логический ###.

Зато в Nemerle есть локальные функции  smile 
PM   Вверх
Vex
Дата 28.9.2010, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 2
Всего: 88



A5uKa
Цитата

Зато в Nemerle есть локальные функции


я про него прочитал это какой-то рак мозга )

Добавлено через 39 секунд
а в джаве тоже нет локальных функций?


--------------------
Слава Україні.
PM   Вверх
A5uKa
  Дата 28.9.2010, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

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



Цитата(Vex @ 28.9.2010,  10:40)
A5uKa
Цитата

Зато в Nemerle есть локальные функции


я про него прочитал это какой-то рак мозга )

Почему ?
PM   Вверх
Shaggie
Дата 28.9.2010, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

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



djamshud, ИМХО, не надо было капитально редактировать первый пост, лучше бы накатал масштабный ответ и дал с первого поста ссылку на него, а то и вправду вся тема поехала.


Цитата(djamshud @  26.9.2010,  23:06 Найти цитируемый пост)
Инкапсуляция без сомнения удобна, но огромная ошибка - страться инкапсулировать все и во всем. При программировании на самом нижнем уровне это стрельба из пушки по воробьям

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

Цитата(djamshud @  26.9.2010,  23:06 Найти цитируемый пост)
на самом высоком - и вовсе бесполезная затея, инкапсуляция высоких материй неестественна.

 smile  А есть ссылочка, где бы можно было про неестественность инкапсуляции высоких материй почитать?
Любой слой приложения имеет в подчинении совокупность интерфейсов низлежащего слоя, владение ими и порядок вызовов имеет смысл инкапсулировать в объекте, предоставив набор методов наружу. Даже будь это самый-самый высокий уровень, всё равно надо спрятать детали в вызове application.execute(), спрятав потроха.

Цитата(djamshud @  26.9.2010,  23:06 Найти цитируемый пост)
Вам что, жалко? Если я что-то сломаю, ССЗБ.

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

Цитата(djamshud @  26.9.2010,  23:06 Найти цитируемый пост)
Из-за этого повторное использование кода зачастую становится невозможным: а есть такая же, но с перламутровыми пуговицами?

Можно и без ООП с успехом запороть повторное использование. Лично моё мнение такое, что reuse кода и подход к программированию вообще слабо друг с другом коррелируют.

Цитата(djamshud @  26.9.2010,  23:06 Найти цитируемый пост)
Полиморфизм. Удобен при использовании на низком и среднем увровне. На высоком непригоден в виду того, что взаимодействие, особенно в перспективе дальнейшего развития, между сущностями может быть абсолютно любым. Частично спасают мета-программиорвание и паттерны.

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


Дальше прекрасное:
Цитата(djamshud @  26.9.2010,  23:06 Найти цитируемый пост)
Когда я использую ООП.
1. Когда естественная сущность элегантно представляется в виде объекта и нескольких обрабатывающих его методах. Этакий "С с классами".

Отлично, значит C по умолчанию ООП язык  smile 

Цитата(djamshud @  26.9.2010,  23:06 Найти цитируемый пост)
2. Когда писал (и сейчас хочу сильно пропатчить) библиотеку контейнеров. ООП в данном случае весьма хорош: на низком уровне не используется, а вот в средний - что составляет большую часть задачи - он прекрасно вписывается.

Библиотека контейнеров прекрасно пишется труъ-функциональным способом, ни капли не теряя в удобстве использования. К чему лишнее использование ООП, если оно тебе не нравится?

Цитата(djamshud @  26.9.2010,  23:06 Найти цитируемый пост)
3. Когда писал ядро компилятора. Опять же в основном программирование происходило на среднем уровне, а вся информация о типах и лексемах гонялась по RTTI. Уже при его программировании я осознал удобность датафлоу и весь синтаксический анализатор приспособил именно для такой обработки последовательностей лексем.

О, таки при работе над крупной задачей преимущество ООП внезапно было осознанно!


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


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
mrbrooks
Дата 28.9.2010, 11:06 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Цитата(Vex @  28.9.2010,  11:15 Найти цитируемый пост)
Вот какого фига оттуда убрали локальные функции? Почему они в Делфи есть а в С# нет? В результате приходится подпрограммы выносить на уровни метода, а это логический ###.

а каким боком они должны там быть. C# как бэ объектно ориентированный язык (и работа там строится на взаимодействии объектов, в отличие от того же С++ - который только это парадигму поддерживает. полагаю что  с дельфи песня та же.

выходит - что шутка - ООП == объектно ориентированный понос - возрождается из пепла. другое дело не поздно ли пить баржоми?
PM MAIL   Вверх
djamshud
Дата 28.9.2010, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


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

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



Shaggie,

>Инкапсуляция на низком уровне - это способ скрыть низкоуровневые детали реализации, предоставив базовый API собственным модулям с тем, чтобы можно было легко менять нужный слой приложения при переходе с одной платформы/библиотеки на другую.

Ну и каким боком тут инкапсуляция вообще? Инкапсуляция != скрытие. Мы написали функцию, в ней низкоуровневая реализация. Что куда и с чем инкапсулировалось? Или мы будем называть инкапсуляцией написание любой процедуры?

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

Это мое имхо. Могу дать ссылку на первый пост:)

>Даже будь это самый-самый высокий уровень, всё равно надо спрятать детали в вызове application.execute(), спрятав потроха.

Какие еще потроха у высоких то материй?! На этом уровне занимаются спариванием сферических коней в вакууме.

>Похоже, в команде программировать не приходилось?

Как раз таки приходилось. И как раз таки убедился в полной непригодности black box-ов. Потому что иногда нужны перламутровые пуговицы. Отныне максимум - защита от дурака, т.е. protected на языке С++ и никаких private.

>Можно и без ООП с успехом запороть повторное использование.

ООП предоставляет куда больше возможностей в этом плане!

>Отлично, значит C по умолчанию ООП язык

Интересный вывод. "C с классами" - это C++, в котором максимум используется class для инкапсуляции.

>Библиотека контейнеров прекрасно пишется труъ-функциональным способом, ни капли не теряя в удобстве использования. К чему лишнее использование ООП, если оно тебе не нравится?

Так как она писалась для использования в C и C++ проектах, использовать труъ-способ - это как вырывать гланды через жопу.

>О, таки при работе над крупной задачей преимущество ООП внезапно было осознанно!

Это вовсе не крупный проект. Пара тысяч строк. И как я писал, ООП там используется в основном для реализации dataflow и интерфейса к нему.

>Программирование многогранно, есть задачи где использование ООП подхода излишне, но это не повод объявлять ересью всю индустрию в целом. 

Использование ООП излишне в большинстве случаев. Многочисленные адепты упорно пихают его всюду. Различные "кусочки" ООП пригодны во многих случаях, а вот весь комплекс ООП - это прибитый гвоздями сам к себе позор. В отличии от труъ-ООП он черезчур статичен, а динамичность ему придается лишь многочисленными костылями.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
mes
Дата 28.9.2010, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(djamshud @  26.9.2010,  23:30 Найти цитируемый пост)
Все, что я видел - так или иначе крутится вокруг ООП. Можно ссылок на большую часть?

 внимательный просмотр паттернов позволит понять, что
1. многие из ООП патернов применимы также и во многих других концепциях. например Делегат, Стратегия, Контроллер, Итератор..
2. некоторые паттерны в ООП реализованы как средства языка и поэтому фактически не могут быть ООП-патернами, например: Полиморфизм, Наследование
3. есть паттерны определяющие архитектуру устройства:
плагин, сервер/клиент 
4. паттерны взаимодействия и обмена данных
точка-точка/ точка-звезда, удаленный вызов, база данных, файловая ситема
.
..
... и т.д.
(возможно в высшесказонном есть мелкие недочеты, но неохото напрягать голову сейчас.. главное суть в том, что паттерн это не технология ООП, а технология, которую можно выделить и описать)

Добавлено через 1 минуту и 30 секунд
Цитата(Vex @  28.9.2010,  09:15 Найти цитируемый пост)
 В результате приходится подпрограммы выносить на уровни метода, а это логический ###.

но статические же методы оставили ?!.. так вроде там и статические классы даже есть..



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


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


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 2
Всего: 88




Модератор: Сообщение скрыто.



--------------------
Слава Україні.
PM   Вверх
mes
Дата 28.9.2010, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата
Инкапсуляция без сомнения удобна, но огромная ошибка - страться инкапсулировать все и во всем.

Ну так это не проблема инкапсуляции, а кривых рук... 

Цитата(Shaggie @  28.9.2010,  10:02 Найти цитируемый пост)
Любой слой приложения имеет в подчинении совокупность интерфейсов низлежащего слоя, владение ими и порядок вызовов имеет смысл инкапсулировать в объекте, предоставив набор методов наружу.

smile

Цитата(Shaggie @  28.9.2010,  10:02 Найти цитируемый пост)
Можно и без ООП с успехом запороть повторное использование.

имхо повторное использование к этой теме вообще отношения не имеет.. 

Цитата(Shaggie @  28.9.2010,  10:02 Найти цитируемый пост)
Библиотека контейнеров прекрасно пишется труъ-функциональным способом

имелся ввиду процедурный стиль ?

Цитата(Shaggie @  28.9.2010,  10:02 Найти цитируемый пост)
, ни капли не теряя в удобстве использования

некоторое удобство теряется из за незнания контейнера как управлять жизнью объекта и создавать копии..

Цитата(djamshud @  28.9.2010,  10:33 Найти цитируемый пост)
Или мы будем называть инкапсуляцией написание любой процедуры?

нет. Инкапсуляцией прежде всего называется сокрытие данных, а не сокрытие процедур. 
Вобщем для начала неплохо было бы ознакомиться с АТД и понять его суть и преимущества.. 

Цитата(djamshud @  28.9.2010,  10:33 Найти цитируемый пост)
И как раз таки убедился в полной непригодности black box-ов. Потому что иногда нужны перламутровые пуговицы. Отныне максимум - защита от дурака, т.е. protected на языке С++ и никаких private.

нда.. как связаны black box и перламутровые пуговицы.
интересно насколько по Вашему быстрее и удобнее была бы работа, если бы поле m_size  у string было бы public.. 

Цитата(djamshud @  28.9.2010,  10:33 Найти цитируемый пост)
ООП предоставляет куда больше возможностей в этом плане!

Потому что в ООП просто больше возможностей и естественно уровень пользователя должен быть выше..
но при должном подходе ООП платит взаимностью.. 
 smile 


Цитата(djamshud @  28.9.2010,  10:33 Найти цитируемый пост)
Так как она писалась для использования в C и C++ проектах, использовать труъ-способ - это как вырывать гланды через жопу.

не понятно о чем тут.. 

Цитата(djamshud @  28.9.2010,  10:33 Найти цитируемый пост)
Использование ООП излишне в большинстве случаев

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

Цитата(djamshud @  28.9.2010,  10:33 Найти цитируемый пост)
азличные "кусочки" ООП пригодны во многих случаях, а вот весь комплекс ООП - это прибитый гвоздями сам к себе позор. 

наверно имелся весь комплекс С++ средств, а не ООП ?!
согласен что различные средства нужны для различных задач.
также согласен, что пихать все лишь бы запихнуть, это не дело... 
но не понимаю, когда отказываются от нужного и  обзывают комплекс средств позором, только из за своей религиозности и/или нежелания (не имения возможности) выучить.. 
 smile

Добавлено @ 21:07
Цитата(Vex @  28.9.2010,  19:43 Найти цитируемый пост)
ну и что. я же не могу написать

вот на С++

Код

void f () {

 struct L {
  static void do_1 (int i ) { std::cout << i; }
  static void do_2 ()       { std::cout << ", "; }
 
 };

 for (int i =0; i< 10; ++i ) 
 {
   L::do_1 ( i );
   L::do_2 ();
    
 }
}

int main () { f(); }




Это сообщение отредактировал(а) mes - 28.9.2010, 21:08


--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

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


 




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


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

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