реклама на сайте
подробности

 
 
10 страниц V  < 1 2 3 4 5 > »   
Reply to this topicStart new topic
> Вопрос по С++
sasamy
сообщение Dec 20 2011, 09:50
Сообщение #31


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(dxp @ Dec 20 2011, 13:24) *
Сложный - да, но как бы эти порядки определить?


Это общеизвестный факт и ничего тут не требуется определять.

Цитата
Кому не даёт реальных ++? Мне даёт.


Вас уже спрашивал колобок о реальных плюсах, вы ему так и не сказали ничего кроме абстрактных "облегчение как проектирования софта, так и написания кода" - только я тоже самое могу сказать со своей стороны про С и это разговор ниочем - спор правши и левши какой рукой удобней ложку держать. Применительно к данной теме - зачем тут виртуальные ф-ции когда можно сделать простой switch/case ?

Цитата
И опять вопрос (его почему-то приходится всегда задавать оппонентам): а причём тут ООП?


Не - это уже феерично - расхваливать преимущества C++ над С и при этом не использовать ни метапрограммирование ни ООП sm.gif
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 20 2011, 09:58
Сообщение #32


Познающий...
******

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



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


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 20 2011, 10:09
Сообщение #33


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Я скажу может крамольную вещь и даже кому-то будет обидно, но ничего - переживетеsm.gif
1. Невозможно действительно грамотно писать на АСМ не зная в достаточной степени процедурно-ориентированного языка программирования
2. Невозможно действительно грамотно писать на Си не зная в достаточной степени С++.

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


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
sasamy
сообщение Dec 20 2011, 10:28
Сообщение #34


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(demiurg_spb @ Dec 20 2011, 14:09) *
Я уверен, что именно те кто ещё на вы с текущим инструментарием (читай языком), как раз любят теоретизировать о бесполезности языка следующего уровня абстракции.


Специально для вас и прочих теоретиков Не дайте Астронавтам Архитектуры вас запугать
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 20 2011, 10:33
Сообщение #35


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



При чём здесь это?
Как часто принимаются новые стандарты с++?
Как они повлияли на необходимость смены технологии и как следствие была-ли велика потребность в изучении лишнего-ненужного материала?


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 20 2011, 10:42
Сообщение #36


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Я не знаю языка C++, хотя и прочитал Г. Шилдта до половины. Без практики знаниями не запасешься. Но знаю точно, что рано или поздно перейду на него. Возможно, к тому времени появится новый язык, возможно, он уже есть. Снова буду догонять. Мир становится сложнее, задачи становятся сложнее, и для решения этих задач нужно применять соответствующие инструменты.
Go to the top of the page
 
+Quote Post
XVR
сообщение Dec 20 2011, 10:44
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(sasamy @ Dec 20 2011, 14:28) *
Специально для вас и прочих теоретиков Не дайте Астронавтам Архитектуры вас запугать
Ну так не надо витать в облаках. Можно писать ООП на С, и можно писать в чисто процедурном стиле на С++. Но есть хорошее народное наблюдение - шуруп, забитый в стену молотком, держится гораздо лучше, чем гвоздь, закрученный отверткой rolleyes.gif . С++ позволяет писать в стиле 'С с классами', и даже в таком стиле это гораздо лучше, чем просто С (и для МК в том числе)

Не использовать С++ имеет смысл в одном случае - если ты его не знаешь, т.к. этот язык обладает гораздо большей гибкостью, в части создания уродцев, чем С 1111493779.gif

Так что используйте инструмент, которым владеете, и не поддавайтесь на провокации взять что то новое, исключительно потому, что оно новое laughing.gif

А то будет, как у 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.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 20 2011, 10:59
Сообщение #38


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (sasamy @ Dec 20 2011, 11:50) *
Применительно к данной теме - зачем тут виртуальные ф-ции когда можно сделать простой switch/case ?
А не зае**тесь сначала множить switch/case там, где должен быть вызов виртуальной функции, а потом шерстить весь код, чтобы найти все switch и не забыть в какой-нибудь из них добавить очередной case?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 20 2011, 11:13
Сообщение #39


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Сергей Борщ @ Dec 20 2011, 13:59) *
А не зае**тесь сначала множить switch/case там, где должен быть вызов виртуальной функции...

А я вот сделал несколько массивов указателей на функции, и не зае**лся. Или это не про то речь?
Go to the top of the page
 
+Quote Post
dxp
сообщение Dec 20 2011, 11:14
Сообщение #40


Adept
******

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



QUOTE (sasamy @ Dec 20 2011, 16:50) *
Это общеизвестный факт и ничего тут не требуется определять.

Общеизвестный факт конкретно о чём? А я про порядки спрашивал. Сколько порядков и как это определить? Например, насколько сложнее написать С++ класс по сравнению с С структурой? Конкретный вопрос. На сколько порядков?

QUOTE (sasamy @ Dec 20 2011, 16:50) *
Вас уже спрашивал колобок о реальных плюсах, вы ему так и не сказали ничего кроме абстрактных "облегчение как проектирования софта, так и написания кода" -

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

