|
Вопрос по С++ |
|
|
|
 |
Ответов
|
Dec 14 2011, 08:33
|

Twilight Zone
  
Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990

|
Цитата(_Артём_ @ Dec 13 2011, 20:38)  Создать класс содержащий все нужные функции (различающиеся команды объявить как виртуальные), от него создать нужное количество наследников с переопределёнными функциями и . ...... ИМХО, тут можно конечно сделать, но из за 2-x, 3-x подобных устройств использовать С++ со своими возможностями ООП (виртуальные функции и полиморфизм) Вам больше навредит, чем поможет. Сильно не рационально. С++ надо использовать только там, где это действительно необходимо и приемлемо, а не просто ради того чтоб использовать. Вот если бы подобных устройств было десятки, еще можно говорить….
--------------------
Magic Friend
|
|
|
|
|
Dec 14 2011, 09:35
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(Danis @ Dec 14 2011, 10:33)  ИМХО, тут можно конечно сделать, но из за 2-x, 3-x подобных устройств использовать С++ со своими возможностями ООП (виртуальные функции и полиморфизм) Вам больше навредит, чем поможет. Сильно не рационально. С++ надо использовать только там, где это действительно необходимо и приемлемо, а не просто ради того чтоб использовать. Вот если бы подобных устройств было десятки, еще можно говорить…. В смысле? Что значит "десятки устройств"? Десятки типов устройств? Или экземпляров? Типов модулей может быть 2-3-..5..10(это точно перебор, да и 5 - перебор: 2-3, а дальше - много(слишком)) А модулей - сотни(чем больше тем лучше) каждого типа... У как по-Вашему лучше сделать? Цитата(Danis @ Dec 14 2011, 10:33)  С++ надо использовать только там, где это действительно необходимо и приемлемо, а не просто ради того чтоб использовать честный ответ - как глоток свежего воздуха...© А где ж его использовать?(С++, в смысле)...?
|
|
|
|
|
Dec 20 2011, 09:24
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
QUOTE (sasamy @ Dec 20 2011, 15:35)  Самый главный аспект - на порядки более сложный язык по сравнению с С Сложный - да, но как бы эти порядки определить? И кто заставляет сразу метапрограммированием на шаблонах заниматься? Сложность растёт постепенно по мере набора опыта и сложности задач. С++ не заставляет его сразу весь знать. Это целый мир, и каждый в нём находит свою нишу. Кому-то достаточно простых объектов, а кто-то не мыслит жизни без параметризованных типов. С++ позволяет всё то же, что и С, но желающим даёт возможность использовать и более продвинутые средства языка, быстрее, лаконичнее и выразительнее писать более сложные программы. QUOTE (sasamy @ Dec 20 2011, 15:35)  и в то же время не дающий абсолютно никаких реальных "++" по сравнению с С, хотя "рекомендовать" тут нет смысла - каждый использует то что ему ближе, Голословное заявление. Кому не даёт реальных ++? Мне даёт. И знаю немало людей, кому тоже даёт. QUOTE (sasamy @ Dec 20 2011, 15:35)  с++ на МК - это наглядный пример "ООП ради самой ООП". И опять вопрос (его почему-то приходится всегда задавать оппонентам): а причём тут ООП? Я знаю массу программ на С++, где ООП и не пахнет. А где ООП катит, так оно отлично ложится и даже на самые мелкие МК. В общем, такая дискуссия пуста, т.к. безпредметна. Надо конкретные аргументы приводить. А в таком ключи можно и на С наехать, дескать, нафиг не нужен, асм форева (проходили 10 лет назад).
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Dec 20 2011, 09:50
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(dxp @ Dec 20 2011, 13:24)  Сложный - да, но как бы эти порядки определить? Это общеизвестный факт и ничего тут не требуется определять. Цитата Кому не даёт реальных ++? Мне даёт. Вас уже спрашивал колобок о реальных плюсах, вы ему так и не сказали ничего кроме абстрактных "облегчение как проектирования софта, так и написания кода" - только я тоже самое могу сказать со своей стороны про С и это разговор ниочем - спор правши и левши какой рукой удобней ложку держать. Применительно к данной теме - зачем тут виртуальные ф-ции когда можно сделать простой switch/case ? Цитата И опять вопрос (его почему-то приходится всегда задавать оппонентам): а причём тут ООП? Не - это уже феерично - расхваливать преимущества C++ над С и при этом не использовать ни метапрограммирование ни ООП
|
|
|
|
|
Dec 20 2011, 10:44
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(sasamy @ Dec 20 2011, 14:28)  Ну так не надо витать в облаках. Можно писать ООП на С, и можно писать в чисто процедурном стиле на С++. Но есть хорошее народное наблюдение - шуруп, забитый в стену молотком, держится гораздо лучше, чем гвоздь, закрученный отверткой  . С++ позволяет писать в стиле 'С с классами', и даже в таком стиле это гораздо лучше, чем просто С (и для МК в том числе) Не использовать С++ имеет смысл в одном случае - если ты его не знаешь, т.к. этот язык обладает гораздо большей гибкостью, в части создания уродцев, чем С Так что используйте инструмент, которым владеете, и не поддавайтесь на провокации взять что то новое, исключительно потому, что оно новое А то будет, как у MS: Цитата История программных революций от Microsoft, вкратце: Сначала были Windows API и DLL Hell. Революцией №1 было DDE – помните, как ссылки позволили нам создавать статусные строки, отражающие текущую цену акций Microsoft? Примерно тогда же Microsoft создала ресурс VERSION INFO, исключающий DLL Hell. Но другая группа в Microsoft нашла в DDE фатальный недостаток – его писали не они!
Для решения этой проблемы они создали OLE (похожее на DDE, но другое), и я наивно вспоминаю докладчика на Microsoft-овской конференции, говорящего, что скоро Windows API перепишут как OLE API, и каждый элемент на экране будет ОСХ-ом. В OLE появились интерфейсы, исключающие DLL Hell. Помните болезнь с названием «по месту», при которой мы мечтали встроить все свои приложения в один (возможно, очень большой) документ Word? Где-то в то же время Microsoft уверовала в религию С++, возникла MFC решившая все наши проблемы еще раз.
Но OLE не собиралась, сложа руки смотреть на это, поэтому оно заново родилось под именем COM, и мы внезапно поняли, что OLE (или это было DDE?) будет всегда – и даже включает тщательно разработанную систему версий компонентов, исключающую DLL Hell. В это время группа отступников внутри Microsoft обнаружила в MFC фатальный недостаток – его писали не они! Они немедленно исправили этот недочет, создав ATL, который как MFC, но другой, и попытались спрятать все замечательные вещи, которым так упорно старалась обучить нас группа COM. Это заставило группу COM (или это было OLE?) переименоваться в ActiveX и выпустить около тонны новых интерфейсов (включая интерфейсы контроля версий, исключающие DLL Hell), а заодно возможность сделать весь код загружаемым через браузеры, прямо вместе с определяемыми пользователем вирусами (назло этим гадам из ATL!).
Группа операционных систем громким криком, как забытый средний ребенок, потребовала внимания, сказав, что нам следует готовиться к Cairo, некой таинственной хреновине, которую никогда не могли даже толком описать, не то, что выпустить. К их чести, следует сказать, что они не представляли концепции «System File Protection», исключающей DLL Hell. Но тут некая группа в Microsoft нашла фатальный недостаток в Java - её писали не они! Это было исправлено созданием то ли J, то ли Jole, а может, и ActiveJ (если честно, я просто не помню), точно такого же как Java, но другого. Это было круто, но Sun засудило Microsoft по какому-то дряхлому закону. Это была явная попытка задушить право Microsoft выпускать такие же продукты, как у других, но другие.
Помните менеджера по J/Jole/ActiveJ, стучащего по столу туфлей и говорящего, что Microsoft никогда не бросит этот продукт? Глупец! Все это означало только одно – недостаток внимания к группе ActiveX (или это был COM?). Эта невероятно жизнерадостная толпа вернулась с COM+ и MTS наперевес (может, это стоило назвать ActiveX+?). Непонятно почему к MTS не приставили «COM» или «Active» или «X» или «+» – они меня просто потрясли этим! Они также грозились добавить + ко всем модным тогда выражениям. Примерно тогда же кое-кто начал вопить про «Windows DNA» (почему не DINA) и «Windows Washboard», и вопил некоторое время, но все это почило раньше, чем все поняли, что это было.
К этому моменту Microsoft уже несколько лет с нарастающей тревогой наблюдала за интернет. Недавно они пришли к пониманию, что у Интернет есть фатальный недостаток: ну, вы поняли. И это приводит нас к текущему моменту и технологии .NET (произносится как «doughnut (пончик по-нашему)», но по-другому), похожей на Интернет, но с большим количеством пресс- релизов. Главное, что нужно очень четко понимать - .NET исключает DLL Hell.
В .NET входит новый язык, C#, (выясняется, что в Active++ Jspresso был фатальный недостаток, от которого он и помер). .NET включает виртуальную машину, которую будут использовать все языки (видимо, из-за фатальных недостатков в процессорах Интел). .NET включает единую систему защиты (есть все-таки фатальный недостаток в хранении паролей не на серверах Microsoft). Реально проще перечислить вещи, которых .NET не включает. .NET наверняка революционно изменит Windows-программирование... примерно на год. Автор - Ron Burk из WDJ.
|
|
|
|
|
Dec 21 2011, 08:01
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(XVR @ Dec 20 2011, 14:44)  Не использовать С++ имеет смысл в одном случае - если ты его не знаешь Если ты хорошо знаешь С использовать С++ нет вообще никакого смысла. http://yosefk.com/c++fqa/picture.html#fqa-6.5Цитата One thing is always true: where you can use C++, you can use C. In particular, if someone gave you C++ interfaces, a thin layer of wrappers will hide them. Using C instead of C++ has several practical benefits: faster development cycle, reduced complexity, better support by tools such as debuggers, higher portability and interoperability. When C++ is an option, C is probably a better option. По сути С++ дублирует функционал С и во многих случаях уступает ему при этом.
|
|
|
|
|
Dec 21 2011, 11:35
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(Сергей Борщ @ Dec 21 2011, 13:57)   Мне они не нужны - я его использую. Хотелось бы как раз от вас услышать аргументы, разъсняющие, в чем же я так "заблуждаюсь". Я вас не понимаю - вам не нужны аргументы или все же нужны ? Хотя мне все равно. Идея ткнуть носом в бесполезность чего-либо адептов потративших на изучение этого бесполезного годы изначально провальная  Цитата(dxp @ Dec 21 2011, 14:07)  Пример номер раз. Перегрузка имён функций.
... send(Slon); ... send(S);
Предъявите аналог на С? Абсолютно бесполезная фича. Кстати какая ф-ция будет вызвана при send(0) и что еще интересней если один из вариантов при этом будет принимать в качестве аргумента указатель ?
Сообщение отредактировал sasamy - Dec 21 2011, 11:43
|
|
|
|
|
Dec 21 2011, 11:42
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(sasamy @ Dec 21 2011, 15:35)  Идея ткнуть носом в бесполезность чего-либо адептов потративших на изучение этого бесполезного годы изначально провальная  А можно вопрос уважаемому sasamy, а вы С++ вообще то знаете? Писали на нем что нибудь объемное? Судя по вашим аргументам - нет. Пока они все в духе 'Пастернака не читал, но осуждаю' Вот, из классика : Цитата В наше время, когда уничтожают вредных насекомых, стерилизуя самцов, мы должны поднять уровень спора до абстрактной высоты. Давайте рассуждать о крахе и подъеме Голливуда, не видя ни одного фильма. Давайте сталкивать философов, не читая их работ. Давайте спорить о вкусе устриц и кокосовых орехов с теми, кто их ел, до хрипоты, до драки, воспринимая вкус еды на слух, цвет на зуб, вонь на глаз, представляя себе фильм по названию, живопись по фамилии, страну по "Клубу кинопутешествий", остроту мнений по хрестоматии.
|
|
|
|
|
Dec 21 2011, 19:47
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(XVR @ Dec 21 2011, 15:42)  Писали на нем что нибудь объемное? Объемное - нет и не собираюсь. http://sasamy.narod.ru/l4fiasco_at91.patch.gzЦитата(ReAl @ Dec 21 2011, 23:38)  1) На ассемблере+фортране в своё время было написано столько («практически все ОС написаны на ассемблере», на С только одно вон то), что с Вашими аргументами С нужно было убить сразу. Тут ключевое слово - было, на С и С++ пишут сейчас. Цитата 2) Сначала покажите хотя бы один пример, где С++ во многих случаях уступает ему (С) при этом.. «А то языком чесать...». Вы замахнулись на «объективную» оценку, тогда как малая распространённость С++ в МК, на мой взгляд, имеет в основе скорее субъективный фактор. Вот и докажите конкретным примером «уступания», что это таки объективные причины имеет. Во многих случаях - это я хватанул конечно  мне достаточно того что С++ не имеет никаких преимуществ при этом очень сложен, чтобы стать хорошим программистом С++ нужен не год и не два.
|
|
|
|
|
Dec 21 2011, 20:09
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(sasamy @ Dec 21 2011, 21:47)  Тут ключевое слово - было, на С и С++ пишут сейчас. Было время, когда в тогдашнее «сейчас» писали на асме и фортране, а С только появился. Тогда было «на асме, фортране и С пишут сейчас». И тогда было «большинство ОС написаны на асме, прикладного софта — на асме и фортране». С уже существовал. Вот тогда его и надо было Вашими аргументами убить. 15 лет назад в эмбеддерских кругах любители ассемблера (в основном — просто незнатели С) наскакивали на С точно так же, как и сейчас Вы на С++. При том, что с точки зрения инструментария ситуация с С в ембеддед была приблизительно такая же, как сейчас с С++ — для большинства архитектур есть. По поводу одного из аргументов (про несогласие потративших время с тем, что они потратили его зря) я уже говорил, добавив этот Цитата(sasamy @ Dec 21 2011, 21:47)  мне достаточно того что С++ не имеет никаких преимуществ при этом очень сложен, чтобы стать хорошим программистом С++ нужен не год и не два. могу только процитировать «и то, и другое я видел не раз — кого ты хотел удивитть?» (в смысле точно такой же аргумент, только без символов ++ и против С, а не за него, — я уже слышал). Цитата(sasamy @ Dec 21 2011, 21:47)  Во многих случаях - это я хватанул конечно  Я прошу один, в котором язык С++ уступает. «он слишком сложен» — не катит. Хотя бы потому, что он уже применялся против С, а не за него. И потому, что многие пользующиеся С сейчас — так его толком и не знают (надо-то тоже «не год, и не два»). А если ограничиться частью С++, то тоже не так и сложно. У меня же кое-что получается :-)
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Dec 22 2011, 08:30
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(ReAl @ Dec 22 2011, 00:09)  могу только процитировать «и то, и другое я видел не раз — кого ты хотел удивитть?» (в смысле точно такой же аргумент, только без символов ++ и против С, а не за него, — я уже слышал). Чего вы привязались к этому C++ ? Я естественно не авторитет в выборе языка и высказываю свое мнение, но если интересно - например не новичек в C/C++ и действительно авторитетный человек вот что говорит: http://www.minix3.ru/articles/Tanenbaum_interview_en.htmlЦитата Why is it C chosen as the language of development? Is transition to C++ or other object-oriented languages possible?
We started in C in 1987. C++ was not very widely used then. It is more legacy than ideology. If we transitioned, it would probably be to cyclone. Язык программирования Cyclone
Сообщение отредактировал sasamy - Dec 22 2011, 08:34
|
|
|
|
|
Dec 22 2011, 10:00
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(sasamy @ Dec 22 2011, 10:30)  Чего вы привязались к этому C++ ? Это мы привязались? Прозвучало как «пошла ты нафиг со своим утюгом» из анекдота. Цитата(sasamy @ Dec 22 2011, 10:30)  и высказываю свое мнение «мнения» бывают разные. Одно дело «мне язык не нравится, какой-то он перенавороченный» — это оценочное суждение и, вопрос вкусовой. Но Цитата(sasamy @ Dec 21 2011, 10:01)  По сути С++ дублирует функционал С и во многих случаях уступает ему при этом. это уже конкретное обвинение. Потрудитесь обосновать. Не переводя стрелки на Cyclone или, скажем, D, который мне импонирует. Цитата(sasamy @ Dec 22 2011, 10:30)  не новичек в C/C++ и действительно авторитетный человек вот что говорит: http://www.minix3.ru/articles/Tanenbaum_interview_en.htmlЦитата Why is it C chosen as the language of development? Is transition to C++ or other object-oriented languages possible?
We started in C in 1987. C++ was not very widely used then. It is more legacy than ideology. If we transitioned, it would probably be to cyclone. Он говорит, что С++ не был выбран потому, что тогда, в 1987, он еще не слишком широко использовался (от меня: да и был он тогда ещё без многих современных возможностей, хотя многое из ручной работы уже автоматизировал). И что это у него была больше дань традиции, чем идеологии. И что если он когда-то будет куда-то переходить, то это будет С-клон. Т.е. конкртеное решение конкретного человека в конкретных условиях. И ни слова не сказал о том, что ему не нравится С++ чем-то конкретным. « It is more legacy than ideology» Теперь передвинем этот текст на пол-периода в прошлое, другие люди и другой проект. И получим что-то в духе — Почему как язык разработки был выбран Фортран? Собираетесь ли вы переходить на другой язык, например, С? — Мы начинали в 1975. С ещё мало был тогда распространён. Если мы когда-то перейдем, то, возможно, на ADA
Было бы это аргументом против С в 1985 году? А если я теперь против Cyclone применю ваш аргумент? «Приведите мне примеры ОС, для микроконтроллеров и малых микропроцессоров, написанные на С-клоне. А вот на С++ больше написано» Вы сможете защитить С-клон? С++ хоть и давно существует, но в embedded-области еще новичок. Как бы «только-что появился», так как процессоры, применяемые в этой области, только стали подтягиваться к достаточному уровню. Ситуация очень похожа на положение С в embedded 15-20 лет назад. К тому моменту С уже давно существовал и прочно сидел в области «больших» процессоров. Но для «мелочи» частично не пролазил по объёмам ОЗУ/ПЗУ, частично — по (не)привычке, инерции и «неосвоенности». И когда уже разобравшиеся с ним за него агитировали — против С звучало всё то же, что тут прозвучало против С++. И до крайностей в духе — Это вы понтуетесь тем, что разобрались, так как кроме как для понтов это не годится. А нам некогда понтоваться, нам работать надо.И звучало, даже с линками на зачаточные компиляторы, такое: — вот если бы Модула, или хотя бы Паскаль нормальный, вот это да...Так и где сейчас в нашей области модула с паскалем? Насколько много осталось ассемблера? А где С? Вот доживём, посмотрим на С-клона в сравнении с С++. Если микро-дот-нет не задавит обоих :-) p.s. Когда почти 15 лет назад в упомянутой RU.EMBEDDED dxp уже начинал говорить о С++ — я тоже слушал недоверчиво :-)
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Dec 22 2011, 11:20
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(ReAl @ Dec 22 2011, 14:00)  Это мы привязались? Прозвучало как «пошла ты нафиг со своим утюгом» из анекдота. Под "привязались" я имел ввиду что вы уцепились за С++ как за панацею и явно ожидаете что в ближнем будущем все будут писать на С++ как сейчас на С. Цитата Потрудитесь обосновать. Скажем макросы - мощнейший инструмент кодогенерации в С и головная боль в С++ Цитата Он говорит...И ни слова не сказал о том, что ему не нравится С++ чем-то конкретным. «It is more legacy than ideology» На вполне конкретный вопрос про С++ он ответил что сегодня если бы и стал переходить то на cyclon - я специально ссылку дал - это все тот же старый добый С но который реально решает проблемы безопасности кода и С++ там даже близко не пахнет так как он ни одной этой проблемы не решает.
|
|
|
|
|
Dec 22 2011, 16:19
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
QUOTE По ходу, автор ссылки сам текст по ней не читал, ибо там чётко и конкретно сказано: QUOTE Макрос — самый неприятный инструмент С и C++, оборотень, скрывающийся под личиной функции, кот, гуляющий сам по себе и не обращающий никакого внимания на границы ваших областей видимости. Берегитесь его! <...> Мне не нравится большинство видов препроцессоров и макросов. Одна из целей C++ — сделать препроцессор C излишним (§4.4, §18), поскольку я считаю его большой ошибкой.
Макросы почти никогда не являются необходимыми в C++. Используйте const (§5.4) или enum (§4.8) для определения явных констант [см. рекомендацию 15], inline (§7.1.1) для того, чтобы избежать накладных расходов на вызов функции [но см. рекомендацию 8], template (глава 13) для определения семейств функций и типов [см. рекомендации с 64 по 67], и namespace (§8.2) для того, чтобы избежать конфликтов имен
Первое правило по применению макросов гласит: не используйте их до тех пор, пока у вас не будет другого выхода. Практически любой макрос свидетельствует о несовершенстве языка программирования, программы или программиста. Т.е. опять всё наоборот: заявлено, что в С макросы - могущество, а в С++ - геморрой (хотя и там, и там макросы - суть одно и то же, потому и могущество с геморроем несут одинаковое), а по ссылке чётко и конкретно сказано, что как раз-таки в С++ проблема с макросами решена на 99% именно средствами языка. Лично я использую макросы почти исключительно для организации условной трансляции и больше ни для чего. Для остального, как предлагается по ссылке, рулят константы, перечисления, встраиваемые функции и шаблоны.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Dec 22 2011, 17:53
|
Cундук
    
