Re[69]: Работа - с чего начать: С++ или С#?
От: COFF  
Дата: 07.05.09 19:48
Оценка: -1
Здравствуйте, gandjustas, Вы писали:

COF>>Они позволяют реализовывать осмысленные стратегии управления ресурсами, в том числе отличными от памяти.

G>Осмысленное в твоем понимании — ручное?

Осмысленное — это значит сделал один раз и забыл, все работает. А ручное — это как-раз подход C#, присвоил переменную, не забудь вызвать функцию типа SubscribeResource, обнулил — UnsubscribeResource ну и так далее.
Re[71]: Работа - с чего начать: С++ или С#?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 07.05.09 19:48
Оценка:
Здравствуйте, MxKazan, Вы писали:

MK>Здравствуйте, Геннадий Васильев, Вы писали:


ГВ>>А замкнуть "по ссылке" их можно? То есть так, чтобы структура "физически" осталась в стеке конструирующей лямбду функции? Или только "по значению", то есть — копированием в соответствующий экземпляр класса сконструированной лямбды?

MK>Я напишу про общий случай, т.к. спецификацию на язык не читал. Так вот, копирования никакого нет. Компилятор превращает лямбду в класс, у которого поля — это замкнутые переменные, а единственный метод — тело (или как там оно называется) лямбды. Все операторы работающие с замкнутой переменной вне лямбды, переписываются на обращение к полю класса.

Примерно то же самое, кстати, должен делать и компилятор C++. Лямбда тоже преобразуется в класс с единственным методом (не считая конструктора копии, кажется) — "operator()(сигнатура, выведенная из параметров лямбды)".

По сути вопроса — понятно. Не знаешь, значит — не знаешь.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[64]: Работа - с чего начать: С++ или С#?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 07.05.09 19:51
Оценка: :)
Здравствуйте, Хвост, Вы писали:

Х>Здравствуйте, gandjustas, Вы писали:


Х>>>Здравствуйте, gandjustas, Вы писали:


G>>>>А если у тебя вся программа состоит из таких нтенсивных операций, например высоконагруженный сервер?

Х>>>даа, вся программа состоит из аллокаций в хипе, такую ещё поискать надо, а как же твои незабвенные 10% кода отнимают 90% ресурсов? или ето не распространяется на высоконагруженные сервера?
G>>Не путай. 10% кода выполняются 90% времени в вычислтеьных задачах.
G>>При высоких нагрузках надо оптимально управлять ресурсами.
Х>ну вот, пошли уточнения про вычислительные задачи а уж если надо оптимально управлять ресурсами то использовать C++ ето сам бог велел.

И что есть в с++ для управления ресурсами? Наверное хорошый пул потоков или "зеленые" треды? А может там есть выделение памяти в хипе за O(1)?


G>>Есть переменная на стеке, надо построить честное замыкание для лямбды. Время жизни лямбды больше текущего скоупа. Что С++ предлагает? Ничего.

Х>да что же ты будешь делать, повторяю, три раза: контекст может копироваться, копироваться, копироваться.
Х>т.е. в лямбду скопируется значение переменной на стеке
Х>для закрепления:
Х>копироваться может контекст
Х>не только по ссылке а и по значению
Х>копироваться
Х>контекст
Х>по значению
Х>запомнил?
Не надо мне доказывать что нету и не будет в с++ нормальных замыканий, я это и так знаю.

Х>>>>>зайди в раздел .NET или .NET GUI и посмотри темы в которых люди кричат о недостаточной производительности, такое ощущение что избавившись от менеджмента памяти дотнетовцы теперь приседают в борьбе за производительность

G>>>>Многие проблемы с производительностью от незнания. У меня саого программы на .NET тормозили когда я только начинал на нем писать. Теперь таких проблем нету.
Х>>>я рад за тебя что у тебя нет проблемм с производительностью, а в коде над которым я работаю нет утечек памяти, и явные delete можно пересчитать по пальцам, и что?
G>>И кто же память освобождает? shared_ptr, так они оверхед создают...
Х>ух-хаха, я вообще не использую shared_ptr, представляешь? удивительно, да?
И что же ты используешь?

G>>А вообще-то есть статистика. Так вот проблемы с утечками памяти в unmanaged появляют гораздо чаще проблем с производительностью в managed.

Х>есть статистика, что на десктопах пользователей подавляющее большинство приложений — unmanaged, ето на мой взгляд самая лучшая статистика.
Эта статистика очень слабо связана с техническими аспектами. Обсуждали уже сотню раз.
Re[70]: Работа - с чего начать: С++ или С#?
От: MxKazan Португалия  
Дата: 07.05.09 19:51
Оценка:
Здравствуйте, COFF, Вы писали:

COF>Осмысленное — это значит сделал один раз и забыл, все работает. А ручное — это как-раз подход C#, присвоил переменную, не забудь вызвать функцию типа SubscribeResource, обнулил — UnsubscribeResource ну и так далее.

