Re[49]: Работа - с чего начать: С++ или С#?
От: Sinclair Россия https://github.com/evilguest/
Дата: 07.05.09 13:29
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>на фига GC? Здесь вполне достаточно снапшота по значению. Её вообще имеет смысл всю инлайнировать (кстати, я охотно допускаю, что JIT именно так и поступит). И ещё в десятках ситуаций, когда время существования вовлечённых объектов гарантированно превышает время существования лямбды — зачем GC? Зачем GC вообще ставить в известность о том, что ты создаёшь какую-то там лямбду, когда ты на 100% уверен, что она будет удалена до того, как пропадут использованные ей объекты?
Гена, я тебе открою тайну, но GC никто ни в какую известность не ставит. Всё как раз наоборот: это в плюсах нужно что-то "удалять", когда оно больше не нужно.
А GC всего лишь оставляет только те объекты, которые доступны. В частности, если локальная лямбда выйдет из области видимости до того, как использованные ей объекты, то GC про неё никогда не узнает, и ни такта не будет затрачено на её уборку. Зато "100% уверен" — это как раз в случае с GC: именно он даёт такую гарантию. А в твоём случае 100% — это нечестное округление от 99.9999....%
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[51]: Работа - с чего начать: С++ или С#?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 07.05.09 13:30
Оценка: :))
Здравствуйте, Геннадий Васильев, Вы писали:

G>>В более сложных случаях, когда требуется GC, подсчет ссылок дает оверхед, как и опциональный GC.

ГВ>Величина этого оверхеда — вопрос с трудно предсказуемым ответом.
Тем не менее он есть.

G>>Не получится сделать в C++ сборщик мусора, сравнимый по быстродействию с .NETовским.

ГВ>Ой, сомневаюсь.
Не сомневайся. Если бы можно было на С++ сделать хороший сборщик мусора, то его давно бы уже сделали.

G>>В итоге пришли к тому же: С++, даже в новом стандарте, позволяет эффективно использовать только подмножество лямбд.


ГВ>Угу, то есть тезис о неполноценности лямбд в C++ снимается повестки дня. Уже что-то.

Ничего не снимается. Лямбды и там и есть неполноценные. Возможность сымитировать полноценные лямбды эту ситуацию не меняют.

ГВ>А то, что там где-то что-то побыстрее, где-то что-то помедленнее — так на то они и разные языки: C++, C#, Java, Haskell... Чтобы где-то выигрывать по отношению друг к другу, где-то проигрывать.

Тут вопрос не только в скорости работы. Имитирование полноценных лямбд будет порождать громоздкий и\или ненадежный код.
Re[50]: Работа - с чего начать: С++ или С#?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 07.05.09 13:33
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>В частности, если локальная лямбда выйдет из области видимости до того, как использованные ей объекты, то GC про неё никогда не узнает, и ни такта не будет затрачено на её уборку.


А можно раскрыть мысль? Такая лямбда не обрастет делегатом?
Re[50]: Работа - с чего начать: С++ или С#?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 07.05.09 13:41
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Гена, я тебе открою тайну, но GC никто ни в какую известность не ставит. Всё как раз наоборот: это в плюсах нужно что-то "удалять", когда оно больше не нужно.


Антон, спасибо, но это для меня не тайна. Говоря "ставить в известность" я не имел в виду ручное оповещение GC об использовании объекта.

S>А GC всего лишь оставляет только те объекты, которые доступны. В частности, если локальная лямбда выйдет из области видимости до того, как использованные ей объекты, то GC про неё никогда не узнает, и ни такта не будет затрачено на её уборку.


Ну и превосходно. Правда, AFAIK, не во всех языках с "полноценными" лямбдами дело обстоит именно так.

S>Зато "100% уверен" — это как раз в случае с GC: именно он даёт такую гарантию. А в твоём случае 100% — это нечестное округление от 99.9999....%


Да нет, есть случаи как раз тех самых 100%. Я понимаю, что хочется сказать, что я выдаю желаемое за действительное и приплести излюбленные противо-C++-ные аргументы, но смею тебя заверить, это было бы неправильным.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[43]: Работа - с чего начать: С++ или С#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.05.09 13:45
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>А Microsoft с Intel-ом и не знают, что они отсебятину несут.


Можно ссылку на место где я могу купить компилятор от Microsoft реализующий черновик стандарта?

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

G>>>В более сложных случаях, когда требуется GC, подсчет ссылок дает оверхед, как и опциональный GC.

ГВ>>Величина этого оверхеда — вопрос с трудно предсказуемым ответом.
G>Тем не менее он есть.

Он везде есть — больше или меньше.

