Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/42: Рейтинг темы: голосов - 42, средняя оценка - 4.71
Заблокирован
1

Развейте мои сомнения: упростится ли программирование при переходе от C к C++?

16.07.2016, 02:45. Показов 8348. Ответов 219
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Когда-то я уже начинал изучать C++, даже писал не большие программки на C++. Потом забросил и не кодил на C++ лет 8. Почти все забыл. Но тут возникла одна идея, которую нужно реализовать в виде программы и я решил тут «вспомнить молодость» и начать, что называется, «с нуля». Взял в руки книжку В.В. Подбельского «язык C++» 2005 года выпуска (знаю, что есть Страуструп, Липман и др. книжки посвежее и по «забористей» - но говорю же: «с самого нуля» решил начать, а в предисловии к книжке как раз написано было, что она для тех, кто изучает C++ “с нуля”) и стал читать. Попутно заглядывая в гугл.
И начитался про иерархии классов и наследование (в т.ч. перекрестное), про спецификаторы доступа (private, protected и public), про конструкторы (по умолчанию, копирования, преобразования), про перегрузку (как обычных функций, так и операторов и конструкторов), про дружественные функции и классы, про шаблоны функций и классов, про виртуальные функции и чисто абстрактные классы, про механизм «продвижения типов». И ошалел. А ведь есть ещё конструкции с ключевыми словами explicit,try catch,typeid, typename, reinterpret_cast, const_cast, static_cast, dynamic_cast, virtual, mutable, с которыми я пока не разбирался.
Учитывая все сказанное я хочу спросить:
1) Если вам нужно разобраться в логике работы чужой, незнакомой вам, программы достаточно большого объема и выловить баги в ней, а в программе используются достаточно сложные иерархии классов (вплоть до 4-го левела и больше) с перекрестным наследованием, и в классах иерархии используются многократные перегрузки (причем как просто функций, так и функций операторов и конструкторов всех видов), дружественные функции, виртуальные функции, шаблоны, то ведь, пожалуй запутаться можно (« что и когда вызывается») и голову можно сломать пока разберешься? В чужой программе на чистом СИ разбираться и искать багги легче?
У меня, например, даже простейшие программки, приведенные в книге, вызывали головную боль, пока разберешься «что это такое, куда и зачем». Получалось понять работу программ только раза с 10-го. С пониманием же программ на СИ такого не было. СИ я освоил буквально за 1 день. Вот я и подумал: а все эти навароты в С++ и что программа так трудно понимается, чем оправданы?
2) А если сам пишешь программу, то поставленную задачу можно решить на C++ реально проще и быстрей, чем на СИ? Если да, то в каких задачах проявляется преимущество C++? И за счет чего облегчается и ускоряется написание программы?
3) В каких-нибудь задачах (и в каких конкретно) вам приходилось в классе использовать сразу почти все ОО-средства С++ «по полной программе»? Т.е. перекрестное многоуровневое наследование с многократными перегрузками всего и вся с виртуальными функциями и абстрактными классами, с дружественными функциями и классами,с шаблонами, исключения, RTTI и т.п.. Или у вас такой необходимости никогда не возникало? Или вы не использовали «сразу все» просто, чтобы самому же не запутаться в своем коде?
Миниатюры
Развейте мои сомнения: упростится ли программирование при переходе от C к C++?  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.07.2016, 02:45
Ответы с готовыми решениями:

Развейте сомнения
Правда ли что один коммутатор -одна сеть? И еще , есть ли различие к какому компьютеру какую...

Вылетает примерно через 30 минут (при переходе в нет, в стим, или вообще простотак но при переходе)
Здравствуйте у меня windows вылетает на синий экран, внизу появляется отсчет до 100 потом он сам...

Загрузка ЦП под 100% при запуске винды, при открытии браузера, при переходе между вкладками
Всем доброго времени суток. У супруги ноут SONY VPCEl - AMD E2, 4Гб ОЗУ. Windows 7 - 64. ...

Загрузка ЦП под 100% при запуске винды, при открытии браузера, при переходе между вкладками Windows7
Доброе время суток !!! после прочтения темы https://www.cyberforum.ru/viruses/thread1294643.html и...