Это очередной ответ из серии "я ни черта не понимаю о чем там в ветках про .Net, но есть пачка слов, к которым можно прицепиться". Уже утомили.
Re[69]: Работа - с чего начать: С++ или С#?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 07.05.09 19:51
Оценка: +1 :)
Здравствуйте, gandjustas, Вы писали:

G>Вот привели в пример какой-то пост, где с помощью WPF попытались нарисовать туеву хучу объектов. Интересно, на С++ аналогичное вообще заведется? (не говоря о том чтобы поехать)


Ясный пень — программы на C++ падают от одного слова: "туева хуча". Заклинание такое, хуже "мемори лика".
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[71]: Работа - с чего начать: С++ или С#?
От: COFF  
Дата: 07.05.09 19:52
Оценка:
Здравствуйте, MxKazan, Вы писали:

MK>Это очередной ответ из серии "я ни черта не понимаю о чем там в ветках про .Net, но есть пачка слов, к которым можно прицепиться". Уже утомили.


Ага, сейчас ты мне расскажешь про IDisposable :) Плавали, знаем..
Re[72]: Работа - с чего начать: С++ или С#?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 07.05.09 19:54
Оценка: 1 (1)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Здравствуйте, MxKazan, Вы писали:


MK>>Я напишу про общий случай, т.к. спецификацию на язык не читал. Так вот, копирования никакого нет. Компилятор превращает лямбду в класс, у которого поля — это замкнутые переменные, а единственный метод — тело (или как там оно называется) лямбды. Все операторы работающие с замкнутой переменной вне лямбды, переписываются на обращение к полю класса.


ГВ>Примерно то же самое, кстати, должен делать и компилятор C++. Лямбда тоже преобразуется в класс с единственным методом (не считая конструктора копии, кажется) — "operator()(сигнатура, выведенная из параметров лямбды)".

дотнет этот класс распологает изначально в хипе, а C++ на стеке. дотнетчики с классом ассоциируют хип если не оговорено "класс на стеке", что означает структуру в дотнете.
Потому то же самое, но лишь условно примерно.
Re[65]: Брависсимо!
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 07.05.09 19:56
Оценка:
Здравствуйте, gandjustas, Вы писали:

Х>>запомнил?

G>Не надо мне доказывать что нету и не будет в с++ нормальных замыканий, я это и так знаю.

Итак: "лямбды в C++ предусматривают возможность замыкания контекста по значению". Твой ответ? (Бис! Бис! Заранее аплодирую)
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[70]: Работа - с чего начать: С++ или С#?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 07.05.09 19:57
Оценка:
Здравствуйте, COFF, Вы писали:

COF>Здравствуйте, gandjustas, Вы писали:


COF>>>Они позволяют реализовывать осмысленные стратегии управления ресурсами, в том числе отличными от памяти.

G>>Осмысленное в твоем понимании — ручное?

COF>Осмысленное — это значит сделал один раз и забыл, все работает. А ручное — это как-раз подход C#, присвоил переменную, не забудь вызвать функцию типа SubscribeResource, обнулил — UnsubscribeResource ну и так далее.


А ты на C# писал чтонить сложнее heelo world?
А с асинхронным вводом-выводом работал?
Re[70]: Работа - с чего начать: С++ или С#?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 07.05.09 19:59
Оценка: 3 (1)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Здравствуйте, gandjustas, Вы писали:


G>>Вот привели в пример какой-то пост, где с помощью WPF попытались нарисовать туеву хучу объектов. Интересно, на С++ аналогичное вообще заведется? (не говоря о том чтобы поехать)

ГВ>Ясный пень — программы на C++ падают от одного слова: "туева хуча". Заклинание такое, хуже "мемори лика".
Не, такие программы на С++ просто не появляются.
Re[72]: Работа - с чего начать: С++ или С#?
От: MxKazan Португалия  
Дата: 07.05.09 20:00
Оценка:
Здравствуйте, COFF, Вы писали:

COF>Ага, сейчас ты мне расскажешь про IDisposable Плавали, знаем..

IDisposable сделан для unmanaged-ресурсов, чтобы за вашим, недоступным для GC, багажом следить.
В полностью managed библиотеках он практически не нужен. WPF тому пример.
Re[71]: Работа - с чего начать: С++ или С#?
От: COFF  
Дата: 07.05.09 20:00
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>А с асинхронным вводом-выводом работал?

А причем тут это?
Re[64]: Работа - с чего начать: С++ или С#?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 07.05.09 20:00
Оценка: :)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Здравствуйте, gandjustas, Вы писали:


G>>Есть переменная на стеке, надо построить честное замыкание для лямбды. Время жизни лямбды больше текущего скоупа. Что С++ предлагает? Ничего.


ГВ>Да ёлки ж зелёные! Значения (синоним в данном контексте: копия переменной) плюсовыми лямбдами замыкаются с лёгкостью неимоверной. А дальше — хоть выводи функцию из скопа, хоть прихлопывай.