G>>>Не получится сделать в C++ сборщик мусора, сравнимый по быстродействию с .NETовским.

ГВ>>Ой, сомневаюсь.
G>Не сомневайся. Если бы можно было на С++ сделать хороший сборщик мусора, то его давно бы уже сделали.

Дык, он как неуловимый Джо:

- Что, никто написать не может?
— Да кому он нужен?


G>>>В итоге пришли к тому же: С++, даже в новом стандарте, позволяет эффективно использовать только подмножество лямбд.

ГВ>>Угу, то есть тезис о неполноценности лямбд в C++ снимается повестки дня. Уже что-то.
G>Ничего не снимается. Лямбды и там и есть неполноценные. Возможность сымитировать полноценные лямбды эту ситуацию не меняют.

Понятно. Библиотечная философия C++ тебе претит. Ну что ж, на вкус и цвет...

ГВ>>А то, что там где-то что-то побыстрее, где-то что-то помедленнее — так на то они и разные языки: C++, C#, Java, Haskell... Чтобы где-то выигрывать по отношению друг к другу, где-то проигрывать.

G>Тут вопрос не только в скорости работы. Имитирование полноценных лямбд будет порождать громоздкий и\или ненадежный код.

Понятно. Но эту сказку про C++ рассказывают с регулярностью, достойной лучшего применения, всё то время, пока я на нём программирую — все 14 лет. Тут, знаешь, что ни язык, так непременно его апологеты апеллируют к тому, что на C++ всё глюкаво, громоздко и ненадёжно. Так что, не ты первый, не ты последний.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[44]: Работа - с чего начать: С++ или С#?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 07.05.09 13:55
Оценка:
Здравствуйте, VladD2, Вы писали:

ГВ>>А Microsoft с Intel-ом и не знают, что они отсебятину несут.

VD>Можно ссылку на место где я могу купить компилятор от Microsoft реализующий черновик стандарта?

Дык. Гугль тебя спасёт, ключевые слова "VC10 CTP download". Это действительно бета, как ты правильно заметил (вернее — CTP, я не знаю, как он соотносится с альфа/бета/RC по обычной классификации). Про интеловский компилятор спроси у CreatorCray.

VD>Если нет, то предлагаю вам всем прекратить нести пургу.


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

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


G>>>>В более сложных случаях, когда требуется GC, подсчет ссылок дает оверхед, как и опциональный GC.

ГВ>>>Величина этого оверхеда — вопрос с трудно предсказуемым ответом.
G>>Тем не менее он есть.
ГВ>Он везде есть — больше или меньше.
О как, а только пару страниц назад было утверждение что в С++ нет оверхедов.

G>>>>Не получится сделать в C++ сборщик мусора, сравнимый по быстродействию с .NETовским.

ГВ>>>Ой, сомневаюсь.
G>>Не сомневайся. Если бы можно было на С++ сделать хороший сборщик мусора, то его давно бы уже сделали.

ГВ>Дык, он как неуловимый Джо:


ГВ>

ГВ>- Что, никто написать не может?
ГВ>- Да кому он нужен?


Ну раз shared_ptr придумали, и они пользуются значительным успхом, то можно предположить что GC очень нужен.

G>>>>В итоге пришли к тому же: С++, даже в новом стандарте, позволяет эффективно использовать только подмножество лямбд.

ГВ>>>Угу, то есть тезис о неполноценности лямбд в C++ снимается повестки дня. Уже что-то.
G>>Ничего не снимается. Лямбды и там и есть неполноценные. Возможность сымитировать полноценные лямбды эту ситуацию не меняют.
ГВ>Понятно. Библиотечная философия C++ тебе претит. Ну что ж, на вкус и цвет...
Не в библиотеках вопрос, лексическое замыкание накакими библиотечными функциями не заменишь, там нудно по-другом управлять временем жизни объектов.

ГВ>>>А то, что там где-то что-то побыстрее, где-то что-то помедленнее — так на то они и разные языки: C++, C#, Java, Haskell... Чтобы где-то выигрывать по отношению друг к другу, где-то проигрывать.

G>>Тут вопрос не только в скорости работы. Имитирование полноценных лямбд будет порождать громоздкий и\или ненадежный код.

ГВ>Понятно. Но эту сказку про C++ рассказывают с регулярностью, достойной лучшего применения, всё то время, пока я на нём программирую — все 14 лет. Тут, знаешь, что ни язык, так непременно его апологеты апеллируют к тому, что на C++ всё глюкаво, громоздко и ненадёжно. Так что, не ты первый, не ты последний.

