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

ГВ>>Я признаю наличие в других языках других реализаций лямбд. Но я не считаю "единственно нормальной" реализацию лямбд в каком-то определённом языке, или их наборе. Например, то, что лямбды в "других" языках непременно требуют вовлечения GC я считаю изъяном их реализации, пусть и повсеместно встречающимся. Я, например, знаю, что использование лямбда-выражений не всегда требует отдельного управления жизненным циклом замкнутых переменных. Отсюда, я не думаю, что непременное привлечение GC — "нормально", т.е., сродни эталону.

G>А другие варианты есть? Явное управление временем жизни не подойдет, надеюсь это понятно.

Да варианты-то самые обыкновенные: от отсутствия специального управления, до подсчёта ссылок и опционального (!) GC. Пойми, я не против GC самого по себе, я не люблю, когда мне его навязывают в обязательном порядке. Вот в маленькой локальной лямбде:

int upper = ...;
it = find_if(v.begin(), v.end(), [=](int x) -> bool { return x >= 0 && x <= upper; })


на фига GC? Здесь вполне достаточно снапшота по значению. Её вообще имеет смысл всю инлайнировать (кстати, я охотно допускаю, что JIT именно так и поступит). И ещё в десятках ситуаций, когда время существования вовлечённых объектов гарантированно превышает время существования лямбды — зачем GC? Зачем GC вообще ставить в известность о том, что ты создаёшь какую-то там лямбду, когда ты на 100% уверен, что она будет удалена до того, как пропадут использованные ей объекты?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.