Вы хотите конкретики? На какие темы из С++? Про отделение интерфейса от реализации и построение кода по более безопасной модели (классы и инкапуляция и абстракция данных) надо рассказывать? А про возможность быстро, просто и безопасно расширять функциональность объектов путём повторного использования кода (наследование) надо рассказывать? А про параметризованные типы, когда можно, например, получить кольцевой буфер для uint8_t, а можно для float или вообще структур:

ring_buffer<uint8_t, 32> TxBuf;
ring_buffer<float, 10> DataPool;

надо рассказывать? Мне вот думается, что нет, т.к. по вашим постам я знаю, что вы далеко не новичок в нашем деле и должны прекрасно знать эти возможности и их преимущества. Надеюсь, не нужно доказывать, что это простые и полезные средства языка, практически не тянущие оверхеда, весьма кстати при разработке софта в том числе и на МК. ЯП С не даёт ничего похожего. При той же реализации кольцевых буферов, это придётся в каждом случае делать руками со всеми вытекающими (трудозатраты, ошибки), а тут можно хоть структуры метать или типизированные указатели (а не void*).

QUOTE (sasamy @ Dec 20 2011, 16:50) *
какой рукой удобней ложку держать. Применительно к данной теме - зачем тут виртуальные ф-ции когда можно сделать простой switch/case ?

Про это мне не известно, это автор темы знает, что ему лучше подходит. Но вообще-то там вопрос был не о способе выбора, а о размещении реализации. Симпатичное, ПМСМ, решение было предложено с буфером и placement new. Кстати, именно вместе со switch.

QUOTE (sasamy @ Dec 20 2011, 16:50) *
Не - это уже феерично - расхваливать преимущества C++ над С и при этом не использовать ни метапрограммирование ни ООП sm.gif

Куда более феерично заявлять, что без метапрограммирования и ООП это уже не С++. Я вам выше привёл основные средства языка, они покрывают 90% потребностей программ для МК и отлично работают.

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



--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 20 2011, 12:43
Сообщение #41


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (ViKo @ Dec 20 2011, 13:13) *
А я вот сделал несколько массивов указателей на функции, и не зае**лся. Или это не про то речь?
Речь была о switch/case:
QUOTE (sasamy @ Dec 20 2011, 11:50) *
зачем тут виртуальные ф-ции когда можно сделать простой switch/case ?


А вам три вопроса:
1) А как, по-вашему, реализованы виртуальные функции в плюсах?
2) А не зае**тесь ползать по своим массивам добавляя новые/удаляя ненужные функции? Попутно: не боитесь добавить новую функцию не в ту ячейку массива или удалить не ту функцию?
3) Ну и ради чего этот закат солнца вручную, если в плюсах такой же механизм реализуется в виде виртуальных функций автоматически, без лишней писанины и без опасности глупых ошибок/опечаток?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 20 2011, 12:50
Сообщение #42


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Сергей Борщ @ Dec 20 2011, 15:43) *
А вам три вопроса:
1) А как, по-вашему, реализованы виртуальные функции в плюсах?
2) А не зае**тесь ползать по своим массивам добавляя новые/удаляя ненужные функции? Попутно: не боитесь добавить новую функцию не в ту ячейку массива или удалить не ту функцию?
3) Ну и ради чего этот закат солнца вручную, если в плюсах такой же механизм реализуется в виде виртуальных функций автоматически, без лишней писанины и без опасности глупых ошибок/опечаток?

Если это ко мне вопросы, то:
1) Я плюсов не знаю, увы мне!
2) За..трахивало маленько, но у меня был план (макет, шаблон, стиль?), которого придерживался. Все более-менее структурировано. Мимо не промахивался.
3) Я плюсов не знаю, увы мне!
P.S. Намекните, кто-нибудь, что это такое, виртуальные функции?
upd. Сам прочитал.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 20 2011, 13:54
Сообщение #43


Познающий...
******

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



QUOTE (Сергей Борщ @ Dec 20 2011, 20:43) *
1) А как, по-вашему, реализованы виртуальные функции в плюсах?

А я как раз сегодня про это читал у Страутстрапа laughing.gif Через таблицу указателей...


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Dec 21 2011, 08:01
Сообщение #44


Знающий
****

Группа: Участник
Сообщений: 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.


По сути С++ дублирует функционал С и во многих случаях уступает ему при этом.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 21 2011, 08:12
Сообщение #45


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (sasamy @ Dec 21 2011, 10:01) *
Если ты хорошо знаешь С использовать С++ нет вообще никакого смысла.
Не используйте, разрешаем. Если ты хорошо знаешь ассемблер, использовать С нет вообще никакого смысла.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

10 страниц V  < 1 2 3 4 5 > » 
Reply to this topicStart new topic
8 чел. читают эту тему (гостей: 8, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 09:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01537 секунд с 7
ELECTRONIX ©2004-2016