219
2664 / 2239 / 240
Регистрация: 03.07.2012
Сообщений: 8,141
Записей в блоге: 1
22.07.2016, 21:15 201
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Хотя таких способов ТЫСЯЧИ
А чего в него вцепились и 11 страниц тянете резину? Берите Си плюс любые из оставшихся способов и - вперед.
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
22.07.2016, 21:28 202
Цитата Сообщение от hoggy Посмотреть сообщение
куча всяких классов, которые не делают никакой реальной полезной работы,
а служат только для поддержания "каноничности" архитектуры приложения.
Не стоит забывать что есть такие вещи как перспектива, а поддержка каноничности дает ясность.
Но и ежу понятно что не должно быть фанатизма.
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
22.07.2016, 21:32 203
Цитата Сообщение от Avazart Посмотреть сообщение
Не стоит забывать что есть такие вещи как перспектива
не нужно пытаться решать проблемы будущего,
которое может и не наступить.

и не нужно плодить сущности без необходимости.
это только усложняет архитектуру.

каноничность ради каноничности не нужна.
0
Заблокирован
22.07.2016, 21:32  [ТС] 204
Цитата Сообщение от hoggy Посмотреть сообщение
однако, сама по себе ООП парадигма была изобретена как раз таки для того,
что бы предоставить простые, и надежные способы контроля за сложностью
проектов (особенно - крупных, разрабатываемых большими командами).
ОО парадигме уже почти 70(!!!) лет.
Да да. Первые упоминания о ней датируются 1949-м годом.
Не пора бы уже чего-нибудь поновей использовать?
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
22.07.2016, 21:33 205
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Не пора бы уже чего-нибудь поновей использовать?
например?
0
Заблокирован
22.07.2016, 21:44  [ТС] 206
Цитата Сообщение от hoggy Посмотреть сообщение
не нужно пытаться решать проблемы будущего,
которое может и не наступить.
Не помню у кого это прочитал. ЕМНИП у Макконэла.
"Не решайте задач, которых нет"©
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
22.07.2016, 21:46 207
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
ЕМНИП у Макконэла.
Макконелл вроде бы действительно,
что то подобное писал)

Не по теме:

человек, который читал Макконелла, а потом создал подобную тему
сильно производит впечатление провокатора.

1
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
22.07.2016, 23:30 208

Не по теме:

Цитата Сообщение от hoggy Посмотреть сообщение
человек, который читал Макконелла, а потом создал подобную тему
сильно производит впечатление провокатора.
Скорее нагуглил...



Добавлено через 2 минуты
Цитата Сообщение от hoggy Посмотреть сообщение
не нужно пытаться решать проблемы будущего,
которое может и не наступить.
и не нужно плодить сущности без необходимости.
это только усложняет архитектуру.
каноничность ради каноничности не нужна.
Как быть все же наступит? Никто не говорит о воображаемых задачах.
Cуть в том что бы решать задачу чуть-чуть шире чем это требует ситуация сейчас, на то она и перспектива.
Я про каноничность за ради ясности.
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
22.07.2016, 23:42 209
Цитата Сообщение от Avazart Посмотреть сообщение
Ка быть все же наступит?
когда наступит, тогда и будем думать.

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

нужно решать конкретные поставленные задачи,
и ничем более.

Цитата Сообщение от Avazart Посмотреть сообщение
Каноничность за ради ясности.
ясность наступает, когда кода мало, он лаконичен,
и выполняет реальную полезную работу.

ооп ради ооп - не нужен.
а 100500 классов, которые которые не делают никакой полезной работы,
никакой ясности не добавляют.

у меня был случай:
для решения одной задачки я организовал 3 класса.
причем про один из них пользователи ничего не знают.
то есть для работы нужно знать только про паблик двух маленьких классов.

мой коллега глянул и сказал:

- код простой, и его мало. однако решение не вполне канонично.
- покажи каноничный вариант

и вот он мне нарисовал uml-архитектурку.
где образовалось больше двух десятков разных классов.
большая часть которых нафиг не нужна для работы.

и я спросил его:
- вот что проще: два маленьких классах, или два десятка?
- зато тут все по канонам ооп
- задача ооп - упращать жизнь, а не усложнять.


"ясность" - это миф. человеку со стороны все равно придется вникать
в чужую кодовую базу.

и вот здесь, чем меньше кода - тем проще,
и быстрее будет протекать этот процесс.

фундаментальное для ооп правило:
"не плодить сущности без необходимости"
2
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
22.07.2016, 23:58 210
Цитата Сообщение от hoggy Посмотреть сообщение
это - зряшная трата времени(денег) компании.
Думать с перспективой развития, это скорее экономия.

Цитата Сообщение от hoggy Посмотреть сообщение
для решения одной задачки я организовал 3 класса.
Ну с таким же успехом можно было упаковать все в один монолит.

Цитата Сообщение от hoggy Посмотреть сообщение
и вот здесь, чем меньше кода - тем проще,
и быстрее будет протекать этот процесс.
Ну дело ведь не в количестве строк.