Так действительно на С++ все глюкаво и ненадежно. А то что ьты 14 лет на нем пишешь чести тебе не делает.
Re[47]: Работа - с чего начать: С++ или С#?
От: minorlogic Украина  
Дата: 07.05.09 14:11
Оценка: +1 -1
Здравствуйте, samius, Вы писали:

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


ГВ>>Гы-гы.


ГВ>>
ГВ>>auto isWithinRange = [](int x) -> bool { return x >= SOMETHING_LOW && x <= SOMETHING_HIGH; }
ГВ>>


ГВ>>vs.


ГВ>>
ГВ>>inline bool isWithinRange(int x) { return x >= SOMETHING_LOW && x <= SOMETHING_HIGH; }
ГВ>>


ГВ>>Обрати внимание, функцию с именем isWithinRange невозможно подменить в рантайме.


S>Лямбды удобнее тем, что их можно сочетать вместе с замыканиями в то время когда функцию придется передавать толпу параметров.


А ведб не все так просто. Я некоторое время размышлял над полезностью и вредом при использовании лямбд. Использование функторов и функций ненавязчиво подталкивает к обобщенному коду и переиспользованию.

"Лямбды удобнее тем, что их можно сочетать вместе с замыканиями в то время когда функцию придется передавать толпу параметров." не всегда является достаточным аргументом, например

Глобальные переменные удобнее тем, что их можно использовать из любого места и не придется передавать как толпу параметров.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[53]: Работа - с чего начать: С++ или С#?
От: minorlogic Украина  
Дата: 07.05.09 14:17
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Понятно. Но эту сказку про C++ рассказывают с регулярностью, достойной лучшего применения, всё то время, пока я на нём программирую — все 14 лет. Тут, знаешь, что ни язык, так непременно его апологеты апеллируют к тому, что на C++ всё глюкаво, громоздко и ненадёжно. Так что, не ты первый, не ты последний.


Что интересно , как ни язык то все к С++, не друг на друга а именно на С++.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[54]: Работа - с чего начать: С++ или С#?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 07.05.09 14:17
Оценка:
Здравствуйте, gandjustas, Вы писали:

ГВ>>Он везде есть — больше или меньше.

G>О как, а только пару страниц назад было утверждение что в С++ нет оверхедов.

В каких-то случаях — нет, в каких-то есть. Чудес же не бывает.

G>Ну раз shared_ptr придумали, и они пользуются значительным успхом, то можно предположить что GC очень нужен.


ИМХО, нельзя.

G>Не в библиотеках вопрос, лексическое замыкание накакими библиотечными функциями не заменишь, там нудно по-другом управлять временем жизни объектов.


Опять двадцать пять.

G>Так действительно на С++ все глюкаво и ненадежно.


Во-во, слово в слово. Все 14 лет.

G>А то что ьты 14 лет на нем пишешь чести тебе не делает.


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

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


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


ГВ>>>Гы-гы.


ГВ>>>
ГВ>>>auto isWithinRange = [](int x) -> bool { return x >= SOMETHING_LOW && x <= SOMETHING_HIGH; }
ГВ>>>


ГВ>>>vs.


ГВ>>>
ГВ>>>inline bool isWithinRange(int x) { return x >= SOMETHING_LOW && x <= SOMETHING_HIGH; }
ГВ>>>


ГВ>>>Обрати внимание, функцию с именем isWithinRange невозможно подменить в рантайме.


S>>Лямбды удобнее тем, что их можно сочетать вместе с замыканиями в то время когда функцию придется передавать толпу параметров.


M>А ведб не все так просто. Я некоторое время размышлял над полезностью и вредом при использовании лямбд. Использование функторов и функций ненавязчиво подталкивает к обобщенному коду и переиспользованию.


Ну прям мыслитель.
Как поможет обобщенный код в процитированном примере, если SOMETHING_LOW и SOMETHING_HIGH зависят от контекста?

M>"Лямбды удобнее тем, что их можно сочетать вместе с замыканиями в то время когда функцию придется передавать толпу параметров." не всегда является достаточным аргументом, например


M>Глобальные переменные удобнее тем, что их можно использовать из любого места и не придется передавать как толпу параметров.

Сравнил говно с манной кашей, молодец. такими аналогиями иди пугать детей в детском саду.
Re[48]: Работа - с чего начать: С++ или С#?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 07.05.09 14:20
Оценка: :)
Здравствуйте, minorlogic, Вы писали:

S>>Лямбды удобнее тем, что их можно сочетать вместе с замыканиями в то время когда функцию придется передавать толпу параметров.

M>А ведб не все так просто. Я некоторое время размышлял над полезностью и вредом при использовании лямбд. Использование функторов и функций ненавязчиво подталкивает к обобщенному коду и переиспользованию.