Группа: Участник
Сообщений: 1 478
Регистрация: 13-11-06
Из: Ростов-на-Дону
Пользователь №: 22 269

|
Цитата(dxp @ Dec 22 2011, 20:19)  .... ПМСМ, разногласия С-филов и С++-филов не отражают ничего, кроме разницы в характерах самих оппонентов. Дело в том, что кому-то достаточно сложно далеко абстрагироваться от первоначальных объектов, а кому-то нет. С++ характерен тем, что гораздо более полно отражает кактусы, пустившие корни в голове программиста. И если кто-то классифицирует (в смысле С++) объект так-то и так-то, то другой может и не разобрать то, что наворотил первый. Поскольку имеет свои представления об этом же объекте. В корне отличающиеся от представлений первого. Чтобы не быть голословным, попрошу уважаемое сообщество создать класс "машины электрические". А там посмотрим - у кого что выйдет...
|
|
|
|
|
Dec 23 2011, 05:55
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
QUOTE (Прохожий @ Dec 23 2011, 00:53)  ПМСМ, разногласия С-филов и С++-филов не отражают ничего, кроме разницы в характерах самих оппонентов. Дело в том, что кому-то достаточно сложно далеко абстрагироваться от первоначальных объектов, а кому-то нет. Это вряд ли. Скорее это зависит соотношения "сложность задач/доступные ресурсы (время/трудоёмкость). Попробуйте, например, GUI написать на С и С++, разницу поймёте сразу. QUOTE (Прохожий @ Dec 23 2011, 00:53)  С++ характерен тем, что гораздо более полно отражает кактусы, пустившие корни в голове программиста. И если кто-то классифицирует (в смысле С++) объект так-то и так-то, то другой может и не разобрать то, что наворотил первый. Поскольку имеет свои представления об этом же объекте. В корне отличающиеся от представлений первого. Тут уместно другое сравнение. Вот в С структуры уместно использовать? Ну, чтобы вместо использования пачки связанных по контексту задачи переменных упаковать их в структуру. Упрощает работу с данными - согласитесь, что работать с таким агрегатным объектом много удобнее - вместо нескольких мелких сущностей получаем одну более крупную. Когда подобных объектов в программе набирается с полдюжины, то структуры вообще начинают рулить (на любом языке, кстати - вон в SystemVerilog есть поддержка структур, так они очень сильно облегчают работу по сравнению с классическим Verilog'ом). Для работы со структурами используются функции. Сами по себе эти функции к структурам не относятся, поэтому программисту приходится эти связи поддерживать вручную. В частности, держать в голове, какая функция с какой структурой связана, и передавать руками указатель на структуру при вызове функции. Кроме того, часть данных в структуре носит локальный характер и за пределами оных функций вообще не используется, вдобавок и сама функция тоже используется только с данными типом структур. Напрашивается логичный вопрос: так почему бы не сделать специально некоторые функции ассоциированными со своим типом структур, а часть данных структур сделать доступными только для кода этих функций? При этом и передача указателя на структуру при вызове своих функций делается неявно, и обращение к данным внутри функции производится с неявным разыменовыванием (для улучшения читабельности). Вот так и приходим к концепции класса. Это самое первое приближение, которое часто называют "С с классами" (эту идеологию реализовывал первый компилятор Страуструпа). Как видно, ничего сложного тут нет, всё получается логично и по здравому смыслу, к кактусам в голове программиста отношения не имеет. Концепция класса даже в таком приближении даёт качественное преимущество перед обычной структурой - она позволяет описывать законченные объекты со своим поведением - т.е. позволяет думать уже не на уровне переменных и агрегатов, а на уровне объектов (аналогов объектов реального мира) и их интерфейсов - актуальность этого растёт по мере усложнения программы, а также предоставляет возможность отделения интерфейса от реализации (когда реализацию можно безопасно менять без риска порушить взаимодействие объекта с внешним окружением). QUOTE (Прохожий @ Dec 23 2011, 00:53)  Чтобы не быть голословным, попрошу уважаемое сообщество создать класс "машины электрические". А там посмотрим - у кого что выйдет... Вы слишком общо задали условия. Уточните, что должны делать оные "электрические машины", какие общие и частные свойства иметь, как применяться?
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
Сообщений в этой теме
_Артём_ Вопрос по С++ Dec 13 2011, 17:38 neiver Направление мысли правильное. Фабрика вам в помощь... Dec 13 2011, 18:38 _Артём_ Цитата(neiver @ Dec 13 2011, 20:38) Если ... Dec 13 2011, 18:49  neiver Цитата(_Артём_ @ Dec 13 2011, 22:49) Полу... Dec 13 2011, 19:12   _Артём_ Цитата(neiver @ Dec 13 2011, 21:12) Нет. ... Dec 13 2011, 20:07    Сергей Борщ QUOTE (_Артём_ @ Dec 13 2011, 22:07) Что-... Dec 13 2011, 21:06     _Артём_ Цитата(Сергей Борщ @ Dec 13 2011, 23:06) ... Dec 13 2011, 21:37 neiver Цитата(Danis @ Dec 14 2011, 12:33) ИМХО, ... Dec 14 2011, 08:51    kolobok0 Цитата(dxp @ Dec 14 2011, 15:59) ...какие... Dec 16 2011, 08:23     ReAl Цитата(kolobok0 @ Dec 16 2011, 10:23) Лич... Dec 16 2011, 09:57      kolobok0 Цитата(ReAl @ Dec 16 2011, 13:57) ...текс... Dec 17 2011, 21:46       dxp QUOTE (kolobok0 @ Dec 18 2011, 04:46) про... Dec 18 2011, 05:33     dxp Цитата(kolobok0 @ Dec 16 2011, 15:23) для... Dec 16 2011, 19:48      Danis Цитата(dxp @ Dec 16 2011, 22:48) А ваши р... Dec 16 2011, 20:55       _Артём_ Цитата(Danis @ Dec 16 2011, 22:55) Но дум... Dec 18 2011, 02:05        kolobok0 Цитата(_Артём_ @ Dec 18 2011, 06:05) ...Э... Dec 19 2011, 03:00         haker_fox QUOTE (kolobok0 @ Dec 19 2011, 11:00) вес... Dec 19 2011, 05:34         dxp QUOTE (kolobok0 @ Dec 19 2011, 10:00) я л... Dec 19 2011, 06:05          kolobok0 Цитата(dxp @ Dec 19 2011, 10:05) ..спасиб... Dec 19 2011, 09:04           sonycman Цитата(kolobok0 @ Dec 19 2011, 13:04) Есл... Dec 19 2011, 10:12         demiurg_spb При чём здесь это?
Как часто принимаются новые ста... Dec 20 2011, 10:33                          Прохожий Цитата(dxp @ Dec 23 2011, 09:55) Это вряд... Dec 23 2011, 18:42                           dxp QUOTE (Прохожий @ Dec 24 2011, 01:42) Вот... Dec 24 2011, 06:44                            sasamy Цитата(dxp @ Dec 24 2011, 10:44) Если же ... Dec 24 2011, 08:06                            Прохожий Цитата(dxp @ Dec 24 2011, 10:44) Речь идё... Dec 24 2011, 17:55                             dxp QUOTE (Прохожий @ Dec 25 2011, 00:55) Опя... Dec 25 2011, 04:58               haker_fox QUOTE (sasamy @ Dec 21 2011, 19:35) Абсол... Dec 21 2011, 11:52             XVR Цитата(sasamy @ Dec 21 2011, 12:40) Кстат... Dec 21 2011, 11:10              kolobok0 Предлагаю свернуть тему. А то НГ на носу. И страни... Dec 21 2011, 11:42           haker_fox QUOTE (sasamy @ Dec 21 2011, 16:01) http:... Dec 21 2011, 09:12           dxp QUOTE (sasamy @ Dec 21 2011, 15:01) Если ... Dec 21 2011, 10:07           ReAl Цитата(sasamy @ Dec 21 2011, 10:01) По су... Dec 21 2011, 12:12            dxp QUOTE (ReAl @ Dec 21 2011, 19:12) И тогда... Dec 21 2011, 13:23             Genadi Zawidowski Цитата(dxp @ Dec 21 2011, 17:23) Это был ... Dec 22 2011, 12:50            sasamy Цитата(ReAl @ Dec 21 2011, 16:12) А дальш... Dec 21 2011, 17:10       Сергей Борщ QUOTE (sasamy @ Dec 20 2011, 11:50) Приме... Dec 20 2011, 10:59        ViKo Цитата(Сергей Борщ @ Dec 20 2011, 13:59) ... Dec 20 2011, 11:13       dxp QUOTE (sasamy @ Dec 20 2011, 16:50) Это о... Dec 20 2011, 11:14  Danis Цитата(_Артём_ @ Dec 14 2011, 12:35) В см... Dec 16 2011, 09:28 Iptash С++ я бы сказал совершенно другой, отличный от С я... Dec 18 2011, 13:24 dxp QUOTE (Iptash @ Dec 18 2011, 20:24) С++ я... Dec 18 2011, 16:58  Iptash Цитата(dxp @ Dec 18 2011, 20:58) ... Наве... Dec 18 2011, 17:12 haker_fox Господа, может быть не будем заниматься поддержани... Dec 20 2011, 09:58 ViKo Я не знаю языка C++, хотя и прочитал Г. Шилдта до ... Dec 20 2011, 10:42 Сергей Борщ QUOTE (ViKo @ Dec 20 2011, 13:13) А я вот... Dec 20 2011, 12:43 ViKo Цитата(Сергей Борщ @ Dec 20 2011, 15:43) ... Dec 20 2011, 12:50 haker_fox QUOTE (Сергей Борщ @ Dec 20 2011, 20:43) ... Dec 20 2011, 13:54 Flexz Цитата(sasamy @ Dec 21 2011, 12:01) По су... Dec 21 2011, 08:34 Flexz Видимо, он имел ввиду единый, общий для разных ком... Dec 21 2011, 09:36 ReAl 1) На ассемблере+фортране в своё время было написа... Dec 21 2011, 19:38 toweroff sasamy,
вот у меня в соседней ветке конкретный во... Dec 21 2011, 20:11 neiver Макросы в голом Си настолько-же опасны как и в С++... Dec 22 2011, 11:57 sasamy Цитата(neiver @ Dec 22 2011, 15:57) Эти в... Dec 22 2011, 17:29  XVR Цитата(sasamy @ Dec 22 2011, 21:29) Эти в... Dec 23 2011, 07:28   sasamy Цитата(XVR @ Dec 23 2011, 11:28) Весь это... Dec 23 2011, 09:53    neiver Цитата(sasamy @ Dec 23 2011, 13:53) да вы... Dec 23 2011, 10:45     sasamy Цитата(neiver @ Dec 23 2011, 14:45) Есть ... Dec 23 2011, 11:10      neiver Цитата(sasamy @ Dec 23 2011, 15:10) А теп... Dec 23 2011, 11:26      XVR Цитата(sasamy @ Dec 23 2011, 15:10) А теп... Dec 23 2011, 14:12       sasamy Цитата(XVR @ Dec 23 2011, 18:12) Это точн... Dec 23 2011, 16:26        XVR Цитата(sasamy @ Dec 23 2011, 20:26) http:... Dec 23 2011, 18:26         sasamy Цитата(XVR @ Dec 23 2011, 22:26) Это вы к... Dec 23 2011, 18:34          XVR Цитата(sasamy @ Dec 23 2011, 22:34) Там о... Dec 24 2011, 16:52           sasamy Цитата(XVR @ Dec 24 2011, 20:52) проявляя... Dec 24 2011, 17:06            XVR Цитата(sasamy @ Dec 24 2011, 21:06) Это в... Dec 24 2011, 17:12           sasamy Цитата(XVR @ Dec 24 2011, 20:52) Не надо,... Dec 24 2011, 18:17            neiver Цитата(sasamy @ Dec 24 2011, 22:17) А о ч... Dec 24 2011, 20:31             sasamy Цитата(neiver @ Dec 25 2011, 00:31) Очень... Dec 24 2011, 21:20              neiver Цитата(sasamy @ Dec 25 2011, 01:20) Для в... Dec 25 2011, 07:43 ViKo А за сайтик http://www.programmer-lib.ru - спасибо... Dec 22 2011, 17:11 Сергей Борщ QUOTE (sasamy @ Dec 22 2011, 13:42) Потру... Dec 23 2011, 08:55 Flexz Цитата(sasamy @ Dec 23 2011, 22:34) ...мо... Dec 24 2011, 11:32 sasamy Цитата(Flexz @ Dec 24 2011, 15:32) Осталь... Dec 24 2011, 12:09 Flexz Цитата(sasamy @ Dec 24 2011, 16:09) Ищите... Dec 24 2011, 15:12
2 страниц
1 2 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|