Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» В чем преимущество ООП ?

Автор: Mickey_from_nsk
Дата сообщения: 14.08.2007 14:07
Qraizer
Я, все же склонен согласиться с aslav. В свое время было море языков, которые были СУПЕР. Где они теперь. Все в этой жизни течет - все меняется. Вот прочитал про новые возможности C# 3.0 и пришел к выводу, что это все же интереснее чем С++. Хотя, может с выходом нового стандарта С++ тоже будет на уровне, только сильно уж он становится громоздким.
С другой стороны, скорость внедрения новых печенюшек в С# тоже скорее пугает. Слишком часто приходится менять принципы программирования. Хотя оно того, в общем то, стоит. Но это - тема отдельного разговора и священных войн.
aslav

Цитата:
из пушки по воробьям не стреляют. к тому же С++ - язык почти умирающий, ниша для него все Уже и Уже. а использовать fopen вместо потоков только Архангельский учит

По моему опыту, не всегда потоки ввода-вывода эффективнее системных вызовов. Последние проще, что ли. Хотя в большинстве случаев потоки использовать правильнее.
Автор: Qraizer
Дата сообщения: 14.08.2007 21:02
Mickey_from_nsk
Да пожалуйста, соглашайся. Море СУПЕР языков высохло, остались лужицы, но личное мнение никто не отменял. Просто "личное мнение" принято помечать "ИМХО"-ой. Я б тогда не возмущался. Смайлик в первом моём ответе aslav-у недвусмысленно намекает на забавность его (наверное, ненамеренного) признания. Впрочем, он ещё и неадекватен, о чём я сказал в своём наводящем вопросе, и тему продолжил во втором посте. Ответный же его пост просто роняет мою челюсть на пол. "Супер" - может быть и слегка гиперболизированная приставка к языку программирования С++ (впрочем, не я его так назвал ) Однако я привёл факты, а не своё ИМХО. Так что плюсы в обиду не дам.
Цитата:
Все в этой жизни течет - все меняется. Вот прочитал про новые возможности C# 3.0 и пришел к выводу, что это все же интереснее чем С++.
C# - язык под единственную платформу - .NET. С++ - универсальный язык. Поэтому нет ничего удивительного в том, что C# мощнее Managed C++, а последний в свою очередь приятней C++. Для .NET, в смысле. Специализированность всегда удобнее универсальности для тех частных случаев, для которых эта специализированность предназначалась. Тем не менее ты никогда ("хотя, может с выходом нового стандарта..." © твой) не получишь таких же эффектов на C#, каковые можно получить на плюсах, когда речь зайдёт, например, о шаблонах выражений (именно "шаблонах выражений", а не template-ов - "шаблоны выражений" - это паттерн такой, не привязанный к конкретному языку), метапрограммировании, списках типов, статического полиморфизма... Так что минусы при желании можно найти везде. Впрочем, ты то же самое говорил, извиняюсь.
Насчёт громоздкости, извини, не соглашусь. Я не считаю, что C++ громоздок. Ты ж не будешь называть иерархию классов Application Framework громоздкой. Да, она непростая и не маленькая. Но ведь и не громоздкая.
Автор: Mickey_from_nsk
Дата сообщения: 15.08.2007 10:50
Qraizer
В целом согласен. Только данный топик не о том.
Автор: ifo88
Дата сообщения: 23.09.2011 15:53
Да преимуществ полно! Возможность многократного использования куска кода, разброс кода по файлам структуризация кода и т.д.

Советую почитать статью. введение в ооп
Автор: rrromano
Дата сообщения: 24.09.2011 22:19
Наследование, инкапсуляция, полиморфизм. Вот и все преимущества ))).

На самом деле, мне кажется, топикстартеру следовало бы хотя бы попробовать разобраться в ООП, прежде, чем начинать дискуссию ).
Автор: ALeXkRU
Дата сообщения: 25.09.2011 00:04
rrromano

Цитата:
топикстартеру следовало бы хотя бы попробовать разобраться в ООП

думаете, он с этим за семь лет не справился?
Автор: delover
Дата сообщения: 25.09.2011 19:24
Вполне возможно вопрос этот из разряда филосовских. Посмотрел бы на человека разобравшегося с филосовским вопросом за 7 лет. ))) А вот про

Цитата:
Специализированность всегда удобнее универсальности для тех частных случаев, для которых эта специализированность предназначалась. Тем не менее ты никогда ("хотя, может с выходом нового стандарта..." © твой) не получишь таких же эффектов на C#, каковые можно получить на плюсах, когда речь зайдёт, например, о шаблонах выражений (именно "шаблонах выражений", а не template-ов - "шаблоны выражений" - это паттерн такой, не привязанный к конкретному языку), метапрограммировании, списках типов, статического полиморфизма... Так что минусы при желании можно найти везде.