Но и так понятно
где образовалось больше двух десятков разных классов.
что это явный перебор, нет смысла держать столько объектом в голове, и это действительно усложнение.
Вопрос только в том что он понимал под "канонами ооп".

"ясность" - это миф. человеку со стороны все равно придется вникать
в чужую кодовую базу.
Есть базовые приемы которые знают большая часть программистов благодаря чему разбор кода идет быстрее и городить что-то левое нет смысла.
Кроме того человек не должен быть "со стороны".
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
23.07.2016, 00:12 211
Цитата Сообщение от Avazart Посмотреть сообщение
Думать с перспективой развития, это скорее экономия.
нет, это - убытки.

вы не должны думать ни о чем,
кроме решения самой задачи в поставленных рамках.

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

Цитата Сообщение от Avazart Посмотреть сообщение
Ну с таким же успехом можно было упаковать все в один монолит.
нельзя.
проблема монолита: что бы понять целое, нужно понять частное.
но что бы понять частное, нужно уже понимать целое.

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

самым первым человеком, который применил мощь ооп на практике,
был римский император Цезарь,
который провозгласил и привел в действие принцип:
"разделяй и властвуй"
(ц)По памяти
Цитата Сообщение от Avazart Посмотреть сообщение
Ну дело ведь не в количестве строк.
и в количестве строк так же.

дело в количестве информации, которое нужно держать в голове,
что бы работать с проектом.

Цитата Сообщение от Avazart Посмотреть сообщение
Вопрос только в том что он понимал под "канонами ооп".
"в лучших традициях банды четырёх"
0
Заблокирован
23.07.2016, 10:12  [ТС] 212
Цитата Сообщение от hoggy Посмотреть сообщение
сильно производит впечатление провокатора.
Давайте без хамства и "переходов на личности"
Цитата Сообщение от Avazart Посмотреть сообщение
у с таким же успехом можно было упаковать все в один монолит.
"Одинаково трудно разбираться в одной большой функции как в нескольких десятках маленьких"

Добавлено через 9 минут
Цитата Сообщение от hoggy Посмотреть сообщение
"в лучших традициях банды четырёх"
Все эти каноны, изобретаемые бездельниками-теоретиками, "от лукавого".
Это все равно что как если бы человек, никогда не державший в руке лопаты, взялся бы писать книгу "шаблоны копания траншей лопатой"

Добавлено через 2 минуты
В программировании как в инженерии: самые лучшие инженеры книжки не пишут, ибо им некогда.
А пишут те, у кого куча свободного времени, потому что инженерной работой они не загружены (или вообще ей не занимаются) и посему слабо представляют себе её специфику и занимаются ТЕОРЕТИЗИРОВАНИЕМ
0
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
23.07.2016, 10:25 213
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
В программировании как в инженерии: самые лучшие инженеры книжки не пишут, ибо им некогда. А пишут те, у кого куча свободного времени
А как назвать того, кто на форуме уже на протяжении недели пишет кучу бесполезных вопросов и даже не может скомпилировать пример из-за отстутсвия хидера?
3
Заблокирован
23.07.2016, 11:07  [ТС] 214
Voivoid
Давайте не будем сводить эту тему к киданию какашками?
ОК?
Мы же с Вами взрослые люди.
И никому читать взаимные оскорбления будет не интересно.
Иначе я буду вынужден обратиться к модераторам.
Поэтому давайте все же про "науку".
То бишь про недостатки С++ и ООП подхода.

Добавлено через 1 минуту
Цитата Сообщение от Voivoid Посмотреть сообщение
даже не может скомпилировать пример из-за отстутсвия хидера
А Вы можете скомпилировать код без хидеров?
Научите как

Добавлено через 18 минут
Цитата Сообщение от Voivoid Посмотреть сообщение
кучу бесполезных вопросов
"На вкус и цвет товарищей нет"©
Для Вас они, может, и бесполезные, а для меня- самые важные и животрепещущие
0
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
23.07.2016, 11:17 215
ООП эффективна, полезна и удобна! Именно по этому она была создана, что произвело большой прорыв в программировании. Или вы думаете, что все бестолковые и просто не видят очевидных недочетов в ООП, и только вы понимаете, что ООП - бред? Вынужден вас разочаровать... пройдитесь по вакансиям на должность программиста практически везде требуют знание ООП, и что-то я как-то не наблюдаю требования: процедурное программирование.