Нет. Нужно лексическое замыкание (не копирование значения).
Re[72]: Работа - с чего начать: С++ или С#?
От: MxKazan Португалия  
Дата: 07.05.09 20:03
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>>>А замкнуть "по ссылке" их можно? То есть так, чтобы структура "физически" осталась в стеке конструирующей лямбду функции? Или только "по значению", то есть — копированием в соответствующий экземпляр класса сконструированной лямбды?

MK>>Я напишу про общий случай, т.к. спецификацию на язык не читал. Так вот, копирования никакого нет. Компилятор превращает лямбду в класс, у которого поля — это замкнутые переменные, а единственный метод — тело (или как там оно называется) лямбды. Все операторы работающие с замкнутой переменной вне лямбды, переписываются на обращение к полю класса.

ГВ>По сути вопроса — понятно. Не знаешь, значит — не знаешь.

Я не знаю только, делает ли компилятор в каких-либо случаях замыкание на стек. А те лямбды, которые я смотрел в Рефлекторе, реализованы именно так, как описано.
Re[66]: Брависсимо!
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 07.05.09 20:03
Оценка: :)))
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Здравствуйте, gandjustas, Вы писали:


Х>>>запомнил?

G>>Не надо мне доказывать что нету и не будет в с++ нормальных замыканий, я это и так знаю.

ГВ>Итак: "лямбды в C++ предусматривают возможность замыкания контекста по значению". Твой ответ? (Бис! Бис! Заранее аплодирую)

Не надо такие умные слова говорить. Говори честно — копирование значения. Копирование лексическим замыканием не является.
Re[73]: Работа - с чего начать: С++ или С#?
От: COFF  
Дата: 07.05.09 20:04
Оценка:
Здравствуйте, MxKazan, Вы писали:

COF>>Ага, сейчас ты мне расскажешь про IDisposable :) Плавали, знаем..

MK>IDisposable сделан для unmanaged-ресурсов, чтобы за вашим, недоступным для GC, багажом следить.
MK>В полностью managed библиотеках он практически не нужен. WPF тому пример.

Хм, из ссылки выше я скорее заключил бы обратное :) Потом, времена когда вся система и все приложения будут работать под одной виртуальной машиной с одним GC пока не наступили, тогда может это и не нужно будет, а пока доступ ко внешним по отношению к данному GC ресурсам — это обычная рутинная задача для любого приложения.
Re[60]: Работа - с чего начать: С++ или С#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.05.09 20:07
Оценка:
Здравствуйте, Хвост, Вы писали:

VD>>А можно узнать, решениями каких задач ты занимаешься на С++?

Х>Можно, в данный момент ето десктопная GIS.

И что в ней требует использования С++?

Х>В свою очередь можно узнать, какие задачи ты решаешь на C#?


Последнее, что я написал на C# (исключая тесты) был редактор кода с подсветкой синтаксиса.
http://rsdn.ru/projects/Rsdn.Editor/Article/Rsdn.Edit.xml это было в 2005-ом.
Еще по мелочи для интеграции с VS 2008 кое-что писал.

А так с 2006-го я им не пользуюсь. Для справки, С++ я практически не пользуюсь с 2002-го года. До этого на С и С++ я писал около 7 лет.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[71]: Работа - с чего начать: С++ или С#?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 07.05.09 20:08
Оценка:
Здравствуйте, gandjustas, Вы писали:

ГВ>>Ясный пень — программы на C++ падают от одного слова: "туева хуча". Заклинание такое, хуже "мемори лика".

G>Не, такие программы на С++ просто не появляются.

Во, талантище!
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[74]: Работа - с чего начать: С++ или С#?
От: MxKazan Португалия  
Дата: 07.05.09 20:10
Оценка:
Здравствуйте, COFF, Вы писали:

COF>Хм, из ссылки выше я скорее заключил бы обратное Потом, времена когда вся система и все приложения будут работать под одной виртуальной машиной с одним GC пока не наступили, тогда может это и не нужно будет, а пока доступ ко внешним по отношению к данному GC ресурсам — это обычная рутинная задача для любого приложения.

Да ты не один такой. Вы тут многие свои оригинальные выводы делаете. Всё от того, что на .Net никто не пишет и смотрит на обсуждение с позиции "к чему бы придраться". Если бы ты почитал внимательно, то увидел бы, что спор идет против втаскивания наследия (unmanaged)WinForms в WPF. Мне еще не разу не понадобился IDisposable, хотя уже 7 месяцев работаю над приложением на WPF, и контролы писал и шаблоны ваял и много много еще чего.
Re[67]: Брависсимо!
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 07.05.09 20:10
Оценка: -1
Здравствуйте, gandjustas, Вы писали:

ГВ>>Итак: "лямбды в C++ предусматривают возможность замыкания контекста по значению". Твой ответ? (Бис! Бис! Заранее аплодирую)

G>Не надо такие умные слова говорить. Говори честно — копирование значения. Копирование лексическим замыканием не является.

Расскажи это лисперам. В лиспе исторически замыкания создавались копированием используемых переменных.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.