Форум: "Прочее";
Текущий архив: 2008.10.26;
Скачать: [xml.tar.bz2];
ВнизЧем вам лично не нравится CPP? Найти похожие ветки
← →
Alkid © (2008-08-29 15:22) [80]
> Mystic © (29.08.08 14:58) [75]
> 1) Количество таких переменных плодится и размножается,
> в результате вся выгода от многопоточности теряется: потоки
> последовательно ждут когда прочитается эта переменная.
Дык. Проще исправить один шаблонный класс и внедрить в него более умную систему синхронизации, чем во всех пропертях потом код переписывать.
← →
Tricky (2008-08-29 15:25) [81]
> По сравнению с Delphi - сильно проигрывает в синтаксисе,
> если Delphi читаешь без напряга - как текст, то здесь иногда
> приходится приостанавливаться и делать микро паузы (сам
> синтаксис не логика работы).
А вобще наверное возьму пример с Владимира Кладова, и переквалифицируюсь на Delphi - удобнее он просто. :)
← →
Mystic © (2008-08-29 15:37) [82]В последнем примере, возможно, погорячился. Надо поднять Страуструпа и посмотреть, можно ли нужным образом перегрузить операцию точка. Я с этим не сталкивался, вот так сразу сказать не могу. Помнить особенности перегрузки каждого оператора это дополнительные ячейки памяти в моей голове, а они так просто не наращиваются... Но даже в этом случае данное решение не позволяет вот так сразу забыть об своих особенностях поведения данного шаблона.
Т. е. работать с этим шаблоном не напрягаясь не получится, нужно все время помнить, что к этой переменной доступ имеют несколько потоков... В случае Lock/Unlock ситуация такая же. Но в особо спорных случаях надо в уме быстренько развернуть все шаблоны и посмотреть, а прокатит? Имхо, это только дополнительный напряг.
> Дык. Проще исправить один шаблонный класс и внедрить в него
> более умную систему синхронизации, чем во всех пропертях
> потом код переписывать.
Имхо, тут лучше с самого начала думать о том, как лучше всего синхронизировать доступ, как организовать вычисления. Начнем с того, что предложенная схема, имхо, проблем синхронизации почти не решает. Более ощутимый прирост даст эскалация блокировок, объединение совместно используемых переменных в одну критическую секцию и вообще минимализация вызовов EnterCriticalSection. Это уже вопросы более высокого порядка.
← →
@!!ex © (2008-08-29 15:43) [83]> В последнем примере, возможно, погорячился. Надо поднять
> Страуструпа и посмотреть, можно ли нужным образом перегрузить
> операцию точка. Я с этим не сталкивался, вот так сразу сказать
> не могу. Помнить особенности перегрузки каждого оператора
> это дополнительные ячейки памяти в моей голове, а они так
> просто не наращиваются... Но даже в этом случае данное решение
> не позволяет вот так сразу забыть об своих особенностях
> поведения данного шаблона.
Насколько я помню - точку нельзя перегружать.
За то, что разжевали - спасибо! Есть над чем подумать.
← →
@!!ex © (2008-08-29 15:47) [84]Вообще у нас этот шаблон применяется в точках, где главное, чтобы переменная не ломалась.
Тоесть два потока:
ОДин только на чтение, второй - работа с переменной полная.
Соответственно надо дать гарантию, что первый прочитает не поломанную переменную. Что приведенный шаблон вполне себе сносно реализует... А вот что-то сложнее... Хорошо что здесь привел код... НЕ напорюсь, когда усложнять будем. :)
← →
Mystic © (2008-08-29 16:37) [85]Да, точку перегрузить нельзя. Можно перегрузить
->
, но эта перегрузка только вернут некий объект, для которого будет вызвано еще раз->
. Поскольку возможности выполнить некоторое действия после возврата значения нет, то этот метод также неприменим. Более того, я пришел к выводу, что я абсолютно не представляю во во что развернетсяstatic syncproperty<int> i;
++i;
← →
Eraser © (2008-08-29 16:45) [86]> [74] @!!ex © (29.08.08 14:52)
в данном случае Interlocked* функции рулят, например InterlockedExchange, InterlockedIncrement и т.д.
← →
Mystic © (2008-08-29 16:52) [87]
> в данном случае Interlocked* функции рулят, например InterlockedExchange,
> InterlockedIncrement и т.д.
Ну хочется же через шаблоны. И чтобы любой тип...
← →
@!!ex © (2008-08-29 16:53) [88]> [87] Mystic © (29.08.08 16:52)
Ну так ничего не мешает приделать эти функции к шаблонам.
← →
ketmar © (2008-08-29 18:04) [89]Удалено модератором
Примечание: Не ругайся
← →
Mystic © (2008-08-29 18:24) [90]
> >[82] Mystic © (2008-08-29 15:37:00)
> >можно ли нужным образом перегрузить операцию точка.
> нет. только ->
Значит скоро выйдет новый стандарт и будет всем счастье
← →
ketmar © (2008-08-29 18:28) [91]>[90] Mystic © (2008-08-29 18:24:00)
угу. счастье ловить баги в реализациях стандарта разными компиляторами.
вообще, давно пора писать в резюме не «знаю C++», а «знаю m$ C++», «знаю borland C++», «знаю gnu C++», etc.
---
Do what thou wilt shall be the whole of the Law.
← →
@!!ex © (2008-08-29 19:47) [92]> [91] ketmar © (29.08.08 18:28)
Почему? Если писать нормально, то результат будет одинаковым на любом компиляторе.
← →
Alkid (2008-08-29 20:10) [93]
> ketmar © (29.08.08 18:28) [91]
Ты преувеличиваешь.
Я на работе пишу код который должен собираться 5-6 разными компиляторами.
Так что о состоянии дел с совместимостью компиляторов я знаю. Совместимость между production quality решениями хорошая.
← →
ketmar © (2008-08-30 04:06) [94]>[92] @!!ex © (2008-08-29 19:47:00)
>[93] Alkid (2008-08-29 20:10:00)
угу. пока не выходишь за subset, реализованый везде.
я уж молчу о том кайфе, который добавляют разные оптимизаторы — это занятная игра «что, где, когда» получается.
---
Understanding is not required. Only obedience.
← →
Marser © (2008-08-30 13:58) [95]А мне C# нравится :-)
← →
KilkennyCat © (2008-08-30 14:02) [96]А мне - девушки :)
← →
Asteroid © (2008-08-30 14:02) [97]> Alkid (28.08.08 22:42) [37]
> typedef void (A::*ClassAFuncPtr)() ; // тип указатель на функцию-член класса A
И имеем мы жесткую привязку к классу. Сойдет, но не всегда.
> XentaAbsenta © (29.08.08 13:20) [64]
> хз..., а насчёт редактора кода - посмотри на VCPP + VisualAssist
Глянем, спасибо.
> ketmar © (30.08.08 04:06) [94]
> угу. пока не выходишь за subset, реализованый везде.
Часто приходится? :)
← →
Tricky (2008-08-30 14:57) [98]
> KilkennyCat © (30.08.08 14:02) [96]
>
> А мне - девушки :)
Ты ж понимаешь, что интересоваться только одними девушками, и больше ни чем есть признак скудного ума. :)
← →
Alkid (2008-08-30 15:04) [99]
> ketmar © (30.08.08 04:06) [94]
Опять преувеличиваешь.
Мы на работе весьма полно используем С++ с его шаблонными наворотами и проч. Проблем не было. Самая большая проблема - разные варнинги на разных компиляторах.
> Asteroid © (30.08.08 14:02) [97]
> И имеем мы жесткую привязку к классу. Сойдет, но не всегда.
Это не большая проблема. А вообще - шаблоны, мой друг :)
← →
savyhinst © (2008-08-30 19:23) [100]ЧУВАКИ! вы просто жесть забыли сказать... В C++ нет слова with!!!
пример
C++
coolobject.items[i].childrens[j].method1;
coolobject.items[i].childrens[j].method2;
coolobject.items[i].childrens[j].method3;
coolobject.items[i].childrens[j].method4;
coolobject.items[i].childrens[j].val=i*k;
Object Pascal
with coolobject.items[i].childrens[j] do
begin
method1;
method2;
method3;
method4;
val:=i*k
end;
← →
ketmar © (2008-08-30 20:01) [101]>[99] Alkid (2008-08-30 15:04:00)
>Самая большая проблема - разные варнинги на разных компиляторах.
везёт, значит. или разработчики компиляторов, наконец, сумели кое-как договориться. %-)
>[100] savyhinst © (2008-08-30 19:23:00)
>ЧУВАКИ! вы просто жесть забыли сказать... В C++ нет слова with!!!
а-а-а-а! голактеко опасносте!!!111 мы все умрём!111111
---
All Your Base Are Belong to Us
← →
Virgo_Style © (2008-08-30 20:09) [102]Но, в общем-то, никто не мешает объявить на месте короткообозванную переменную и присвоить ей
coolobject.items[i].childrens[j]
← →
hinst (2008-08-30 20:19) [103]согласен. А вообще, лично мне в сиплюсплюс не нравятся: шаблоны и то, что там вообще слишком много всяких конструкций, сложностей, и синтаксических элементов. а также заголовочные файлы. В настоящем языке программирования синтаксис должен быть не многословен. А в си много лишнего
← →
ketmar © (2008-08-30 20:20) [104]>[103] hinst (2008-08-30 20:19:00)
складывается впечатление, что ты откуда-то из параллельного мира, где какой-то совсем не такой цпп, как тут у нас.
---
All Your Base Are Belong to Us
← →
oxffff © (2008-08-30 23:22) [105]
> А в си много лишнего
"Огласите пожалуйста весь список". Copyright. Все знают от куда.
← →
Alkid (2008-08-31 23:31) [106]
> ketmar © (30.08.08 20:01) [101]
> везёт, значит. или разработчики компиляторов, наконец, сумели
> кое-как договориться. %-)
Видимо сумели :)
> savyhinst © (30.08.08 19:23) [100]
Жжошь напалмом.
← →
ketmar © (2008-08-31 23:35) [107]>[106] Alkid (2008-08-31 23:31:00)
>Видимо сумели :)
ненадолго. вот выйдет новый стандарт — и опять будет обычный разброд с шатаением. %-)
---
All Your Base Are Belong to Us
← →
MemoryLeak (2008-09-01 03:15) [108]У Си++ на порядок лучше коммерческая поддержка, это и есть основное преимущество. Поддержка производителей железа и маштабная интеграция.
А у Delphi лучше общественная оценка в России, не факт что это плюс. Я бы не назвал её объективной.
...
Отступление...
Собирается совещание по поводу реализации предстоящего проекта: трудозатраты, бюджетирование, менеджмент.
Вариант выбирается - аутсорсинг, приглашаются представители фирмы и тех. консультанты.
Первое что слышно от Delphi-аутсорсеров:
1."Придётся переписать менеджер памяти. Лицензировать коммерческие версии комопнентов, чтобы не тратить время на разработку. :(( "
2. "Нет. Интеграция CVS это дополнительные расходы. Source Safe надо прикручивать, SVN и FreeVCS бесплатное говно и вообще чтобы было совместимо с MicroSoft надо немного поработать".
3."Что? Вы рассматриваете C# как альтернативу, ни в коем случае это страшный ужас."
4. "На какие задачи ориантирована ваша команда ? Любые системы, не предусматривающие real-time модели. Базы данных и клиент-серверные парадигмы - наш конёк".
5. "Почему не использовать 1C? реализация на освнове этого продукта обойдётся нам дешевле. В ответ обычно: ... ничего."
...
Резюме:
Когда вопрос касается денег, качества и сроков - всегда появляются сложности, которые не поддаются односложной оценке: "С++ лучше Delphi, давайте на нём делать".
А сравнение яызков - это не коммерческий подход, а любительский.
← →
Eraser © (2008-09-01 03:40) [109]> [108] MemoryLeak (01.09.08 03:15)
> У Си++ на порядок лучше коммерческая поддержка
у C++ лучше вся поддержка. любая технология, старая или новая, в первую очередь описана на C/C++.
> А у Delphi лучше общественная оценка в России
это еще с каких пор? "программистов на делфи" не очень то жалуют, мягко говоря. само словосочетание звучит как ругательство )
НО у Делфи есть ряд приемуществ, помимо того, что я его знаю лучше, библиотеки и компоненты на Делфи намного понятнее сишных.
на C++ огромный соблазн как-либо извратиться, чем все активно и пользуются. каждая конкретная серьезная библиотека, сама по себе, написана отлично, но стиль написания у всех подобных библиотек совершенно разный (парадигма инклудов этому сильно способствует), а это сильно мешает.. голова то не резиновая.
в Делфи как-то все более унифицировано - в любой, грамотно написаной библиотеке можно разобраться довольно быстро и без особого труда, imho.
← →
MemoryLeak (2008-09-01 04:07) [110]Eraser © (01.09.08 03:40) [109]
> это еще с каких пор? "программистов на делфи" не очень то
> жалуют, мягко говоря. само словосочетание звучит как ругательство
> )
Заграницей в большенстве случаев вообще не подозревают о существовании сего продукта :)
Я привёл статистический пример.
Проблема не в том, что Delphi лучше или хуже. Разработчики зачастую просто не могут обосновать почему им надо доверить проект. А у конкурентов очень веская аргументация в пользу тендера.
У Delphi есть своя ниша в России - это очень маленькие проекты программистов-одиночек. Своебразный инструмент "фриланса".
> на C++ огромный соблазн как-либо извратиться, чем все активно
> и пользуются. каждая конкретная серьезная библиотека, сама
> по себе, написана отлично, но стиль написания у всех подобных
> библиотек совершенно разный (парадигма инклудов этому сильно
> способствует), а это сильно мешает.. голова то не резиновая.
>
Говорить Си++ программисту, что его профильный язык сложен, синтаксис неразборчив - это сравни тому, как сказать японцу, что у него очень сложный язык, а русский на порядок понятней.:)
Думаю, что это не очень весомый агрумент. Моё мнение.
← →
Alkid (2008-09-01 10:46) [111]
> ketmar © (31.08.08 23:35) [107]
> ненадолго. вот выйдет новый стандарт — и опять будет обычный
> разброд с шатаением. %-)
Да, сие возможно вполне.
> Eraser © (01.09.08 03:40) [109]
Грамотные библиотки прекрасно совмещаются в рамках одной программы.
И никого извращаться С++ не провоцирует. Просто как инструмент, предоставляющий большой спектр возможностей, он предоставляет так же и большое поле для того, что бы накосячить. Это, безусловно, повышает ответственность программиста и требования к его квалификации.
← →
Alkid © (2008-09-01 11:17) [112]2 ketmar.
Кстати, почитал я про D.
Проект интересный, но уже кое-чем не нравится. На кой ляд отказываться от невиртуальных методов в классе?
← →
Mystic © (2008-09-01 12:11) [113]
> Проект интересный, но уже кое-чем не нравится. На кой ляд
> отказываться от невиртуальных методов в классе?
Насколько я видел реализации, там где очень критичны несколько тактов, там обычно не используется никакого ООП. А если нет требования к производительности, то проще все унифицировать, имхо.
← →
Alkid (2008-09-01 12:44) [114]
> Mystic © (01.09.08 12:11) [113]
> Насколько я видел реализации, там где очень критичны несколько
> тактов, там обычно не используется никакого ООП. А если
> нет требования к производительности, то проще все унифицировать,
> имхо.
Не, тут дело не в оптимизации. Я сам хочу решать, какие функции должны быть переопределяемы в наследниках, а каике - нет.
Вообще, по ходу ознакомления с документацией, возникло впечатление, что вместо меньшего количества базовых принципов из комбинации которых возникают полезные фитчи (например RAII как следствие более фундаментальной фитчи - возможности делать автоматические и статические экземпляры пользовательких классов) эти фитчи внедряются в сам язык.
Не знаю, насколько это правильно.
← →
ketmar © (2008-09-01 23:40) [115]>[112] Alkid © (2008-09-01 11:17:00)
я тоже не в восторге. но от цпп я ещё менее в восторге. %-)
---
Do what thou wilt shall be the whole of the Law.
← →
Alkid (2008-09-02 11:01) [116]
> ketmar © (01.09.08 23:40) [115]
Фиг его знает.
Цели у D хорошие, только, ИМХО, они куда-то не туда пошли. (см. 114).
И ещё нюанс: пока всё же С++ выигрывает у D как минимум в одном - он уже реально используемый инструмент.
ЗюЫю: А вообще язык моей мечты (какой точно, я не знаю ещё :)) похож на Пролог :)
← →
ketmar © (2008-09-02 11:43) [117]>[116] Alkid (2008-09-02 11:01:00)
ну, игрушки на D уже пишут. у меня вот куча bullet hell"ов на нём. %-)
а у меня язык мечты ещё проще: русский. %-)
---
Do what thou wilt shall be the whole of the Law.
← →
Virgo_Style © (2008-09-02 12:00) [118]ketmar © (02.09.08 11:43) [117]
русский
...руководящий
← →
Alkid (2008-09-02 12:51) [119]
> ketmar © (02.09.08 11:43) [117]
> Virgo_Style © (02.09.08 12:00) [118]
+1
Ещё лучше, что бы компьютер после пары неопределённых артиклей сам догадывался, что от него хотят и бежал за пивом :)
← →
ketmar © (2008-09-02 20:37) [120]>[119] Alkid (2008-09-02 12:51:00)
ну тогда уже доведём до идеала — чтобы догадывалось ещё до того, как скажешь. даже до того, как чётко мысль оформишь. только собрался о чём-то подумать, а это уже сделано (на всякий случай: гусары, тс-с-с-с! %-)
---
Understanding is not required. Only obedience.
Страницы: 1 2 3 4 вся ветка
Форум: "Прочее";
Текущий архив: 2008.10.26;
Скачать: [xml.tar.bz2];
Память: 0.7 MB
Время: 0.01 c