Здравствуйте, AndrewJD, Вы писали:
AJD>Как насчет значительного увеличения времени компиляции при использовании boost::lambda ?
Никак. Время сборки — не ресурс, если у тебя не в одном файле весь проект, конечно же.
Уж чем-чем, а временем сборки за удобство можно заплатить, а грамотная модульность уменьшает время сборки в разы.
Здравствуйте, SkyDance, Вы писали:
LM>>Посмотри boost::bind и пойми насколько просто стело делать callback-и и threadfunc(если использовать boost::thread) SD>Ну для callback'ов лучше все-таки boost::function. SD>bind для другого предназначен.
А как ты этот буст::функтион сделаешь? Биндом
Здравствуйте, jazzer, Вы писали:
M>>Последний рекорд , я слышал что С++ можно за 2 недели выучить , а вы за несколько дней !
J>Я в своих руках держал книжку (жалко, фотоаппарата не было с собой) "С++ за 24 часа".
Какой-то несчастный C++... Вот у меня была (довольно мутная) книженция "Освой OLE за 21 день". Я её осваивал полтора года. Потом она согласилась таки выйти за меня замуж
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
J>Никак. Время сборки — не ресурс, если у тебя не в одном файле весь проект, конечно же. J>Уж чем-чем, а временем сборки за удобство можно заплатить, а грамотная модульность уменьшает время сборки в разы.
Поддерживаю.
У тимлидов вообще находится очень много "аргументов", лишь бы не показать свою малограмотность в использовании разных технологий и библиотек. Возможно, это одна из причин, по которым тим лид не должен быть слишком молодым (тащит что ни попадя в проект), ни слишком старым (боится любых перемен).
Здравствуйте, SkyDance, Вы писали:
SD>У тимлидов вообще находится очень много "аргументов", лишь бы не показать свою малограмотность в использовании разных технологий и библиотек. Возможно, это одна из причин, по которым тим лид не должен быть слишком молодым (тащит что ни попадя в проект), ни слишком старым (боится любых перемен).
Во-во... boost::lambda это какраз то самое что попало...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Anatolix, Вы писали:
A>Ага да, спасибо большое, вы мне просто открыли глаза. Действительно разработчик на Ansi C не может знать что такое конструктор копирования. Не знаю даже как быть уж и на сайте писал что нужен C++ и STL, в резюме слова такие искал. А ведь представьте, придет вот ко мне разработчик на Lisp на такую вакансию, не заметив что там C++ нужен, я его спрошу про конструктор копирования, а он вообще слова то такого не знает. Что делать, как жить дальше
Ужасть просто. Анатолий, проси молоко за вредность работы.
А ну как завтра С++ отменят? Сколько вам придется в яндексе переписывать. Так что молоко уже сейчас надо выбивать себе.
З.Ы. Как говорят граждене подонки — THESERG жжот.
WH>Во-во... boost::lambda это какраз то самое что попало...
Предложите что-то более удобное. Что-то, что сократит время на разработку. Писать каждый раз по функтору — ну уж нет, индейская хижина, код становится жутким.
Впрочем, еще расскажите о себе. О том, насколько хорошо вы знаете boost и как часто им пользовались. Тогда многое станет ясным
SD>Предложите что-то более удобное. Что-то, что сократит время на разработку. Писать каждый раз по функтору — ну уж нет, индейская хижина, код становится жутким.
А зачем каждый раз по функтору? Заменять каждый цикл for на for_each? Как правило, функторы приходится писАть не так уж и часто.
J>Никак. Время сборки — не ресурс, если у тебя не в одном файле весь проект, конечно же. J>Уж чем-чем, а временем сборки за удобство можно заплатить, а грамотная модульность уменьшает время сборки в разы.
Ну уж нет. Не согласен категорически. Время сборки — очень даже ресурс. Почему-то его очень сильно недооценивают, но он способен самым кардинальным образом повлиять на скорость разработки — читай, на стоимость (по выбору — на качество) программного продукта. И грамотная модульность способна чуть улучшить ситуацию, но не кардинально.
Здравствуйте, SkyDance, Вы писали:
SD>Предложите что-то более удобное. Что-то, что сократит время на разработку. Писать каждый раз по функтору — ну уж нет, индейская хижина, код становится жутким.
Код становится жутким в любом случае.
Тут два варианта. Либо полноценные замыканяи и функции высшего порядка либо не использовать эти выверты вобще.
SD>Впрочем, еще расскажите о себе.
Модератор местного форума по С++.
Держусь в топе не смотря на то что пару лет там почти не появлялся. SD>О том, насколько хорошо вы знаете boost
Очень хорошо. Разве что я его не писал. Лень. SD>и как часто им пользовались.
Пару лет назад довольно часто.
Но после того как я сильно улучшил свое кунг-фу надобность в нем практически отпала.
Ну разве что intrusive_ptr, thread и boost::filesystem всееще иногда полезны. SD>Тогда многое станет ясным
И что тебе стало ясно?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
WH>Код становится жутким в любом случае. WH>Тут два варианта. Либо полноценные замыканяи и функции высшего порядка либо не использовать эти выверты вобще.
Выверты, хм? То есть "выполнить действие для тех членов контейнера, getState() которых возвращает ACTIVE" — выверт? Тогда моя практика включает немало "вывертов" (С)
WH>Модератор местного форума по С++. WH>Держусь в топе не смотря на то что пару лет там почти не появлялся.
Местный == RSDN?
WH>Но после того как я сильно улучшил свое кунг-фу надобность в нем практически отпала.
То есть вы просто написали свою версию? Или отказались от "вывертов" (С)? Или как теперь вы решаете задачи вида тех, что я привел выше? Меняете архитектуру классов? Расскажите, это действительно интересно.
WH>И что тебе стало ясно?
В первую очередь, что на брудершафт мы не пили. Во вторую, я так и не вижу разумных доводов против использования lambda.
Здравствуйте, SkyDance, Вы писали:
SD>Местный == RSDN?
Угу.
SD>То есть вы просто написали свою версию?
Нет. SD>Или отказались от "вывертов" (С)?
Они просто стали не нужны. SD>Или как теперь вы решаете задачи вида тех, что я привел выше?
Простым циклом.
Это действительно проще.
Если бы были полноценные замыкания то я бы еще подумал. А так... SD>Меняете архитектуру классов?
И архитектуру тоже меняю. SD>Расскажите, это действительно интересно.
Это на книгу потянет.
Слишком много всего.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
SD> Во вторую, я так и не вижу разумных доводов против использования lambda.
ИМХО: Архитектура современных компьютеров не подходит для функционального программирования. С++ считается low-level языком и особого смысла навешивать туда ФП я не вижу. Есть куча языков, к примеру Python, где ФП выглядит уместно.
Но это уже вопросы религии
SD>> Во вторую, я так и не вижу разумных доводов против использования lambda. S>ИМХО: Архитектура современных компьютеров не подходит для функционального программирования. С++ считается low-level языком и особого смысла навешивать туда ФП я не вижу. Есть куча языков, к примеру Python, где ФП выглядит уместно. S>Но это уже вопросы религии
ИМХО: Для функционального программирования не подходит не архитектура современных компьютеров. В конце концов, принципы ООП тоже "не родные" для железа (инкапсуляция, наследование, полиморфизм — где тут хоть что-то близкое к ассемблеру?). Для функционального программирования не подходит архитектура современного программиста и современного преподавателя института . Мы только-только "протащили" в массы ООП, а его принципы (имхо!) проще чем принципы функционального программирования.
M>То есть такой трюк с обычными классами не проходит , а только с некими пимплами ? Ну чесно говоря для пимплов я конструктор копирования напишу в строчку и безопасно с точки зрения исключений. Действительно , лишь скопировать указатель.
Такой трюк прокатывает с любыми классами, лишь бы они заранее проектировались с учётом небросающего swap. В конце концов, в итоге все классы состоят из байтов, а обмен байтами — небросающая исключений операция. Скажем так — проблемы с такой техникой возникают только для сложных классов из сторонних библиотек, которые не предусматривают небросающих swap-ов. В таком случае эти классы действительно приходится хранить отдельно от класса, а в классе — лишь указатель на них.
M>Поясните как я побитово поменяю мембера , некого CString ? а если класс завязан на указатели на себя или мемберов ?
Если класс завязан на указатели на себя — то прийдётся разделять указатель на класс и на его состояние. То бишь, в классе — указатель на состояние, а отдаются наружу указатели на весь класс. Тогда swap состояния ничего не порушит. Согласен, что это сложнее чем просто указатели на себя, но в большинстве случаев игра стоит свеч.
Здравствуйте, SkyDance, Вы писали:
SD>Впрочем, еще расскажите о себе. О том, насколько хорошо вы знаете boost и как часто им пользовались. Тогда многое станет ясным
Мне очень нравится использовать boost при истользование std::find_if. Комментарии не нужны!
Здравствуйте, Left2, Вы писали:
L>Ну уж нет. Не согласен категорически. Время сборки — очень даже ресурс.
Согласен. Когда стандартная линковка 10-15 минут...
Здравствуйте, jazzer, Вы писали:
J>Никак. Время сборки — не ресурс, если у тебя не в одном файле весь проект, конечно же.
Если это занимает весь день — то ресурс.
"For every complex problem, there is a solution that is simple, neat,
and wrong."