|
|
  |
Вопрос по С++ |
|
|
|
Dec 21 2011, 08:34
|
Местный
  
Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797

|
Цитата(sasamy @ Dec 21 2011, 12:01)  По сути С++ дублирует функционал С и во многих случаях уступает ему при этом. Может приведете конкретные примеры этих многих случаев? Было бы очень интересно почитать.
|
|
|
|
|
Dec 21 2011, 09:12
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
QUOTE (sasamy @ Dec 21 2011, 16:01)  Это точка зрения одного человека. Она может быть ошибочной, а может быть правильной. На самом деле он прав! Только правда у каждого своя. Зачем навязывать правду? Делится ее - пожалуйста, навязывать не надо. Про навязывание, это я не Вам, уважаемый sasamy QUOTE (sasamy @ Dec 21 2011, 16:40)  Не нужно утрировать - хотя я понимаю что вы не со зла чушь сказали - видимо аргументов в пользу С++ просто нет. Кстати у C++ нет ни единого ABI ни name mangling, так что ассемблер даже лучше чем С++  Вот это да... А это что же тогда? Там есть раздел про Си++.
--------------------
Выбор.
|
|
|
|
|
Dec 21 2011, 10:07
|

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

|
QUOTE (sasamy @ Dec 21 2011, 15:01)  Если ты хорошо знаешь С использовать С++ нет вообще никакого смысла. На самом деле ровно наоборот: если хорошо знаешь С++, то использовать С нет смысла. QUOTE (sasamy @ Dec 21 2011, 15:01)  http://yosefk.com/c++fqa/picture.html#fqa-6.5QUOTE 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.
Написана редкостная чушь. От первого слова до финальной точки. Всё вывернуто ровно наизнанку. Видать аффтар ещё тот "знаток" плюсов. QUOTE (sasamy @ Dec 21 2011, 15:01)  По сути С++ дублирует функционал С и во многих случаях уступает ему при этом. Правда? Давайте проверим. Покажите дубль на С для следующих вещей: Пример номер раз. Перегрузка имён функций. CODE void send(char x) { TxBuf.push(x); TxBuf.send(sizeof(x)); } void send(uint16_t x) { TxBuf.push(x); TxBuf.push(x>>8ul); TxBuf.send(sizeof(x)); } ... char S; uint16_t Slon; ... send(Slon); ... send(S); Понятно, что можно написать версии функций для любых типов, включая классы и единообразно это использовать, не паря мозг, что там за конкретный объект передаётся. Предъявите аналог на С? Пример номер два. Например, работа с комплексными числами, код приводить не буду, примеров этого предостаточно. В С99, вроде, включили поддержку комплексных чисел на уровне компилятора. Но это не решение - многомерный объект может быть и не комплексным числом - например, вектор. Все операции там красиво выражаются на функциях-операторах. Аналог на С, плиз? Ну, и до кучи, чтобы не приводить банальности про параметризованные типы, - стандартная библиотека шаблонов. Если надо защищённый массив с быстрой индексацией, использую std::vector<>, если нужен список, то std::list<>, если очередь FIFO, то std::queue<>, если ассоциативный массив, то std::map<> и т.д. Причём операции все унифицированы - например, если хочу добавить объект в контейнер, то делаю container_name.push_back(object_name), и т.п. Общие операции с контейнерами унифицированы, поэтому не нужно досконально изучать интерфейс каждого контейнера. Мегамогучая штука. Как там это на С делается? В общем, вопросы-то, понятно, риторические. Ваша позиция тоже ясна в деталях, поэтому на этом с вами я дискуссию тоже прекращу, спасибо за участие.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
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
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Предлагаю свернуть тему. А то НГ на носу. И страницы множатся в данном топике  (круглый) ЗЫ С Новым Годом усех! Поменьше глюков! Побольше интересных задач!
|
|
|
|
|
Dec 21 2011, 11:42
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

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

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
QUOTE (sasamy @ Dec 21 2011, 19:35)  Абсолютно бесполезная фича. Кстати какая ф-ция будет вызвана при send(0) и что еще интересней если один из вариантов при этом будет принимать в качестве аргумента указатель ? 0 - это число, следовательно будет вызвана вторая функция. Вас не просили судить о полезности данной "фичи". Вас просили привести аналог. К сожалению, кроме пространственных рассуждений, Вы ничего привести конкретного не можете. Или не в состоянии. Так и признайтесь откровенно. Мы поймем. Порой лучше сказать правду, чем до последнего оправдываться...
--------------------
Выбор.
|
|
|
|
|
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 21 2011, 17:10
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(ReAl @ Dec 21 2011, 16:12)  А дальше — когда «большой» инструмент уже есть u вот дальше неплохо бы привести примеры проектов (желательно по теме - для МК) ченить серьезного что написано на нем а не на С, а языком чесать вы все горазды  Со своей стороны могу привести примеры - ядра ОС практически все на С написаны - на С++ по пальцам можно пересчитать.
Сообщение отредактировал sasamy - Dec 21 2011, 17:11
|
|
|
|
|
Dec 21 2011, 19:38
|

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

|
1) На ассемблере+фортране в своё время было написано столько («практически все ОС написаны на ассемблере», на С только одно вон то), что с Вашими аргументами С нужно было убить сразу. 2) Сначала покажите хотя бы один пример, где С++ во многих случаях уступает ему (С) при этом.. «А то языком чесать...». Вы замахнулись на «объективную» оценку, тогда как малая распространённость С++ в МК, на мой взгляд, имеет в основе скорее субъективный фактор. Вот и докажите конкретным примером «уступания», что это таки объективные причины имеет. Цитата(dxp @ Dec 21 2011, 15:23)  Это был Василевский.  Точно! У меня всегда была плохая активная память на имена :-)
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|