|
Вопрос по С++ |
|
|
|
 |
Ответов
|
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, 12:12
|

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

|
Цитата(sasamy @ Dec 21 2011, 10:01)  По сути С++ дублирует функционал С и во многих случаях уступает ему при этом. Вспоминается «прав был парторг — омерзительное зрелище». Сидел и пробовал вспомнить — в чём же С++ уступает С при том, что он есть надмножеством С. Единственное, что вспомнил, так это то, что '0' в С++ имеет тип char, а не int. В силу чего широкие символьные константы в духе 'DCBA' (сколько влезет в int на данной архитектуре, столько и можно писать) в С++ использовать нельзя, а в С — можно. Но это настолько редко используемая возможность С, что о ней мало кто будет тужить. Еесть ещё нюансы вроде (если я правильно понял) разницы в обработке Код extern volatile unsigned char some_port; ... void foo() { ... some_port; // <---- вот этой строки ... } но то скорее изменение поведения, чем функционала. Приведите таки пример того, где С++ уступает, а? Не опровержение приведенных dxp примеров расширения функционала (да и то в духе «я не понимаю, зачем это нужно, поэтому это не расширение»), а именно Ваш пример «уступания». p.s. А вообще — все до сих пор приведенные аргументы против С++ звучали ну совершенно так же, как аргументы против С 15 лет назад в RU.EMBEDDED. Даже «ну конечно, вы потратили время на изучение, как вы теперь признаете бесполезность» звучало в той или иной форме. И тогда же кто-то хорошо сказал (или процитировал) приблизительно такое: При написании больших программ на ассемблере рано или поздно приходится делать некие соглашения о вызовах, распределении регистров, ... Чтобы не делать это вручную, придумали языки высокого уровня, включая С. При написании больших программ на С рано или поздно начинаются массивы указателей в структурах, использование структур-«потомков» с добавленными в конце полями и т.п. Чтобы не делать это вручную...А дальше — когда «большой» инструмент уже есть, почему бы не использовать его в малом, если он это «малое» не рвёт на части? Даже когда мне нужно просверлить пару дырочек в дереве — я же беру электродрель, а не ручную (хотя у меня она есть и иногда, когда это _действительно_ нужно, я беру её) и тем более не буравчик (вот его у меня уже нет, хотя, пожалуй, немного посидев придумаю и то, где он лучше любой дрели). Для пары дырочек в стене я беру перфоратор, а не шлямбур и молоток (они тоже есть :-) ). Видел, как для снятия небольшой фаски на рейке человек включал шлифмашинку (одну из нескольких, уже закреплённую в верстаке за ручку), а не брал кусочек наждачки, как это сделал бы я. Просто у него этот инструмент есть и он им владеет. И я почему-то это понял, а не начал трындеть про отсутствие в нём необходимости, ну по крайней мере, «для таких маленьких реечек».
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Dec 22 2011, 12:50
|

Профессионал
    
Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634

|
Цитата(dxp @ Dec 21 2011, 17:23)  Это был Василевский.  Вот эта часть цитаты Цитата При написании больших программ на ассемблере рано или поздно приходится делать некие соглашения о вызовах, распределении регистров автор - я.
|
|
|
|
Сообщений в этой теме
_Артём_ Вопрос по С++ 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           Сергей Борщ QUOTE (sasamy @ Dec 21 2011, 10:01) Если ... Dec 21 2011, 08:12            sasamy Цитата(Сергей Борщ @ Dec 21 2011, 12:12) ... Dec 21 2011, 08:40             Сергей Борщ QUOTE (sasamy @ Dec 21 2011, 10:40) хотя ... Dec 21 2011, 09:57              sasamy Цитата(Сергей Борщ @ Dec 21 2011, 13:57) ... Dec 21 2011, 11:35               XVR Цитата(sasamy @ Dec 21 2011, 15:35) Идея ... Dec 21 2011, 11:42                sasamy Цитата(XVR @ Dec 21 2011, 15:42) Писали н... Dec 21 2011, 19:47                 ReAl Цитата(sasamy @ Dec 21 2011, 21:47) Тут к... Dec 21 2011, 20:09                  sasamy Цитата(ReAl @ Dec 22 2011, 00:09) могу то... Dec 22 2011, 08:30                   ReAl Цитата(sasamy @ Dec 22 2011, 10:30) Чего ... Dec 22 2011, 10:00                    sasamy Цитата(ReAl @ Dec 22 2011, 14:00) Это мы ... Dec 22 2011, 11:20                     Сергей Борщ QUOTE (sasamy @ Dec 22 2011, 13:20) Скаже... Dec 22 2011, 11:39                      sasamy Цитата(Сергей Борщ @ Dec 22 2011, 15:39) ... Dec 22 2011, 11:42                       dxp QUOTE Потрудитесь книжки почитать
http://www.progr... Dec 22 2011, 16:19                        Прохожий Цитата(dxp @ Dec 22 2011, 20:19) ....
ПМС... Dec 22 2011, 17:53                         dxp QUOTE (Прохожий @ Dec 23 2011, 00:53) ПМС... Dec 23 2011, 05:55                          Прохожий Цитата(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            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
|
|
|