Угу, об этом и речь.

M>"Лямбды удобнее тем, что их можно сочетать вместе с замыканиями в то время когда функцию придется передавать толпу параметров." не всегда является достаточным аргументом, например


M>Глобальные переменные удобнее тем, что их можно использовать из любого места и не придется передавать как толпу параметров.


Глобальные переменные — это зараза ещё та, надо тебе сказать. Я когда-то (по очень синеглазой юности) сознательно приучал себя не пользоваться глобальными переменными — в противном случае сопровождаемость рискует упасть ниже плинтуса.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[48]: Работа - с чего начать: С++ или С#?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 07.05.09 14:22
Оценка: 1 (1)
Здравствуйте, minorlogic, Вы писали:

M>"Лямбды удобнее тем, что их можно сочетать вместе с замыканиями в то время когда функцию придется передавать толпу параметров." не всегда является достаточным аргументом, например


M>Глобальные переменные удобнее тем, что их можно использовать из любого места и не придется передавать как толпу параметров.


А GOTO удобнее функций. Из любого места в любое и без параметров!
(я так не считаю, только проиронизировал аналогию)
Re[55]: Работа - с чего начать: С++ или С#?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 07.05.09 14:22
Оценка: :)
Здравствуйте, Геннадий Васильев, Вы писали:


G>>Ну раз shared_ptr придумали, и они пользуются значительным успхом, то можно предположить что GC очень нужен.

ГВ>ИМХО, нельзя.
Обоснования?

G>>Не в библиотеках вопрос, лексическое замыкание накакими библиотечными функциями не заменишь, там нудно по-другом управлять временем жизни объектов.

ГВ>Опять двадцать пять.

G>>Так действительно на С++ все глюкаво и ненадежно.

ГВ>Во-во, слово в слово. Все 14 лет.
Так за 14 лет ничего не поменялось

С++ и по сей день остается языком, на котором больше всего завалено проектов было.
Re[56]: Работа - с чего начать: С++ или С#?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 07.05.09 14:26
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>>>Ну раз shared_ptr придумали, и они пользуются значительным успхом, то можно предположить что GC очень нужен.

ГВ>>ИМХО, нельзя.
G>Обоснования?

Обосновать негативно сформулированный тезис — нельзя. Так что, это ты обоснуй своё высказывание.

ГВ>>Во-во, слово в слово. Все 14 лет.

G>Так за 14 лет ничего не поменялось

Где? В риторике критиков? Угу.

G>С++ и по сей день остается языком, на котором больше всего завалено проектов было.


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

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


S>>В частности, если локальная лямбда выйдет из области видимости до того, как использованные ей объекты, то GC про неё никогда не узнает, и ни такта не будет затрачено на её уборку.


S>А можно раскрыть мысль? Такая лямбда не обрастет делегатом?


Может и обрастет. Только уборка мертвого объекта ничего не стоит, потому пофиг что чем обрастет.
Re[49]: Работа - с чего начать: С++ или С#?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 07.05.09 14:29
Оценка: :)
Здравствуйте, gandjustas, Вы писали:

M>>А ведб не все так просто. Я некоторое время размышлял над полезностью и вредом при использовании лямбд. Использование функторов и функций ненавязчиво подталкивает к обобщенному коду и переиспользованию.

G>
G>Ну прям мыслитель.
G>Как поможет обобщенный код в процитированном примере, если SOMETHING_LOW и SOMETHING_HIGH зависят от контекста?

Буду предельно откровенен: в случае, когда SOMETHING_LOW и SOMETHING_HIGH зависят от контекста (2/3 параметров), этому коду поможет только Delete. Не знаю уж, обобщённый это будет Delete или нет.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[52]: Работа - с чего начать: С++ или С#?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 07.05.09 14:36
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>А то что ьты 14 лет на нем пишешь чести тебе не делает.

В чьих глазах?


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

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


G>>>>Ну раз shared_ptr придумали, и они пользуются значительным успхом, то можно предположить что GC очень нужен.

ГВ>>>ИМХО, нельзя.
G>>Обоснования?

ГВ>Обосновать негативно сформулированный тезис — нельзя. Так что, это ты обоснуй своё высказывание.

Обосновываю, сейчас в С++ популярны средства неявного управления временем жизни объектов в куче. Но эти способы обладают некоторыми недостатками.
GC, который свободен от этих недостатков, будет очень востребован.

G>>С++ и по сей день остается языком, на котором больше всего завалено проектов было.

ГВ>Пересчитывал?
Я — нет, а некоторые фирмы часто занимаются статистическими исследованиями.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.