Интересно было перечитать. Есть ещё одно суждение - если в разных стандартах имеются шаблоны - они не перестают ими быть, и они решают одну и ту же задачу. Умеснее говорить о том какие из них удобнее, с учётом времени и привычек. Но вот мне если что-то нужно вполне хватает пекатов (peek at и тд.), однако ООП к шаблонам отнести трудно.
Автор: Qraizer
Дата сообщения: 26.09.2011 03:26
В C# нет шаблонов, там дженерики. Это не более чем просто параметризация типов. И в Джаве, и в Дельфях. И только в Плюсах полноценные шаблоны. По крайней мере я не знаю ещё одного языка, который бы держал шаблоны на уровне Плюсов.
Автор: ekemov
Дата сообщения: 26.09.2011 08:36
Все современные языки програмирования стремяться упростить себя, сделать так кто на данном язике пишет было удобно и просто.
Автор: wasilissk
Дата сообщения: 26.09.2011 12:38
ekemov
Например? Что-то не могу ни одного языка припомнить, который бы стремился себя упростить...
Автор: delover
Дата сообщения: 26.09.2011 17:06
Про дженерики прекрасно понимаю. В своё время мечтал чтобы они были в Дельфях, а про полноценные шаблоны даже в мечтах не было. Таких как в в плюсах возможно уже никогда не будет. Так как при необходимости решается внешними средствами, ну и сложновато для фичек вроде кодекомплит. И сталобыть перекликается про простоту.
Автор: akaGM
Дата сообщения: 26.09.2011 17:17

Цитата:
Qraizer
ООП - это не свойство языка, это философия и стиль. Объектно программировать можно хоть на ассемблере.


пожалуй, в данном топе лучше не скажешь...
Автор: Qraizer
Дата сообщения: 26.09.2011 21:30

Цитата:
Таких как в в плюсах возможно уже никогда не будет.
К сожалению, на полноценном обощённом программировании ставит крест разная семантика разных Дельфийных типов. Какие-то ссылочные, какие-то нет. Это в Плюсах поставил & и получил ссылку, не поставил - получил значение. Написал a=b, и получил в a копию b. А в Дельфях написал a:=b, и для integer скопил значние, а для класса получил копию ссылки, блин, прям указатели какие-то. А для классов надо вызвать метод классового объекта для получения копии. Блин, а у integer-а нету классового объекта... Танунафик такую обобщённость.
Автор: akaGM
Дата сообщения: 26.09.2011 23:01
Qraizer

да дельфи-то что пинать...
детище одной-единственной фирмы, что хочет (и как может), то и делает
ниша вполне определена, папа-паскаль окаменел (кстати, если на паскале уж написал @ -- то тоже адрес, однозначно)...
а я вот на новый фортран с ужасом смотрю: тоже объекты, конструкторы, ужос...
Автор: Qraizer
Дата сообщения: 27.09.2011 06:14
Дык в .NET, к примеру, та же картина.
Автор: wasilissk
Дата сообщения: 27.09.2011 08:30
akaGM
В Delphi @ тоже всегда возвращае адрес переменной.
Qraizer
Судя по статисике использования, на каждую операцию копирования объекта приходится много больше операций копирования ссылки на объект, так что такое поведение операции присваивания, имхо куда как более логично. А что касаемо сишных темплейтов, так это не более чем синтаксический сахар. Необходимости в них нет, функционала дженериков вполне достаточно.
У .NET и Delphi один и тот же главный разработчик Андерс Хейлсберг, соответственно и схожие концепции.
Автор: akaGM
Дата сообщения: 27.09.2011 08:46
неправомерно, имхо, сравнивать технологию/методу/среду/язык (не знаю как теоретики позиционируют .нет и дельфи), которая мало того что не имеет своей раб. группы ISO, так даже за рамки одной платформы не вышла...

Qraizer

Цитата:
Дык в .NET, к примеру, та же картина.
на .нет мне, по большому счёту...
а вот, за Ф, который последнее время каждые 5 лет получает ISO-стандарт, как-то боязно...

wasilissk

Цитата:
В Delphi @ тоже всегда возвращае адрес переменной.
ну тогда уж чтоб быть на 100% педантично-точным: не в дельфи, а в object pascal
Автор: Eternal_Shield
Дата сообщения: 27.09.2011 09:07
Qraizer

Цитата:
К сожалению, на полноценном обощённом программировании ставит крест разная семантика разных Дельфийных типов. Какие-то ссылочные, какие-то нет. Это в Плюсах поставил & и получил ссылку, не поставил - получил значение. Написал a=b, и получил в a копию b. А в Дельфях написал a:=b, и для integer скопил значние, а для класса получил копию ссылки, блин, прям указатели какие-то. А для классов надо вызвать метод классового объекта для получения копии. Блин, а у integer-а нету классового объекта... Танунафик такую обобщённость.

Те, кто моногамен, таких проблем не испытывает, а полигамщики (котрые везде и нигде одновременно) - ломают себе мозги.

CSUXClass *ImaKillah1 = new CSUXClass();
CSUXClass *ImaKillah2 = new CSUXClass();

Что при
ImaKillah1 = ImaKillah2;
случится, а? не это ли

Цитата:

а для класса получил копию ссылки, блин, прям указатели какие-то

а? как хреново то ...


З.Ы: Надеюсь message уловили
Автор: wasilissk
Дата сообщения: 27.09.2011 09:14
akaGM

Цитата:
не знаю как теоретики позиционируют .нет и дельфи

Delphi это язык програмирования.
http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/overview_xml.html
Под .Net тут неверняка имеют в виду C# раз уж сравнивать с C++, в любом случае не я первым его упомянл...
Рамки платформ не понимаю каким тут вообще боком? Если играть бицепсами распространенности, применимости языков, тут без вопросов делфи окажется пылью на корпусе С++. Но мы же вроде о темплейтах?
Автор: akaGM
Дата сообщения: 27.09.2011 10:01
wasilissk

Цитата:
Но мы же вроде о темплейтах?

я? -- нет...
я об
Цитата:
философии и стиле ООП


Цитата:
Delphi это язык програмирования.

пусть так, я не против, особенно если учесть, что головной файл моего проекта имеет расширение .dpr :)

Автор: wasilissk
Дата сообщения: 27.09.2011 12:08
akaGM
Я не думаю, что популярность С++ обусловлена философией и стилем её реализации ООП.
Автор: akaGM
Дата сообщения: 27.09.2011 13:17
наверное, популярность С++ и причины её возникновения -- это отдельная тема...
а
Цитата:
Объектно программировать можно хоть на ассемблере.

Qraizer, ты у меня прям как цитатник Мао... :)
Автор: Qraizer
Дата сообщения: 28.09.2011 00:28
akaGM,

Цитата:
неправомерно, имхо, сравнивать технологию/методу/среду/язык
.NET я упомянул, чтоб не перечислять всё туда входящее. Фрэймворк на всех всё равно один. Ну, хочешь - считай, я сказал про C#. Дженерики везде одинаковы.
Eternal_Shield, в Mass Efffect-ы играл, да?
Автор: rrromano
Дата сообщения: 29.09.2011 09:22
ALeXkRU

Цитата:
думаете, он с этим за семь лет не справился?


Не знаю ).
Но вопросы задаёт такие, на которые за 7 лет уже пора бы и самому ответ найти. )
Автор: delover
Дата сообщения: 30.09.2011 22:45
Qraizer

Цитата:
К сожалению, на полноценном обощённом программировании ставит крест разная семантика разных Дельфийных типов.

А мне, всё же, кажется, Дельфи никогда не бежала впереди наукоёмких технологий, в первом числе язык Си. Как разная семантика довольно однообразного языка может на что-то влиять не знаю, помню был текстовый режим с прерываниями и было очень жаль, что приходится приспосабливаться к какой-то графической оболочке Ну привыкли же.
Автор: Bladerender
Дата сообщения: 01.10.2011 11:23
ООП создано не только для того, что бы задавать глупые вопросы на парах у внивере или на собеседовании на работу. Оно создано для того, что бы удобно повторно использовать уже написанный код. Если написать одну программу и все - оно не нужно. А если проект расширяем и имеет модули для реюзабла - то без этого не обойтись.
Автор: Qraizer
Дата сообщения: 01.10.2011 23:33
Ну прям так и не нужно. Главное преимущество ООП - сужение границ чёрных ящиков с модуля/единицы трансляции до класса. Модули/единицы трансляции можно использовать для структуризации по иным критериям.
Кстати, пространства имён служат для инкапсуляции интерфейсов подсистем, обычно состоящих из многих чёрных ящиков и обвязок вокруг них, как то свободные функции, типы, константы/перечисления итп. И без них, т.е. только классами, всё равно сложно добиться приемлимого дизайна.
Автор: delover
Дата сообщения: 02.10.2011 09:54
Немного вернусь к вопросу о том что может мешать. Мой способ больше похож на намывание песка. Чтобы выделить мешающее чаще всего нужно несколько итераций. Допустим модуль-единица и я выделяю общие характеристики классов внутри модуля. При первой итерации-переносе в новое пространство имён произошло N изменений. A - количество принятых изменений меньше N. Намного меньше, следующие итерации дают N2..Nk изменений. И разница между N и A у каждой итерации есть и чаще всего не пересекаются на всём k. Без ООП эту задачу можно выразить только в декларируемых и не декларируемых функциях, что решаемо просто - декларируй всё подряд с префиксами в именах функций и привет...
Автор: delover
Дата сообщения: 06.10.2011 18:56
wasilissk

Цитата:
.NET и Delphi один и тот же главный разработчик

А мне кажется что Сишарп больше похож на Си. Как ни странно это звучит, это так. )
Автор: wasilissk
Дата сообщения: 07.10.2011 06:49
delover
Синтаксисом? Безусловно. Я писал о концепциях, общего там у С и С# очень мало.

Страницы: 1234567

Предыдущая тема: Сервис работы с файлами


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.