Здравствуйте, Alexéy Sudachén, Вы писали:
AS>>>>И ты узнаешь как глубока кроличья нора. Да именно так. RVO и т.д. Вместо простого указателя. P>>>ога, простого указателя, который при создании нужно добавить в tls stack, со своим deleter'ом, который раскручивается где-то наверху callstack'а, ога — простым AS>Ты где-то видел в приведённом примере ручное добавление чего бы то ни было куда бы то ни было? Фантазии покоя не дают?
а я не говорил что его нужно руками добавлять, но простоты это ему не прибавляет
Здравствуйте, Олег К., Вы писали:
ОК> что ты там наворотил и желания разбираться нету. Хочешь сказать что ты сделал все на чистом ANSI C?
на счёт его макроса для действия в конце блока не уверен (я помню он по поводу подобного кода, не раз тему создавал, то на intel что-то отвалится, то ещё что-то),
да и не в нём суть, а такого рода автопул реализовать на чистом C можно. (ну там без TLS, и т.п.)
Здравствуйте, Alexéy Sudachén, Вы писали:
AS>Для этого в С++ вообще-то надо смарты не забывать и не встать на грабли когда они хитро будут интерферировать.
что будет, если сохранить где-нибудь выше по callstack'у (либо вернуть) такой autopooled указатель?
Здравствуйте, Alexey Sudachen, Вы писали:
AS>>>И чего. Мисье теоретик? Т>>Ты чего, обиделсо что кто то нашёл способ сделать это проще?
AS>Нет, просто в природе существуют другие компиллеры.
Ты хотел сказать "старые стандарты"
Здравствуйте, Alexey Sudachen, Вы писали:
AS>Бывает иногда такое желание.... но как почитаю форум — сразу проходит.
Не надо лукавить. Оно у тебя "проходит" как толька появляются неудобные вопросы.
AS> Ну вот честно, оно вам надо?
Надо. Раз спрашиваем — значит надо.
AS>Мне тем более.
Значит и тебе тем более надо
Здравствуйте, Alexey Sudachen, Вы писали:
AS>Для этого в С++ вообще-то надо смарты не забывать
Это называется "не использовать сырые указатели для владения данными".
AS> и не встать на грабли когда они хитро будут интерферировать.
Например? Ну кроме тупых ошибок когда сырой указатель из new суют сразу в несколько смартов на владение.
Здравствуйте, Alexey Sudachen, Вы писали:
AS>В мире похоже существует только C++. Всё что можно хоть как-то притянуть в модель уютного плюсового мирка — калька с плюсов. Однако!
Переведи на русский, плз. Я что то не понял что ты хотел сказать.
AS>__Auto_Release { всё созданное в этом блоке будет разрушено } AS>__Auto_Release всё в созданное на пуле в этой строке кода будет разрушено AS>__Auto_Ptr(p) { всё кроме p созданное в пуле в этом блоке будет разрушено }
Т.е. вручную таки надо будет scope задавать, помимо языкового scope.
Т>>Нет уж, сделал заявление — будь добр объяснить что ты имеешь в виду. А то как то уж больно непонятно ты выражаешься когда дело доходит до С++ конструкций. AS>Пипец. Ну вы блин как дети.
Мы тролли. У меня даже дисклеймер есть!
AS>Кто хендлит буфер?
Владеет им, ты имел в виду?
Кто угодно, зависит от того как ты используешь и что тебе с ним делать надо. У меня в ситуации с хэшами обычно на стеке лежит вот такое:
SecureBuffer<BYTE, SHA512::HashSize> hash;
Это библиотечный класс криптолибы который ведёт себя как обычный массив фиксированного размера, но noncopyable и затирает свой буфер в деструкторе.
Вот он владеет буфером. Хэндлит если по твоему.
Вообще в случае с хэшами — размер буфера там фиксированный и известен на этапе компиляции.
AS>>>Я знаю что ты фанат С++. Ты знаешь что мне покласть на догматы. Т>>Это гнилые отмазки и слив. AS>Туалет дальше коридору.
А ты, опытный! (тм)
Здравствуйте, Alexey Sudachen, Вы писали:
AS>И ты узнаешь как глубока кроличья нора. Да именно так. RVO и т.д. Вместо простого указателя.
Именно так. Никаких сырых указателей без владельца бегать не должно.
зиг>>>но а остальное-то, что, тоже базовые знания? рефлекшн, многопоточность? ну ка приведи пример где они могут быть нужны чтоб формы делать
E__>>Когда вижу формы(десктопные), сделанные без использования многопоточности(т.е. "пилим все действия в потоке гуи"), я начинаю очень не любить тех, кто принял решение дать задание писать эту форму человеку, не знакомому с потоками.
зиг>я не про десктоп
А я не телепат, но значение "форма" в программинге — скорее десктопное(хотя, понятно, веб — тоже формы). Потому и указал специально.
Для веб-форм, хотя-бы кому-то в команде, как минимум, неплохо бы знать нюансы класслоадеров, например(если мы про джаву). И понимать, что такое permgen, и почему иногда возникают его нехватки(и, главное, чем они вызваны, и как это устранить). А это уже относится к знанию кишков jvm, и такой человек врядли не будет знать рефлекшн и многопоточность.
Хотя согласен, именно для клепания форм оно нужно опосредованно, хотя, с пониманием нюансов можно не допустить неприятных ошибок.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
AS>>Опять же ты бы код внимательно про TLS почитал, прежде чем фигню писать. И желательно не то старьё которое у тебя на винте лежит. P>Это стоит понимать как "с тех пор у меня отрос очень сильный С и теперь там все еще лучше"?
Нет, это надо понимать как — теперь там этот TLS действительно появился, а не только упоминание о нём ( как и многопоточность). Но ведь чукча не читатель, чукча — писатель.
AS>>>>И чего. Мисье теоретик? Т>>>Ты чего, обиделсо что кто то нашёл способ сделать это проще? AS>>Нет, просто в природе существуют другие компиллеры. Т>Ты хотел сказать "старые стандарты"
Нет, я не только хотел сказать, но ВСЕГДА говорю. — Существуют ТОЛЬКО компиляторы. Стандарты это фантазия некоторой группы людей о идеальном мире, когда нибудь, где нибудь, частично он даже воплощается в реальность. Однако программист пишущий на стандарте, а не на компиляторе — бесполезен чуть менее чем полностью.
Компилятор, операционка и железка — это реальность данная нам в ощущения, стандарты — теория о том какой реальность хотели бы видеть различные группы людей. Писать на стандарте физически нельзя, он не умеет превращать исходники в исполняемый код.
Безграничная любовь к стандарту и столь же глубокая вера в него — как лакмусовая бумажка, практически однозначный критерий теоретика.
AS>>В мире похоже существует только C++. Всё что можно хоть как-то притянуть в модель уютного плюсового мирка — калька с плюсов. Однако! Т>Переведи на русский, плз. Я что то не понял что ты хотел сказать.
Ну, как ты разве не знаешь? Мне вот постоянно говорят что любой полиморфизм стыбрен из С++ и построен на vmt. Любой автоматический контроль за ресурсами упёрт из C++ и является пародией на RAII. Любая структурная обработка ошибок скопирована с C++.... С++ — предок слонов, покупайте, наш C++!
Т>Т.е. вручную таки надо будет scope задавать, помимо языкового scope.
Ну я так понимаю здесь ты scope в ручную не задаёшь да? Т>SecureBuffer<BYTE, SHA512::HashSize> hash;
[]
AS>Но ведь чукча не читатель, чукча — писатель.
Ну, раз писатель, дарю идею — напиши книжку про свой "фреймворк", типа Modern C Design. соберешь кучу лута, а на форуме будут обсуждать укушенных Sudachén'ом. PROFIT!
P>>>>>кстати, на счёт этого макроса — а разве нельзя его было сделать через for? AS>>>>А ты сделай. P>>>см выше AS>>Круто. Только это С. P>http://ideone.com/4cSQN P>"C99 strict (gcc-4.3.4)"
Здравствуйте, Alexey Sudachen, Вы писали:
AS>Нет, я не только хотел сказать, но ВСЕГДА говорю. — Существуют ТОЛЬКО компиляторы. Стандарты это фантазия некоторой группы людей о идеальном мире, когда нибудь, где нибудь, частично он даже воплощается в реальность.
Отчасти согласен, но вот беда, компиляторы постоянно меняются.
AS> Однако программист пишущий на стандарте, а не на компиляторе — бесполезен чуть менее чем полностью.
Компилятор обязан соотвествовать хотя бы одному стандарту. Иначе это плохой компилятор и от него можно ожидать подлянок в самых неожиданных местах. Он разумеется имеет право на существование, но вот пользоваться им — на свой страх и риск. Если где то компилятор вдруг не соотвествует — следует зафайлить багрепорт производителю. Если производитель не желает приводить глючащее поведение к стандарту — стоит подумать о вменяемости производителя и отказе от его продукции.
Тут не прогибаться под баги компилера надо а требовать соблюдения стандарта.
Если непонятно почему — спроецируй это на ГОСТы.
Здравствуйте, Alexey Sudachen, Вы писали:
Т>>Т.е. вручную таки надо будет scope задавать, помимо языкового scope. AS>Ну я так понимаю здесь ты scope в ручную не задаёшь да? Т>>SecureBuffer<BYTE, SHA512::HashSize> hash;
точно так же как я тут "задаю" scope для переменной i.
void foo ()
{
bar ();
if (foofoo ())
{
int i;
foobar ();
}
}
Ты действительно считаешь меня идиотом?! Вопрос конечно риторический, но всё-таки?
Кстати, про TLS не забыл? )))
В принципе что-то типа этого многие таки и используют. Для обработки исключений. Автоматического управления кроме ручного запихивание а авториелиз пул я что-то не видел. Может и есть, и наверняка даже похожим способом.
и ещё несколько, уже не помню... но ИМХО практически все при этом стараются юзать какие-то расширения компилера. И с такими макро-наворотами, что мой малюсенький макрос + трюк со switch'oм — сама простота. Я так понимаю именно switch тебя возбуждает, а совсем не макросы или факт неиспользования С++. Ну да, есть такая конструкция в языке, что же тут поделаешь, но не все её похоже способны осилить.
Ты сырки то посмотри чуток внимательнее, там вообще-то два способа. И нормально используется совсем не тот, который ты увидел. Хотя есть у меня чуЙство что со второго тебя вообще на части порвёт от возмущения. ))))
Здравствуйте, Alexéy Sudachén, Вы писали:
P>>Это устроит? P>>http://ideone.com/sPo5k AS>Ты действительно считаешь меня идиотом?! Вопрос конечно риторический, но всё-таки?
А что не так?
P>>>>>кстати, на счёт этого макроса — а разве нельзя его было сделать через for?
AS>>>>А ты сделай.
я сделал, но ответа не получил
AS>Кстати, про TLS не забыл? )))
нет, не забыл — естественно нужен TLS
AS>Я так понимаю именно switch тебя возбуждает, а совсем не макросы или факт неиспользования С++. Ну да, есть такая конструкция в языке, что же тут поделаешь, но не все её похоже способны осилить.
ога, судя по своим сообщениям, даже Intel'овский компилер что-то подобное не прожевал. И кто там теоретизирует?
Если серьёзно, то твой switch меня совсем не возбуждает, я просто хотел узнать чем более простая реализация через for не подошла, но видимо не судьба.
Ну например, раскрутка стека. Одна ошибка с return/break — утечка куска памяти.
AS>>Кстати, про TLS не забыл? ))) P>нет, не забыл — естественно нужен TLS
Правда, что же я его не вижу-то? ))) Желательно чтобы CL/WIN32/POSIX в одном флаконе. Не находишь что как-то насемитрично получается? С меня работающий код, а с тебя типа идея, которая как бы 'очевидно' делает то же самое. Не первый раз уже. Теоретики, они такие теоретики.
AS>>Я так понимаю именно switch тебя возбуждает, а совсем не макросы или факт неиспользования С++. Ну да, есть такая конструкция в языке, что же тут поделаешь, но не все её похоже способны осилить. P>ога, судя по своим сообщениям, даже Intel'овский компилер что-то подобное не прожевал. И кто там теоретизирует?
Не даже, а единственный из всего что мне доступно. Что кстати баг, но таки это уже возвращает нас к вопросу о так любимых тобой стандартах. Как-то вот не работают стандарты. Весело да?