Добавлено через 2 минуты
ИсмаилПркопенко, у вас в теме написано: "Развейте мои сомнения".. Какие могут быть сомнения??? Откройте глаза, оглянитесь вокруг! 2016 на дворе!
0
Заблокирован
23.07.2016, 11:52  [ТС] 216
Цитата Сообщение от JIawliet Посмотреть сообщение
Откройте глаза, оглянитесь вокруг! 2016 на дворе!
Вот вот. А мы до сих пор юзаем ООП, первые упоминания о котором относятся к 1949-му году.
Т.е. уже почти 70 лет "дедушке"
Как думаете: не пора ли использовать парадигму посвежей?

Добавлено через 1 минуту
Цитата Сообщение от JIawliet Посмотреть сообщение
пройдитесь по вакансиям на должность программиста практически везде требуют знание ООП
Пройдитесь по магазинам - больше всего народ покупает самые дешевые продукты.
Но это не значит что они самые полезные и качественные

Добавлено через 1 минуту
И кстати, кто не в курсе, ООП парадигма появилась РАНЬШЕ процедурной.
Но гуглить сейчас это не буду - кому интересно сами нагуглите
0
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
23.07.2016, 11:53 217
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
посему слабо представляют себе её специфику и занимаются ТЕОРЕТИЗИРОВАНИЕМ
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Как думаете: не пора ли использовать парадигму посвежей?
Не пора ли закончить с ТЕОРЕТИЗИРОВАНИЕМ и начать уже писать код ( ну или еще чем полезным заняться ) ?

Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
А Вы можете скомпилировать код без хидеров?
Очевидно, что убрать ненужные зависимости
1
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
23.07.2016, 12:09 218
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Пройдитесь по магазинам - больше всего народ покупает самые дешевые продукты.
Но это не значит что они самые полезные и качественные
ага, процедурное программирование оплачивается выше, чем ООП... оно ведь качественное и полезное...

Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
не пора ли использовать парадигму посвежей?
ваши предложения? + обоснуйте преимущества вашего подхода

а вообще если вы так уверены что вам не нужно С++ и ООП, не учите... от темы попахивает холиваром / троллингом, 11 страниц не о чем.
1
Заблокирован
23.07.2016, 12:43  [ТС] 219
Цитата Сообщение от Voivoid Посмотреть сообщение
Очевидно, что убрать ненужные зависимости
Звучит глупо.
Это все равно что сказать: "просто взять и переписать все несколько миллионов строчек кода с нуля, так, чтобы стандартная библиотека вообще не использовалась"

Добавлено через 2 минуты
Цитата Сообщение от JIawliet Посмотреть сообщение
от темы попахивает
Цитата Сообщение от Voivoid Посмотреть сообщение
Не пора ли
Господа! Если Вы считаете что у ООП и его С++-й реализации нет недостатков и что тут даже обсуждать нечего - то не надо хамить. Просто покиньте эту тему раз она Вам не интересна.
А хамскими топиками засорять тему я не позволю

Добавлено через 3 минуты
То как ООП бывает красиво выглядет на искусственных, надуманных задачах я и без вас по книжкам знаю.

А меня интересует то, что в ++-й реализации ООП просто омерзительно и безобразно сделано, что Вас выбешивает и каждый раз раздражает в С++. Вот что меня в ПЕРВУЮ очередь интересует.

Т.е. ограничения и недостатки С++
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,714
23.07.2016, 13:53 220
Закрываю тему.
Похоже, все, кто хотел, высказались!
2
23.07.2016, 13:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.07.2016, 13:53
Помогаю со студенческими работами здесь

Изменение цвета кнопки при получении фокуса при переходе по TAB
Здравствуйте! Подскажите пожалуйста: как настроить изменение цвета кнопки при получении фокуса при...

POST переменные при нажатии на ссылку и при переходе на другую страницу
Как сделать так, чтобы при нажатии на ссылку и при переходе на другую страницу были доступны $_POST...

При переходе на новую страницу при нажатии на F5 требует повторной отправки данных
Допустим, есть самая простая форма: <form action="mail.php" method="post"> <input...

Клавиатура не срабатывает при начальной загрузке при переходе компьютера в выбор режимов
Установлен Винд 7.Хочу переустановить систему вхожу в Биос естественно ставлю сд первым хард вторым...

Ошибка при переходе на следующую строку при переносе значений из excel в word
Приветствую знатоки vba.. Суть проблемы есть таблица ексель с цифрами и таблица word с...

При обновлении или при переходе по ссылкам у сайта слетает его структура?
При обновлении или при переходе по ссылкам у сайта слетает его структура. При открытии главной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
220
Закрытая тема Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru