LINUX.ORG.RU

C и C++?


0

0

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

anonymous

ne teryaem :) ne hochesh' pol'zovat' shablony/virt funkcii/... --- ne pol'zuesh', logichno ? imho esli na C++ napisat' kod v duhe C, to pravil'nym kompilyatorom budet sgeneren "odinakoviy" kod...

imho poleznaya knizhka "design and evolution of C++", Stroustrup

anonymous
()

Вопрос сий из разряда философско-религиозных.
Каждый должен ответить на него себе сам, и это будет -- Истина!

anonymous
()

если это будет истина тогда мир закончит свое существование...

anonymous
()

Изволь выражаться внятнее, а то вовсе не ясно, что ты в виду иметь.

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

Antichrist
()

Грамотоное использование ООП позволяет приблизить программирование к предметной области, что само по себе очень ценно. Для ООП хорошо развита методология проектриования, есть богатый выбор CASE-средств. Качество сильно зависит от поргаммиста и дизайнера. Классы легче тестировать, хорошо написанную ООП программу легче читать, но более богатые возможности языка оставляют больше простора для ошибок. Реализация ООП-подхода на Си дает БОЛЬШУЮ головную боль. Без крайней нужды так лучше не делать. Оверхед от использования классов, конечно, есть, поэтому при embedded порграммировании, где скорость и размер кода всегда очень критичны, я обычно использую просто Си.

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

anonymous
()

2 Antichrist: Чем же так плох ООП, и чем ты предлагаешь его заменить?

anonymous
()

Antichrist не знает, о чем говорит. Можно согласиться, что C/C++ не лучшие языки.
Но про ООП сам себе противоречит.
Но сам же приводил кусок кода с объектами.

Havoc ★★★★
()
Ответ на: комментарий от anonymous

Во первых, попрошу не путать OOP и OOD. Это разные уровни. ООП требует применения OOD до самого низкого уровня - до реализации то бишь, однако как раз на низком уровне большинство встречающихся в реальной жизни сущностей объектной декомпозиции не поддаётся.

Ну а тестировать гораздо проще МОДУЛИ, чем классы. Правильно реализованная система модулей куда как гибче, и при этом строже (то бишь надёжнее), чем все существующие реализации классов.

Ну и на закуску: http://www.dcs.ex.ac.uk/~david/internet/research/methodology/download/saig01.pdf Неплохая демонстрация применения OOD в абсолютно не-ООПной среде.

Antichrist
()
Ответ на: комментарий от Havoc

Использование объектов (умеренное) - это вовсе не то же, что чистый ООП. Ну а реализация ООП в C++ для такого вот, умеренного, применения вовсе не канает - ибо нет модулей, приходится заместо таковых классы юзать.

Antichrist
()

2Antichrist:

Можно использовать OOD в не-ОО языках. А можно зуб удалить через задний проход... но через рот это гораздо проще. Зачем вникать в документ о 17 страницах с правилами преобразования классов в модули, если можно взять язык с поддержкой классов на уровне синтаксиса? Модули не заменят классов, как и классы модули. Это разные вещи, их нельзя сравнивать. Лучше использовать и то и другое одновременно.

anonymous
()
Ответ на: комментарий от anonymous

Идиёт. Какое отношение ООД имеет к классам? На том уровне, когда классы начинаются, OOD уже не место. Иди, кури своего Буча дальше, не мешай умным людям науку двигать.

Antichrist
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.