Здравствуйте, gandjustas, Вы писали:
G>>>Может всетаки уже стоит признать что в С++ в обозримом будущем не будет нормальных лямбд. ГВ>>Знаешь, это очень сильное колдунство — признавать отсутствие наличествующего. "Видишь суслика? А его нет!" G>Точно, ты ведь до сих пор не признаешь что нету и не будет в С++ нормальных лямбд, а в других языках есть.
Круто, давно не встречал фраз, построенных таким образом. Ты меня, правда, за ребёнка держишь? Или за подчинённого, которого можно заставить верить в любую ахинею? Ладно, шутка, не обижайся.
Теперь — по топику.
Я признаю наличие в других языках других реализаций лямбд. Но я не считаю "единственно нормальной" реализацию лямбд в каком-то определённом языке, или их наборе. Например, то, что лямбды в "других" языках непременно требуют вовлечения GC я считаю изъяном их реализации, пусть и повсеместно встречающимся. Я, например, знаю, что использование лямбда-выражений не всегда требует отдельного управления жизненным циклом замкнутых переменных. Отсюда, я не думаю, что непременное привлечение GC — "нормально", т.е., сродни эталону.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
G>Точно, ты ведь до сих пор не признаешь что нету и не будет в С++ нормальных лямбд, а в других языках есть.
Ты только функциональщикам не говори о "нормальности" лямбд, допускающих побочные эффекты. Могут и на смех поднять.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Я признаю наличие в других языках других реализаций лямбд. Но я не считаю "единственно нормальной" реализацию лямбд в каком-то определённом языке, или их наборе. Например, то, что лямбды в "других" языках непременно требуют вовлечения GC я считаю изъяном их реализации, пусть и повсеместно встречающимся. Я, например, знаю, что использование лямбда-выражений не всегда требует отдельного управления жизненным циклом замкнутых переменных. Отсюда, я не думаю, что непременное привлечение GC — "нормально", т.е., сродни эталону.
А другие варианты есть? Явное управление временем жизни не подойдет, надеюсь это понятно.
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Ну ё-моё, ты хоть прочти то, чему возражаешь:
ГВ>
Больше того, даже два использования какой-нибудь коротенькой лямбды типа "x >= SOMETHING_LOW && x <= SOMETHING_HIGH" уже побуждают сделать вместо неё обычную функцию или функтор, и обращаться к ним по собственному имени.
И что? От двукратного прочтения фигня фигней быть не перестанет.
Потому, что два использования коротенькой лямбды типа "x >= SOMETHING_LOW && x <= SOMETHING_HIGH" побуждают к вот такому:
var isWithinRange = (int x) => x >= SOMETHING_LOW && x <= SOMETHING_HIGH;
А вовсе не к обычной функции или функтору. Потому, что так — удобно.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, VladD2, Вы писали:
VD>Для особо одаренных повторяю. Нет никакого С++0х. С++0х — это рабочее название черновика.
Камрад, от того, что ты твердишь "нету его" он не исчезнет.
Он есть, и используется. Это факт.
VD>А в "кампилирах" есть еще свойства и поддержка COM. И что с того?
Это к терапевту.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, VladD2, Вы писали:
ГВ>>В компиляторах много чего есть, но не всё из этого планируется к принятию в виде стандарта. VD>Оно уже 11 лет планируется. Так что говорить о чем-то будет можно только когда стандарт выйдет. О чем я и говорил.
Ты так цепляешься за жалкую отмазку "еще не вышел" как будто больше сказать нечего.
Какая мне например разница, вышел он или нет. Гораздо важнее что уже есть реализация в промышленных компиляторах.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, VladD2, Вы писали:
VD>Никаких расширений пока нет. Речь идет о бэтах которые не зарелизятся до 2010 года.
Ты это интелу расскажи, а то пацаны не в курсе.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
VD>>Для особо одаренных повторяю. Нет никакого С++0х. С++0х — это рабочее название черновика. CC>Камрад, от того, что ты твердишь "нету его" он не исчезнет. CC>Он есть, и используется. Это факт.
Есть он только в твоем воображении. То что кто-то использует черти что созданное на основе черновиков — это их личная инициатива. Не более того.
VD>>А в "кампилирах" есть еще свойства и поддержка COM. И что с того? CC>Это к терапевту.
Умора, клиенты психиатров отправляют к терапевтам.
Ладно, разговоры в подобном ключе меня не интересуют.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Умора, клиенты психиатров отправляют к терапевтам.
Во!
Теперь узнаю старого доброго ВладД2.
VD>Ладно, разговоры в подобном ключе меня не интересуют.
Симметрично.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Sinclair, Вы писали:
S>Потому, что два использования коротенькой лямбды типа "x >= SOMETHING_LOW && x <= SOMETHING_HIGH" побуждают к вот такому:
S>
S>var isWithinRange = (int x) => x >= SOMETHING_LOW && x <= SOMETHING_HIGH;
S>
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 невозможно подменить в рантайме.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, 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.: Винодельческие провинции — это есть рулез!
Здравствуйте, niellune, Вы писали:
N>Здравствуйте! Нужен ваш совет)) N>Дело в том что мне нравится язык C++ и меня интересует есть ли сейчас возможность устроиться куда-нибудь на начальную позицию? N>В каких областях сейчас применяется C++?
N>Может легче сначала пойти на С#, а потом перейти на С++ или сразу искать вакансии С++ N>Просто мне кажется, что объем знаний С++ требуется гораздо больший, а хочется работать и набираться опыта..
N>У меня есть опыт работы на php, причем не только web, а еще что-то вроде создания системы документооборота) N>Но php мне уже мало и он мне порядком надоел, хочется развиваться дальше.
Моё мнение C# не очень хорошее решение, если вы не собираетесь связать свою судьбу с виндовс на каком-то относительно непродолжительном участке времени. C++ поддерживается всеми платформами. Ждёт его судьба бейсика. Это моё виденье данной проблемы.
Здравствуйте, VladD2, Вы писали:
VD>Есть он только в твоем воображении. То что кто-то использует черти что созданное на основе черновиков — это их личная инициатива. Не более того.
А Microsoft с Intel-ом и не знают, что они отсебятину несут.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Здравствуйте, gandjustas, Вы писали:
ГВ>>>Я признаю наличие в других языках других реализаций лямбд. Но я не считаю "единственно нормальной" реализацию лямбд в каком-то определённом языке, или их наборе. Например, то, что лямбды в "других" языках непременно требуют вовлечения GC я считаю изъяном их реализации, пусть и повсеместно встречающимся. Я, например, знаю, что использование лямбда-выражений не всегда требует отдельного управления жизненным циклом замкнутых переменных. Отсюда, я не думаю, что непременное привлечение GC — "нормально", т.е., сродни эталону. G>>А другие варианты есть? Явное управление временем жизни не подойдет, надеюсь это понятно.
ГВ>Да варианты-то самые обыкновенные: от отсутствия специального управления, до подсчёта ссылок и опционального (!) GC. Пойми, я не против GC самого по себе, я не люблю, когда мне его навязывают в обязательном порядке. Вот в маленькой локальной лямбде:
ГВ>
ГВ>на фига GC? Здесь вполне достаточно снапшота по значению. Её вообще имеет смысл всю инлайнировать (кстати, я охотно допускаю, что JIT именно так и поступит). И ещё в десятках ситуаций, когда время существования вовлечённых объектов гарантированно превышает время существования лямбды — зачем GC? Зачем GC вообще ставить в известность о том, что ты создаёшь какую-то там лямбду, когда ты на 100% уверен, что она будет удалена до того, как пропадут использованные ей объекты?
Простые случаи мало интересуют, они будут отлично оптимизироваться JIT. Наличие или остуствие GC там никакой роли не играет.
В более сложных случаях, когда требуется GC, подсчет ссылок дает оверхед, как и опциональный GC.
Не получится сделать в C++ сборщик мусора, сравнимый по быстродействию с .NETовским.
В итоге пришли к тому же: С++, даже в новом стандарте, позволяет эффективно использовать только подмножество лямбд.
Здравствуйте, gandjustas, Вы писали:
G>Простые случаи мало интересуют, они будут отлично оптимизироваться JIT. Наличие или остуствие GC там никакой роли не играет.
Я очень рад, если это так.
G>В более сложных случаях, когда требуется GC, подсчет ссылок дает оверхед, как и опциональный GC.
Величина этого оверхеда — вопрос с трудно предсказуемым ответом.
G>Не получится сделать в C++ сборщик мусора, сравнимый по быстродействию с .NETовским.
Ой, сомневаюсь.
G>В итоге пришли к тому же: С++, даже в новом стандарте, позволяет эффективно использовать только подмножество лямбд.
Угу, то есть тезис о неполноценности лямбд в C++ снимается повестки дня. Уже что-то. А то, что там где-то что-то побыстрее, где-то что-то помедленнее — так на то они и разные языки: C++, C#, Java, Haskell... Чтобы где-то выигрывать по отношению друг к другу, где-то проигрывать.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
ГВ>Угу, то есть тезис о неполноценности лямбд в C++ снимается повестки дня.
Имел в виду "тезис о принципиальной неполноценности лямбд в C++0x".
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, samius, Вы писали:
ГВ>>Обрати внимание, функцию с именем isWithinRange невозможно подменить в рантайме. S>Лямбды удобнее тем, что их можно сочетать вместе с замыканиями в то время когда функцию придется передавать толпу параметров.
В данном случае я отвечал на вполне определённый выпад Синклера.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!