Re: Популярность boost и STL
От: Аноним  
Дата: 24.10.07 12:20
Оценка: +1 :))) :))) :))) :)
Здравствуйте, rg_software, Вы писали:

_>Иными словами, насколько актуально, например, обучать этому людей? Или уже все, кто пишет на плюсах, эти штуки знают?

Актуально обучать где? В школе\вузе\фиоме?

_>Особенно интересует STL, т.к. буст, по моему (практически твёрдому убеждению) точно используют недостаточно широко. Спасибо!

Сейчас прибежит Егор и объяснит тебе, что ты не прав. Потом Егору объяснят, что он не прав. И начнется очерередная СВ "СТЛ vs велосипеды"
Re: Популярность boost и STL
От: Erop Россия  
Дата: 24.10.07 13:22
Оценка: -1 :))) :)
Здравствуйте, rg_software, Вы писали:

_>Особенно интересует STL, т.к. буст, по моему (практически твёрдому убеждению) точно используют недостаточно широко. Спасибо!


STL я использую, если нет лучших вариантов. Но обычно они есть...
boost стараюсь не использовать, но при использовании STL этого иногда трудно избежать

_>Иными словами, насколько актуально, например, обучать этому людей? Или уже все, кто пишет на плюсах, эти штуки знают?

Обучать наверняка стоит, в том числе и разбирать плюсы и минусы. В том числе нужно предупредить людей, что использование STL вероятно заставит их смотреть в сторону boost, а у него есть свои особенности и сложности.
При этом в любом случае стоит разобрать базовые концепции и STL и кое-чего из boost'а
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: Популярность boost и STL
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 25.10.07 05:40
Оценка: 2 (2) +1
Здравствуйте, Erop, Вы писали:

E>Ну программы-то работают?


это кстати вообще не может рассматриваться как критерий оценки качества ПО или квалификации программиста — если программа не работает, говорить просто не о чем, по факту нет программиста и нет программы как таковой.
... << RSDN@Home 1.2.0 alpha rev. 780>>
Re[9]: Извини, если высказался непонятно
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 29.10.07 11:20
Оценка: 1 (1) +1 :)
Здравствуйте, Erop, Вы писали:

E>Фишка в том, что часто нужно не качественно, а быстро.


Вот это-то и не нравится.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: Извини, если высказался непонятно
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 25.10.07 12:21
Оценка: 1 (1) :)
Здравствуйте, Erop, Вы писали:

E>>Причем, если продукт не коробочный, а заказной, то он может быть даже поважнее такого критерия, как качество


E>Я не согласен, что "к сожалению", так как я рассматриваю программирование, как позитивную в целом, созидательную деятельность, направленную на решение каких-то проблем каких-то людей


"К сожалению" я написал потому, что из знаменитой тройки "быстро, дешево, качественно" сейчас самым главным критерием, как мне кажется, является "быстро". Результатом чего является не только ухудшение качества, сколько объем работы -- "сначала быстренько делаем вот это, затем быстренько переделываем вот на это, затем еще раз быстренько вот на это..."

E>Но безусловно есть огромный пласт ПО, которое нужно "быстро", а "медленно" не нужно просто, ни при каком уровне качества...

E>AFAIK для решения таких проблем нужен бэйсик, или нет, или жаба, но никак не STL, кстати. Но и в этом случае критерием качества останется то, что процесс разработки ставит поставленную задачу. Разрабатывает нужную программу в приемлемый срок и не слишком задорого...

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

Но все это уже офтопик.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: Популярность boost и STL
От: dip_2000 Россия  
Дата: 24.10.07 12:49
Оценка: -1 :)
Здравствуйте, rg_software, Вы писали:

_>Очень интересно мнение форумчан, насколько широко люди, программирующие на С++, используют boost & STL? Речь идет о самом широком срезе -- студенты, программисты, хобби-девелоперы...ну за всех говорить не будем, за себя, да еще за часть фирмы может быть...


_>Иными словами, насколько актуально, например, обучать этому людей? Или уже все, кто пишет на плюсах, эти штуки знают?

Знают, о наличии, и некоторых бызовых возможностях, все выше джуниоров, наверное.... но... см ниже...

_>Особенно интересует STL, т.к. буст, по моему (практически твёрдому убеждению) точно используют недостаточно широко. Спасибо!

За себя крайне активно использую STL, Boost coding standards запрещают но и то, часть пришлось включить в проект(например boost::bind). Учим потихоньку самостоятельно, но тяжко без боевого использования
Если говорить о фирме... то тут все как во многих местах — stl используется, но недолюбливается, исключения используются, тк нужно "идти в ногу со временем", но при этом не используется RAII Как это можно совмещать не понятно. Люди при этом уверены, что утечек не будет.

Re[8]: Популярность boost и STL
От: Roman Odaisky Украина  
Дата: 24.10.07 16:37
Оценка: -2
Здравствуйте, Sergey, Вы писали:

>> Я бы рассказал про итераторы, всё равно большинство людей их до конца, похоже, не осилило.

S>Для тех, кто осилил указатели и массивы, можно сказать, что это аналог указателей при работе с массивами, но с ограничениями в зависимости от категории.

Дело не в этом, а в идее задания интервалов в виде [first, last), и в специальном итераторе «past-the-end».

Опять же, вот что плохого в функции template <class X> void foo(std::vector<X> const &)?

>> Например, почему std::reverse(str.begin(), str.end()) — неверный ответ на вопрос «как развернуть строку».

S>По-моему, вполне правильный ответ... У вас в вопросе опечатки нет случаем?

Сложность std::reverse — O(n). А можно использовать std::reverse_iterator, O(1).
До последнего не верил в пирамиду Лебедева.
Re[9]: Действительно с пониманием итераторов не всё просто..
От: CreatorCray  
Дата: 25.10.07 07:31
Оценка: +2
Здравствуйте, Roman Odaisky, Вы писали:

RO>Он-то верный, но не всегда.

Нет, ответ на вопрос в озвученной формулировке ("как развернуть строку") верный.
На выходе предложенного решения будет развернутая строка.
В условии нигде не сказано что надо пройтись неким алгоритмом по строке "задом наперед".
Так что

RO>Но наверняка лучше так:

RO>
RO>std::vector<unsigned char> buffer;
RO>buffer.reserve(54308428790203478762340052723346983453487023489987231275412390872348475);
RO>getData(std::back_inserter(buffer));

RO>process(buffer.rbegin(), buffer.rend());
RO>

будет как раз неправильным ответом
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[9]: Действительно с пониманием итераторов не всё просто..
От: andrey.desman  
Дата: 26.10.07 02:15
Оценка: :))
Здравствуйте, Roman Odaisky, Вы писали:

RO>Можно так:

RO>
RO>std::vector<unsigned char> buffer;
RO>buffer.reserve(54308428790203478762340052723346983453487023489987231275412390872348475);
RO>getData(std::back_inserter(buffer));

RO>std::reverse(buffer.begin(), buffer.end());

RO>process(buffer.begin(), buffer.end());
RO>


Круто! Я тоже хочу себе пятьдесят четыре довигинтиллиона триста восемь унвигинтиллионов четыреста двадцать восемь вигинтиллионов семьсот девяносто новемдециллионов двести три октодециллиона четыреста семьдесят восемь септендециллионов семьсот шестьдесят два сексдециллиона триста сорок квиндециллионов пятьдесят два кваттуордециллиона семьсот двадцать три тредециллиона триста сорок шесть дуодециллионов девятьсот восемьдесят три ундециллиона четыреста пятьдесят три дециллиона четыреста восемьдесят семь нониллионов двадцать три октиллиона четыреста восемьдесят девять септиллионов девятьсот восемьдесят семь секстиллионов двести тридцать один квинтиллион двести семьдесят пять квадриллионов четыреста двенадцать триллионов триста девяносто миллиардов восемьсот семьдесят два миллиона триста сорок восемь тысяч четыреста семьдесят пять байтов оперативы
Re[2]: Популярность boost и STL
От: rg_software  
Дата: 24.10.07 12:27
Оценка: +1
А>Актуально обучать где? В школе\вузе\фиоме?
Скажем так, "массовая аудитория, интересующаяся современным С++"

А>Сейчас прибежит Егор и объяснит тебе, что ты не прав. Потом Егору объяснят, что он не прав. И начнется очерередная СВ "СТЛ vs велосипеды"


Нет-нет, ни в коем случае, никаких войн. Я спрашиваю лишь о текущем состоянии дел; вопрос о том, насколько хороши библиотеки -- не ставится.

Я понимаю, что те, кто читает RSDN, наверняка эти либы используют (или не используют, но в курсе их существования). Но при этом, сдается мне, широк пласт народа, до сих пор рассматривающий С++ на уровне С, и дальше не лезущий.
Re: Популярность boost и STL
От: tilarids Украина tilarids.blogspot.com
Дата: 24.10.07 13:50
Оценка: :)
Здравствуйте, rg_software, Вы писали:

_>Очень интересно мнение форумчан, насколько широко люди, программирующие на С++, используют boost & STL? Речь идет о самом широком срезе -- студенты, программисты, хобби-девелоперы...

_>[skipped]
_>Особенно интересует STL, т.к. буст, по моему (практически твёрдому убеждению) точно используют недостаточно широко. Спасибо!

Как уже написал — STL в реальной работе используется повсеместно, Boost — практически не используется, ибо слишком громоздок. Точнее, не используются громоздкие вещи Boost`а — используются вырезки из буста.

По широким срезам сказать могу весьма точно, так как сам по совместительству студент. Какой STL? Используется паттерн "Copy-Paste". За рамки C выходят редкие студенты, за рамки бесшаблонного С++ не выходят даже многие преподаватели.

Заработать денег на обучении STL можно, но смысла в этом я не вижу.
<вырезано, дабы сохранить место на сервере>
Re[5]: Популярность boost и STL
От: jazzer Россия Skype: enerjazzer
Дата: 24.10.07 13:58
Оценка: :)
Здравствуйте, rg_software, Вы писали:

_>Скажем так -- предложили разработать небольшой тренинг (пусть будет 3-5 часов) по С++ для "интересующейся аудитории". Времени немного, то есть это НЕ учебный курс. Предполагается, что аудитория С++ владеет.

_>С другой стороны, рассказать о какой-либо изолированной интересной находке -- слишком узко, да и не каждая из них всем нужна.

_>Я решил, что лучше всего показать на примерах использование Boost & STL, чтобы люди увидели, как легко решаются типовые задачи при условии применения правильного инструментария.


_>Вопрос для меня -- в расстановке акцентов. Скорее буст, скорее стл или повсюду понемногу.

_>Если стл знают все, то можно сразу перейти к бусту. Если на это рассчитывать не приходится, буду рассказывать и про стл тоже.

_>Вот... посоветуйте!


Я бы разработал два тренинга: один по STL и другой по Boost. (Заодно и денег вдвое больше срубишь )

Но!
Вызывают очень большие сомнения "3-5 часов" — имхо, ничего толкового не выйдет, если аудитория уже не в курсе.
За 3-5 часов можно дать только какой-то один аспект, скажем, "контейнеры СТЛ", или "алгоритмы СТЛ", или "что еще есть в СТЛ (байндеры и прочая)".

К нам вот приезжал Саттер, целую неделю по 8 часов читал лекции по своим книгам + немножко Майерса — так те, кто читал, откровенно скучали, а те, кто не читал — в основном были далеки от этой проблематики и мало чего поняли. Т.е. что-то они поняли и протащились, но как это использовать в реальной работе — у них не появилось не малейшего понятия.

Т.е, скажем, если человек понятия не имеет об exception safety — ему все эти разговоры просто мимо, он еще не в теме. Ему только 2-3 часа надо объяснять, что это такое, чтоб понял и проникся.

В результате это было полезно тем, кто прочитал книгу, но давно — просто освежить в памяти.


Если нужно краткое введение в наиболее часто использующиеся библиотеки буста — есть соответствующая книга, не знаю, есть ли она на русском.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[5]: Популярность boost и STL
От: Sergey Россия  
Дата: 24.10.07 14:54
Оценка: -1
> Скажем так -- предложили разработать небольшой тренинг (пусть будет 3-5 часов) по С++ для "интересующейся аудитории". Времени немного, то есть это НЕ учебный курс. Предполагается, что аудитория С++ владеет.
> С другой стороны, рассказать о какой-либо изолированной интересной находке -- слишком узко, да и не каждая из них всем нужна.
>
> Я решил, что лучше всего показать на примерах использование Boost & STL, чтобы люди увидели, как легко решаются типовые задачи при условии применения правильного инструментария.
>
> Вопрос для меня -- в расстановке акцентов. Скорее буст, скорее стл или повсюду понемногу.
> Если стл знают все, то можно сразу перейти к бусту. Если на это рассчитывать не приходится, буду рассказывать и про стл тоже.

Мне кажется, нет смысла про STL рассказывать. Если человек, "владеющий C++", не удосужился ознакомится с STL, то скорее всего он и ваш тренинг мимо ушей пропустит. Ну а про буст, IMHO, было бы полезно рассказать очень поверхностно и обзорно — один-два примера из каждой либы, чтобы люди примерно представляли что там есть. Кому надо — почитают потом документацию, кому не надо — тоже скучать будут меньше, чем если вы зароетесь в тонкости какой-нибудь одной библиотеки.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[6]: Популярность boost и STL
От: Roman Odaisky Украина  
Дата: 24.10.07 15:14
Оценка: +1
Здравствуйте, Sergey, Вы писали:

>> Скажем так -- предложили разработать небольшой тренинг (пусть будет 3-5 часов) по С++ для "интересующейся аудитории". Времени немного, то есть это НЕ учебный курс. Предполагается, что аудитория С++ владеет.


S>Мне кажется, нет смысла про STL рассказывать. Если человек, "владеющий C++", не удосужился ознакомится с STL, то скорее всего он и ваш тренинг мимо ушей пропустит. Ну а про буст, IMHO, было бы полезно рассказать очень поверхностно и обзорно — один-два примера из каждой либы, чтобы люди примерно представляли что там есть. Кому надо — почитают потом документацию, кому не надо — тоже скучать будут меньше, чем если вы зароетесь в тонкости какой-нибудь одной библиотеки.


Я бы рассказал про итераторы, всё равно большинство людей их до конца, похоже, не осилило. Например, почему std::reverse(str.begin(), str.end()) — неверный ответ на вопрос «как развернуть строку». По этому поводу есть две поучительные
Автор: Odi$$ey
Дата: 14.03.03
картинки
Автор: Roman Odaisky
Дата: 26.03.07
.

Про Boost, +1, было бы полезно рассказать про каждую библиотеку понемножку, и упомянуть преимущества и недостатки Boost вообще (хорошая лицензия, единообразное проектирование, требовательность к компилятору, танцы с bcp). Про STL, кстати, такой обзор тоже явно не был бы лишним.
До последнего не верил в пирамиду Лебедева.
Re[7]: Популярность boost и STL
От: rg_software  
Дата: 24.10.07 15:37
Оценка: :)
RO>Я бы рассказал про итераторы, всё равно большинство людей их до конца, похоже, не осилило. Например, почему std::reverse(str.begin(), str.end()) — неверный ответ на вопрос «как развернуть строку». По этому поводу есть две поучительные
Автор: Odi$$ey
Дата: 14.03.03
картинки
Автор: Roman Odaisky
Дата: 26.03.07
.

Кстати, почему так строку не развернуть? В инете этот вариант часто предлагают.

RO>Про Boost, +1, было бы полезно рассказать про каждую библиотеку понемножку, и упомянуть преимущества и недостатки Boost вообще (хорошая лицензия, единообразное проектирование, требовательность к компилятору, танцы с bcp). Про STL, кстати, такой обзор тоже явно не был бы лишним.


Верно. Я, конечно, буст уважаю, но 74 библиотеки? Разве что несколько выбранных наугад.
Re[7]: Популярность boost и STL
От: Sergey Россия  
Дата: 24.10.07 15:48
Оценка: +1
> S>Мне кажется, нет смысла про STL рассказывать. Если человек, "владеющий C++", не удосужился ознакомится с STL, то скорее всего он и ваш тренинг мимо ушей пропустит. Ну а про буст, IMHO, было бы полезно рассказать очень поверхностно и обзорно — один-два примера из каждой либы, чтобы люди примерно представляли что там есть. Кому надо — почитают потом документацию, кому не надо — тоже скучать будут меньше, чем если вы зароетесь в тонкости какой-нибудь одной библиотеки.
>
> Я бы рассказал про итераторы, всё равно большинство людей их до конца, похоже, не осилило.

Для тех, кто осилил указатели и массивы, можно сказать, что это аналог указателей при работе с массивами, но с ограничениями в зависимости от категории.

> Например, почему std::reverse(str.begin(), str.end()) — неверный ответ на вопрос «как развернуть строку».


По-моему, вполне правильный ответ... У вас в вопросе опечатки нет случаем?

> По этому поводу есть две поучительные
Автор: Odi$$ey
Дата: 14.03.03
картинки
Автор: Roman Odaisky
Дата: 26.03.07
.


Да, про reverse_iterator и equal_range пояснить имеет смысл.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[8]: Действительно с пониманием итераторов не всё просто..
От: Roman Odaisky Украина  
Дата: 24.10.07 17:16
Оценка: :)
Здравствуйте, Erop, Вы писали:

RO>>Например, почему std::reverse(str.begin(), str.end()) — неверный ответ на вопрос «как развернуть строку».

E>Не очень понятно что за вопрос и почему ответ неправильный
E>Вот такой ответ верный?
    char m[] = "мама";
E>    std::reverse( m, m + 4 );


Он-то верный, но не всегда.

Можно так:
std::vector<unsigned char> buffer;
buffer.reserve(54308428790203478762340052723346983453487023489987231275412390872348475);
getData(std::back_inserter(buffer));

std::reverse(buffer.begin(), buffer.end());

process(buffer.begin(), buffer.end());

Но наверняка лучше так:
std::vector<unsigned char> buffer;
buffer.reserve(54308428790203478762340052723346983453487023489987231275412390872348475);
getData(std::back_inserter(buffer));

process(buffer.rbegin(), buffer.rend());
До последнего не верил в пирамиду Лебедева.
Re[8]: Популярность boost и STL
От: Centaur Россия  
Дата: 25.10.07 07:50
Оценка: :)
Здравствуйте, rg_software, Вы писали:

RO>>Я бы рассказал про итераторы, всё равно большинство людей их до конца, похоже, не осилило. Например, почему std::reverse(str.begin(), str.end()) — неверный ответ на вопрос «как развернуть строку». По этому поводу есть две поучительные
Автор: Odi$$ey
Дата: 14.03.03
картинки
Автор: Roman Odaisky
Дата: 26.03.07
.

_>Кстати, почему так строку не развернуть? В инете этот вариант часто предлагают.

Так строку не развернуть, но по причинам, не имеющим почти никакого отношения к C++.

Проблема будет при попытке развернуть строку, содержащую многобайтный символ (который при этом вывернется наизнанку и станет невалидным). Или строку Unicode, содержащую суррогатные пары (которые тоже вывернутся наизнанку) или nonspacing диакритику в decomposed форме (которая уйдёт на соседнюю букву).

std::basic_string<T>::[const_]reverse_iterator, естественно, никакого улучшения с точки зрения корректности не даст.
Re[9]: Популярность boost и STL
От: Sergey Россия  
Дата: 25.10.07 08:09
Оценка: +1
>>> Я бы рассказал про итераторы, всё равно большинство людей их до конца, похоже, не осилило.
> S>Для тех, кто осилил указатели и массивы, можно сказать, что это аналог указателей при работе с массивами, но с ограничениями в зависимости от категории.
>
> Дело не в этом, а в идее задания интервалов в виде [first, last), и в специальном итераторе «past-the-end».

Работа с массивами через указатели осуществляется точно так же.

> Опять же, вот что плохого в функции template <class X> void foo(std::vector<X> const &)?

>
>>> Например, почему std::reverse(str.begin(), str.end()) — неверный ответ на вопрос «как развернуть строку».
> S>По-моему, вполне правильный ответ... У вас в вопросе опечатки нет случаем?
>
> Сложность std::reverse — O(n). А можно использовать std::reverse_iterator, O(1).

Зато потом на каждом разыменовании лишние операции вылезут.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[7]: Популярность boost и STL
От: jazzer Россия Skype: enerjazzer
Дата: 25.10.07 09:00
Оценка: :)
Здравствуйте, Lorenzo_LAMAS, Вы писали:


J>>К нам вот приезжал Саттер, целую неделю по 8 часов читал лекции по своим книгам + немножко Майерса — так

L_L>Серьезно? А к вам — это куда? И сколько он бабла срубил?
Серьезно. На работу к нам приезжал, лекции читал.
И еще много кого приезжало, типа Крейг Ларман, еще джавер приезжал, Брайан Гоец или как его там правильно писать (он порадовал тем, что рассказывая о том, какая java крутая, в середине мрачно вставил: "Единственное, за что я разработчиков java ненавижу, так это за то, что они не взяли из С++ const").
Они же часто по всяким толстым фирмам ездят.
Вон, в соседний банк Александреску с лекциями приезжал — завидую

Сколько бабла срубил — не сказал, я спрашивал
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Популярность boost и STL
От: COFF  
Дата: 25.10.07 10:09
Оценка: +1
Здравствуйте, rg_software, Вы писали:

_>Иными словами, насколько актуально, например, обучать этому людей? Или уже все, кто пишет на плюсах, эти штуки знают?


_>Особенно интересует STL, т.к. буст, по моему (практически твёрдому убеждению) точно используют недостаточно широко. Спасибо!


STL по любому знать надо, по крайней мере в объеме — контейнеров (плюс соответствующие итераторы) и строк. Насчет алгоритмов — не уверен, т.е. рассказать желательно, что вот есть такие и показать на примере, но углубляться на обзорной лекции я бы не стал. Мне часто проще написать банальный цикл, чем лепить еще один класс, т.е. это скорее на любителя. Насчет буста, я бы обязательно рассказал об указателях.

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

Сам я сейчас STL не использую, так как в проекте используются другие строки и контейнеры, а решать одни и те же задачи двумя разными способами одновременно по моему не очень хорошо.
Re[5]: Извини, если высказался непонятно
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 25.10.07 11:54
Оценка: +1
Здравствуйте, Erop, Вы писали:

E>>>Ну программы-то работают?


OE>>это кстати вообще не может рассматриваться как критерий оценки качества ПО или квалификации программиста — если программа не работает, говорить просто не о чем, по факту нет программиста и нет программы как таковой.


E>Я имел в виду "программа, как коммерческий продукт"...

E>ИМХО, при коммерческом программировании это вообще единственный критерий оценки процесса разработки. ПО должно выполнять возложенные на него задачи, то есть "работать".
E>В случае коробочного софта, это обычно обозначает: выполнять нужную функциональность, быть поддерживаемым, развиваемым, и, в послдеднее время, ещё и легко переносимым на другие платформы...

К сожалению, не единственный это критерий. Есть еще, как минимум, такой критерий оценки процесса разработки, как скорость выпуска продукта.

Причем, если продукт не коробочный, а заказной, то он может быть даже поважнее такого критерия, как качество


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[11]: Действительно с пониманием итераторов не всё просто.
От: Roman Odaisky Украина  
Дата: 25.10.07 13:14
Оценка: :)
Здравствуйте, Erop, Вы писали:

CC>>будет как раз неправильным ответом

E>На самом деле тут есть некоторый контекст. НАсколько меня не подводит склероз, Роман считает, что вопрос про разворачивание строк надо задавать на собеседовании. И если дадут ответ не на STL, то вообще ругаться-ругаться. А если вспомнят про std::reverse, то чморрить кандидата, за то, что он понаписал тут O(n), вместо O(1)...
E>Правда, если бы мне предложли решение от Романа, я бы спросил: "Ну а развёрнутая строка-то где?" :)

Так Джоэл считает. У него, впрочем, контекст тот, что собеседуемый должен сам осилить указательную/итераторную арифметику.

Наверное, я был неправ со словом «неправильный». Тот ответ тоже правильный. Просто нужно знать об обоих и выбрать нужный. Я не сотрудник отдела кадров, но мне кажется, что многие об одном или даже об обоих этих вариантах не знают.

P. S. Однажды дернул меня нечистый на Топкодере поучастовать. Там было задание — найти какое-то свойство строки, сжатой нехитрым вариантом RLE. Типа того, что a(2,a(3,ab)b)a = aaabababbaabababba. Я решил, что проще будет идти по строке с конца, поэтому передавал в функцию rbegin и rend. Оно-то было проще, но мой велосипедный конечный автомат всё время выпадал. Так я задачу и не сделал. Я потом понял, что reverse("a(bc)d") != "d(cb)a", а равняется оно "d)cb(a". Поэтому при отладке, когда я сразу вводил строку задом наперед (еще одна проблема reverse_iterator — поддержка со стороны IDE), работало, а когда я заменил begin/end на rbegin/rend, перестало. Не то, чтобы мне помогла std::reverse — для этой задачи было всё равно — это скорее свойство человеческого мышения такое, человек не компьютер.
До последнего не верил в пирамиду Лебедева.
Re[12]: таки не всё просто, однозначно :)
От: Erop Россия  
Дата: 25.10.07 13:27
Оценка: :)
Здравствуйте, Roman Odaisky, Вы писали:

RO>Так Джоэл считает. У него, впрочем, контекст тот, что собеседуемый должен сам осилить указательную/итераторную арифметику.

Ну я так понял, что ты разделяешь его точку зрения?

RO>P. S....Я потом понял, что reverse("a(bc)d") != "d(cb)a", а равняется оно "d)cb(a". Поэтому при отладке, когда я сразу вводил строку задом наперед (...), работало, а когда я заменил begin/end на rbegin/rend, перестало. Не то, чтобы мне помогла std::reverse — для этой задачи было всё равно — это скорее свойство человеческого мышения такое, человек не компьютер.


Я согласен что свойство. И у него есть такое вот банальное следствие: "чем более абстрактен код, тем сложнее его писать корректно и тем труднее его отлаживать и тестировать"...
ИМХО твой пример с заменой итератора это ярко демонстрирует...
Мало того, если бы ты "отступил на один шаг" в абстрактности своего кода и не заменяд бы итераторы в отлаженном коде, а написал бы по простому std::revarse, то ты бы просто и незатейлево увидел в отладчике что происходит. И скорее всего бы отладился...

При этом всём мне кажется, что ты довольно таки квалифицированный инженер, во всяком случае "выше среднего уровня", и то у тебя происходят проблемы из-за излишней абстрактности STL-way кода...
Может хотя бы твой собственный пример тебя в чём-то убедит?

p. s.
Да, не приведёшь задачку? Интересно просто...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[10]: Извини, если высказался непонятно
От: dip_2000 Россия  
Дата: 29.10.07 11:39
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>>Фишка в том, что часто нужно не качественно, а быстро.

E>Вот это-то и не нравится.
Хоти и поставил +1, но... такова жизнь
Re: Популярность boost и STL
От: Qbit86 Кипр
Дата: 29.10.07 16:51
Оценка: :)
Здравствуйте, rg_software, Вы писали:

_>Очень интересно мнение форумчан, насколько широко люди, программирующие на С++, используют boost & STL? Речь идет о самом широком срезе -- студенты, программисты, хобби-девелоперы...


Имхо: каждый C++-разработчик обязан знать STL. Равно как и определённое подмножество Boost'а.
Из STL позволительно не знать всякие mem_fun, bind1st, etc, так как это есть в Boost'е.

Насколько широко? Даже не знаю, как точно ответить на этот вопрос. Например, boost::shared_ptr употребляется в моём коде не реже, чем цикл while  Если такое сравнение вообще может служить критерием.
Глаза у меня добрые, но рубашка — смирительная!
Re[11]: Популярность boost и STL
От: jazzer Россия Skype: enerjazzer
Дата: 30.10.07 01:02
Оценка: :)
Здравствуйте, Centaur, Вы писали:

C>Да. Вот только в этом коде некий гипотетический тип Utf8 должен быть опять-таки строчкой байт либо достаточно широким символьным типом. А если добавить ещё и обработку диакритики (и соответственно типы Grapheme и GraphemeIterator), то реализация станет сложной, а оптимизация — трудной. Ни о каком произвольном доступе к графемам за O(1), конечно, не стоит и мечтать — разве что индексировать строку при первом использовании…


C>Кстати, в свете юникода стоит отметить ещё одну проблему со строками вообще и со строками в C++ в частности. Строки иногда очень хочется сделать ключом map’а или ещё как-нибудь отсортировать. При этом нужен предикат порядка над строками. А он — surprise! — разный для разных человеческих языков и в общем случае не сводится к поэлементному сравнению (как это предполагает std::char_traits). Кто здесь когда последний раз инстанцировал std::map<std::wstring, T, std::locale>?


Погоди-погоди. Если я правильно помню, по стандарту в std::wchar_t должен влезать любой символ, который поддерживается реализацией, в том числе суррогатная пара целиком, если реализация заявляет о поддержки оных (я знаю, что у мелкософта это не так — это проблема мелкософта, это значит, что млекософтовский wchat_t на самом деле не поддерживает юникод, со всеми сопутствующими граблями). И вообще когда у тебя есть многобайтовая строка std::string(N), то при помощи codecvt ты можешь получить std::wstring(M), где M<=N, и ее ты уже можешь сравнивать поэлементно.

UPD. Перечитал твои слова. Собственно, ты о том же и говоришь, твой "достаточно широкий символьный тип" — это и есть wchar_t.
А проблемы начинаются, когда у тебя реализация, не поддерживающая тот набор символов, который тебе нужен.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[13]: Популярность boost и STL
От: jazzer Россия Skype: enerjazzer
Дата: 30.10.07 10:07
Оценка: :)
Здравствуйте, Erop, Вы писали:

E>Не, ну если тебе надо чтобы было "стандартно", а не чтобы "работало", то таки да, ты прав.


Ну под Linux в wchar_t влезает чуть ли не UTF-32, если мне память не изменяет.

На самом деле все стандартно и под линухом, и под виндой.
Просто под линухом поддержка уникода лучше, чем под виндой.

А это значит, что под линухом ты можешь пользоваться стандартной строкой, а под виндой тебе нужен бубен расписной.
Ну и естественно, если понадобится поддержка уникода, который не влезет в линуховый — там потребуется тот же бубен.

Это все на усмотрение реализации, сам язык и стандарт ни при чем.
В чем, собственно, и прелесть стандарта: если реализация поддерживает именно то, что тебе надо, то можешь пользоваться толко стандартными вещами и забыть про бубны, и все будет работать.

E>Это нам всем надо, чтобы под Windows тоже работало

Мне, например, не надо
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Популярность boost и STL
От: rg_software  
Дата: 24.10.07 12:05
Оценка:
Очень интересно мнение форумчан, насколько широко люди, программирующие на С++, используют boost & STL? Речь идет о самом широком срезе -- студенты, программисты, хобби-девелоперы...

Иными словами, насколько актуально, например, обучать этому людей? Или уже все, кто пишет на плюсах, эти штуки знают?

Особенно интересует STL, т.к. буст, по моему (практически твёрдому убеждению) точно используют недостаточно широко. Спасибо!
Re: Популярность boost и STL
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 24.10.07 12:19
Оценка:
Здравствуйте, rg_software, Вы писали:

_>Очень интересно мнение форумчан, насколько широко люди, программирующие на С++, используют boost & STL? Речь идет о самом широком срезе -- студенты, программисты, хобби-девелоперы...


Программирую на C++ с 1992-93 гг. STL начал использовать где-то в 96-м или 97-м. С тех пор использую его постоянно, если платформа/компилятор обеспечивают его поддержку.

Boost не использую. Но не столько из-за сложности/качества Boost-а, а из-за некоторых организационных факторов.

_>Иными словами, насколько актуально, например, обучать этому людей? Или уже все, кто пишет на плюсах, эти штуки знают?


По моему мнению, обучать этому нужно, поскольку STL -- это часть языка.

Обучать ли Boost-у? Если собираетесь использовать его в своих проектах, то однозначно -- да.
В остальных случаях достаточно хотя бы поверхностно ознакомиться с тем, что в Boost есть. Для того, чтобы не изобретать заново то, что в Boost уже сделано.

Если есть цель освоить C++ в совершенстве (т.е. до мельчайших деталей стандарта языка), то может иметь смысл разобраться с тем, как некоторые Boost-овские библиотеки устроены.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Популярность boost и STL
От: dip_2000 Россия  
Дата: 24.10.07 12:40
Оценка:
Здравствуйте, rg_software, Вы писали:

_>Я понимаю, что те, кто читает RSDN, наверняка эти либы используют (или не используют, но в курсе их существования). Но при этом, сдается мне, широк пласт народа, до сих пор рассматривающий С++ на уровне С, и дальше не лезущий.

тогда уже нужно начинать с "используете ли вы шаблоны, и на сколько активно?"
Re[4]: Популярность boost и STL
От: Аноним  
Дата: 24.10.07 12:45
Оценка:
Здравствуйте, dip_2000, Вы писали:

_>тогда уже нужно начинать с "используете ли вы шаблоны, и на сколько активно?"

Спорно. СТЛ я использую чаще, чем пишу свои шаблоны
Re: Популярность boost и STL
От: jazzer Россия Skype: enerjazzer
Дата: 24.10.07 12:46
Оценка:
Здравствуйте, rg_software, Вы писали:

_>Очень интересно мнение форумчан, насколько широко люди, программирующие на С++, используют boost & STL? Речь идет о самом широком срезе -- студенты, программисты, хобби-девелоперы...


О широких срезах ничего сказать не могу, у нас на работе обе библиотеки активно используют (и я в своих личных разработках тоже).

_>Иными словами, насколько актуально, например, обучать этому людей? Или уже все, кто пишет на плюсах, эти штуки знают?

_>Особенно интересует STL, т.к. буст, по моему (практически твёрдому убеждению) точно используют недостаточно широко. Спасибо!

STL — это уже Стандарт, boost — это будущий стандарт.
Так что, очевидно, обучать надо, по крайней мере, тем вещам, которые уже вошли в следующий Стандарт.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[5]: Популярность boost и STL
От: rg_software  
Дата: 24.10.07 12:47
Оценка:
Здравствуйте, Аноним, Вы писали:

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


_>>тогда уже нужно начинать с "используете ли вы шаблоны, и на сколько активно?"

А>Спорно. СТЛ я использую чаще, чем пишу свои шаблоны

Согласен. Не будем отвлекаться. Есть большая разница между разработкой собственных шаблонов и использованием std::sort(), например.

Так что возвращаемся к бусту и стл
Re[3]: Популярность boost и STL
От: jazzer Россия Skype: enerjazzer
Дата: 24.10.07 12:49
Оценка:
Здравствуйте, rg_software, Вы писали:

_>Нет-нет, ни в коем случае, никаких войн. Я спрашиваю лишь о текущем состоянии дел; вопрос о том, насколько хороши библиотеки -- не ставится.


Встречный вопрос — а тебе зачем?
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Популярность boost и STL
От: Roman Odaisky Украина  
Дата: 24.10.07 13:06
Оценка:
Здравствуйте, rg_software, Вы писали:

_>Очень интересно мнение форумчан, насколько широко люди, программирующие на С++, используют boost & STL? Речь идет о самом широком срезе -- студенты, программисты, хобби-девелоперы...


Лично я использую и то, и другое.

_>Иными словами, насколько актуально, например, обучать этому людей? Или уже все, кто пишет на плюсах, эти штуки знают?

_>Особенно интересует STL, т.к. буст, по моему (практически твёрдому убеждению) точно используют недостаточно широко.

Как-то странно поставлен вопрос. Если вы пишете парсер, то Boost.Spirit знать нужно. Если вы не пишете парсер, то Boost.Spirit знать не нужно.

Касательно STL я считаю, что хороший программер на C++ должен понимать основные концепции STL (итераторы, strict weak ordering, и т. п.), для того, чтобы понимать код, написанный другими, и представлять себе, что в STL есть и чего в STL нет, для того, чтобы самому писать код без ненужных велосипедов. На этом форуме кто-то причислял к недостаткам STL то, что она, ввиду своей стандартности и универсальности, содержит непредсказуемые вещи, например, std::next_permutation — не зная, не догадаешься, что такое в STL есть. Так что список алгоритмов следует помнить, тем более, что он невелик
Автор: Roman Odaisky
Дата: 17.09.07
Вопрос: Какие алгоритмы STL вы использовали?
(из-за ограничения в 30 вариантов пришлось убрать тривиальные swap, min-max и т. п.)
.

Касательно библиотек Boost я считаю, что хороший программер на C++ должен знать, что они существуют.
До последнего не верил в пирамиду Лебедева.
Re: Популярность boost и STL
От: zaufi Земля  
Дата: 24.10.07 13:20
Оценка:
Здравствуйте, rg_software, Вы писали:

_>Очень интересно мнение форумчан, насколько широко люди, программирующие на С++, используют boost & STL? Речь идет о самом широком срезе -- студенты, программисты, хобби-девелоперы...


_>Иными словами, насколько актуально, например, обучать этому людей? Или уже все, кто пишет на плюсах, эти штуки знают?


_>Особенно интересует STL, т.к. буст, по моему (практически твёрдому убеждению) точно используют недостаточно широко. Спасибо!


boost использовался на последних моих 3х местах работы (начиная с 2004 года)... причем на текущем месте он тут уже был до меня и в оч солидных объемах

вобщем я довольно давно не встречал вживую С++ программеров кто бы не знал по кр мере про буст
Re[4]: Популярность boost и STL
От: rg_software  
Дата: 24.10.07 13:48
Оценка:
Здравствуйте, jazzer, Вы писали:

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


_>>Нет-нет, ни в коем случае, никаких войн. Я спрашиваю лишь о текущем состоянии дел; вопрос о том, насколько хороши библиотеки -- не ставится.


J>Встречный вопрос — а тебе зачем?


Скажем так -- предложили разработать небольшой тренинг (пусть будет 3-5 часов) по С++ для "интересующейся аудитории". Времени немного, то есть это НЕ учебный курс. Предполагается, что аудитория С++ владеет.
С другой стороны, рассказать о какой-либо изолированной интересной находке -- слишком узко, да и не каждая из них всем нужна.

Я решил, что лучше всего показать на примерах использование Boost & STL, чтобы люди увидели, как легко решаются типовые задачи при условии применения правильного инструментария.

Вопрос для меня -- в расстановке акцентов. Скорее буст, скорее стл или повсюду понемногу.
Если стл знают все, то можно сразу перейти к бусту. Если на это рассчитывать не приходится, буду рассказывать и про стл тоже.

Вот... посоветуйте!
Re: Популярность boost и STL
От: LaptevVV Россия  
Дата: 24.10.07 14:33
Оценка:
Здравствуйте, rg_software, Вы писали:

_>Очень интересно мнение форумчан, насколько широко люди, программирующие на С++, используют boost & STL? Речь идет о самом широком срезе -- студенты, программисты, хобби-девелоперы...

_>Иными словами, насколько актуально, например, обучать этому людей? Или уже все, кто пишет на плюсах, эти штуки знают?
_>Особенно интересует STL, т.к. буст, по моему (практически твёрдому убеждению) точно используют недостаточно широко. Спасибо!
STL — изучать по-любому, так как это входит в стандарт... Буст — ознакомление и общий обзор — весьма полезно... Если использование в проектах — тогда изучать детально...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Популярность boost и STL
От: dip_2000 Россия  
Дата: 24.10.07 16:13
Оценка:
Здравствуйте, Erop, Вы писали:

я не гоняюсь за рейтингами, но все же интересно "-" то за что? :D Я лишь описал ситуацию, так как ее вижу. Если знаете, что в чем то не прав, почему об этом не сказать ? В Вашем формате это какое то скрытое мщение напоминает
Re[7]: Действительно с пониманием итераторов не всё просто..
От: Erop Россия  
Дата: 24.10.07 16:49
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Например, почему std::reverse(str.begin(), str.end()) — неверный ответ на вопрос «как развернуть строку».

Не очень понятно что за вопрос и почему ответ неправильный
Вот такой ответ верный?
    char m[] = "мама";
    std::reverse( m, m + 4 );
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[9]: Популярность boost и STL
От: Erop Россия  
Дата: 24.10.07 16:50
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Сложность std::reverse — O(n). А можно использовать std::reverse_iterator, O(1).

А почему именно это называется "развернуть строку"?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: Популярность boost и STL
От: _Obelisk_ Россия http://www.ibm.com
Дата: 24.10.07 18:23
Оценка:
Здравствуйте, rg_software, Вы писали:

_>Очень интересно мнение форумчан, насколько широко люди, программирующие на С++, используют boost & STL? Речь идет о самом широком срезе -- студенты, программисты, хобби-девелоперы...


_>Иными словами, насколько актуально, например, обучать этому людей? Или уже все, кто пишет на плюсах, эти штуки знают?


_>Особенно интересует STL, т.к. буст, по моему (практически твёрдому убеждению) точно используют недостаточно широко. Спасибо!


STL активно используется, boost не используется, так как его интеграция в проект (> 400Mb исходников) связана с рисками и дополнительным расходом времени. Плюс тестирование на трех платформах, да проверка, что он с компилятором от MainSoft-а дружит.

Всякие advanced С++ трюки с шаблонами и т.п. используются, когда это оправдано и приводит к выигрышу в производительности или расходах памяти.



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[2]: Популярность boost и STL
От: Erop Россия  
Дата: 24.10.07 22:53
Оценка:
Здравствуйте, dip_2000, Вы писали:

_>Если говорить о фирме... то тут все как во многих местах — stl используется, но недолюбливается, исключения используются, тк нужно "идти в ногу со временем", но при этом не используется RAII Как это можно совмещать не понятно. Люди при этом уверены, что утечек не будет.



Ну программы-то работают?
Да и вообще как-то ты неуважительно о своих коллегах. Возможно более опытных, чем ты, кстати...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: Популярность boost и STL
От: dip_2000 Россия  
Дата: 25.10.07 04:14
Оценка:
Здравствуйте, Erop, Вы писали:

_>>Если говорить о фирме... то тут все как во многих местах — stl используется, но недолюбливается, исключения используются, тк нужно "идти в ногу со временем", но при этом не используется RAII Как это можно совмещать не понятно. Люди при этом уверены, что утечек не будет.


E>Ну программы-то работают?

Если это единственный критерий, при оценки работы программиста — тогда Вы очень верно поставили минус! Хотя я слышал еще про трудности при сопровождении такого кода, а уж трудности при расширении и повторном использовании с идиомами, отличными от "удобный С" и вспоминать не хочется...

E>Да и вообще как-то ты неуважительно о своих коллегах.

Ну я бы так не сказал, что где то в тех словах было неуважение. Сомнение в качестве работы — да, неуважение... ну да ладно... офтопик это.

E>Возможно более опытных, чем ты, кстати...

Такие вещи нужно или развивать, или это как минус без комментариев Реакция была, а причины ее непонятны

Ладно, дальше развивать не интересно(лично мне), тк это явный оффтоп. Но Ваша позиция, мне не совсем понятна(очевидно из-за неопытности ).
Re[6]: Популярность boost и STL
От: Lorenzo_LAMAS  
Дата: 25.10.07 07:34
Оценка:
J>К нам вот приезжал Саттер, целую неделю по 8 часов читал лекции по своим книгам + немножко Майерса — так
Серьезно? А к вам — это куда? И сколько он бабла срубил?
Of course, the code must be complete enough to compile and link.
Re[2]: Популярность boost и STL
От: COFF  
Дата: 25.10.07 10:11
Оценка:
COF>Сам я сейчас STL не использую, так как в проекте используются другие строки и контейнеры, а решать одни и те же задачи двумя разными способами одновременно по моему не очень хорошо.

Хотя вру, использую std::sort
Re[4]: Популярность boost и STL
От: Erop Россия  
Дата: 25.10.07 11:46
Оценка:
Здравствуйте, dip_2000, Вы писали:

_>>>Если говорить о фирме... то тут все как во многих местах — stl используется, но недолюбливается, исключения используются, тк нужно "идти в ногу со временем", но при этом не используется RAII Как это можно совмещать не понятно. Люди при этом уверены, что утечек не будет.

E>>Ну программы-то работают?
_>Если это единственный критерий, при оценки работы программиста — тогда Вы очень верно поставили минус! Хотя я слышал еще про трудности при сопровождении такого кода, а уж трудности при расширении и повторном использовании с идиомами, отличными от "удобный С" и вспоминать не хочется...
Ну вот выделенная фраза, позволяет мне предположить, что проект старый уже довольно... Так что скорее всего и с поддержкой они как-то справляются. И версии программ, тоже скорее всего непервые, и если они работают, то таки значит и с развитием и модификацией справляются...

E>>Да и вообще как-то ты неуважительно о своих коллегах.

_>Ну я бы так не сказал, что где то в тех словах было неуважение. Сомнение в качестве работы — да, неуважение... ну да ладно... офтопик это.
ИМХО вся вторая половина сообщения окрашена негативными эмоциями, а процитированный мной абзац вообще содержит прямые намёки на глупость коллег...
При этом автор поста буст ещё только изучает, стиль кодирования, принятый на фирме, соблюдать не может (это как же надо так уметь программировать, чтобы не смочь обойтись без boost::bind, если он запрещён?, А как это будет потом поддерживаться другими людьми? А как переноситься?)
В общем вот с этим вот всем я и не согласен...

E>>Возможно более опытных, чем ты, кстати...

_> Такие вещи нужно или развивать, или это как минус без комментариев Реакция была, а причины ее непонятны
ИМХО это никому не интересно. Вот даже тебе, например, не интересно
А минус -- это всего лишь "я не согласем с мнением, высказанном в твоём/Вашем сообщении либо с формой, в которой это мнение было высказано"
Я не согласем. С чем -- очевидно. С формой и с содержательной частью мнения тоже...

_>Ладно, дальше развивать не интересно(лично мне), тк это явный оффтоп. Но Ваша позиция, мне не совсем понятна(очевидно из-за неопытности ).

Тебе виднее из-за чего. Мне кажется, что у меня очень простая позиция...
Я на всякий случай, напишу для тебя более корректную, по моему мнению версию того абзаца из сообщения

У нас на фирме STL используется, но не на полную катушку. Слишком сложных конструкций всё-таки стараются избегать. Boost я пока что знаю плохо, зотя и пыьаюсь изучать. Правда этому мешает то, что у нас на фирме он запрещён к использованию. Используются, так же, и исключения, хотя известная мне версия RAII не используется. Я пока не понял как при таких условиях можно писать надёжные программы. Ну у более опытных коллег это пока получается. Буду бороться за модернизацию применяемых у нас на фирме средств разработки


Как-то так, примерно...

Кстати, открой тайну, что оборзначает "RAII не используется"? Это значит, что нет умных указателей, или что нет аналога AFX::CFile / std::fstream или что?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: Извини, если высказался непонятно
От: Erop Россия  
Дата: 25.10.07 11:49
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

E>>Ну программы-то работают?


OE>это кстати вообще не может рассматриваться как критерий оценки качества ПО или квалификации программиста — если программа не работает, говорить просто не о чем, по факту нет программиста и нет программы как таковой.


Я имел в виду "программа, как коммерческий продукт"...
ИМХО, при коммерческом программировании это вообще единственный критерий оценки процесса разработки. ПО должно выполнять возложенные на него задачи, то есть "работать".
В случае коробочного софта, это обычно обозначает: выполнять нужную функциональность, быть поддерживаемым, развиваемым, и, в послдеднее время, ещё и легко переносимым на другие платформы...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[10]: Действительно с пониманием итераторов не всё просто.
От: Erop Россия  
Дата: 25.10.07 12:03
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>будет как раз неправильным ответом

На самом деле тут есть некоторый контекст. НАсколько меня не подводит склероз, Роман считает, что вопрос про разворачивание строк надо задавать на собеседовании. И если дадут ответ не на STL, то вообще ругаться-ругаться. А если вспомнят про std::reverse, то чморрить кандидата, за то, что он понаписал тут O(n), вместо O(1)...
Правда, если бы мне предложли решение от Романа, я бы спросил: "Ну а развёрнутая строка-то где?"
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[6]: Извини, если высказался непонятно
От: Erop Россия  
Дата: 25.10.07 12:08
Оценка:
Здравствуйте, eao197, Вы писали:

E>Причем, если продукт не коробочный, а заказной, то он может быть даже поважнее такого критерия, как качество


Я не согласен, что "к сожалению", так как я рассматриваю программирование, как позитивную в целом, созидательную деятельность, направленную на решение каких-то проблем каких-то людей

Но безусловно есть огромный пласт ПО, которое нужно "быстро", а "медленно" не нужно просто, ни при каком уровне качества...
AFAIK для решения таких проблем нужен бэйсик, или нет, или жаба, но никак не STL, кстати. Но и в этом случае критерием качества останется то, что процесс разработки ставит поставленную задачу. Разрабатывает нужную программу в приемлемый срок и не слишком задорого...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[5]: Популярность boost и STL
От: dip_2000 Россия  
Дата: 25.10.07 12:10
Оценка:
Здравствуйте, Erop, Вы писали:

Много поскипано. Спасибо за Ваш ответ, но дискуссия на эту тему, как я писал выше, мне не интересна. с++ интереснее

_>>Ладно, дальше развивать не интересно(лично мне), тк это явный оффтоп. Но Ваша позиция, мне не совсем понятна(очевидно из-за неопытности ).

E>Тебе виднее из-за чего. Мне кажется, что у меня очень простая позиция...
E>Я на всякий случай, напишу для тебя более корректную, по моему мнению версию того абзаца из сообщения
E>

У нас на фирме STL используется, но не на полную катушку. Слишком сложных конструкций всё-таки стараются избегать. Boost я пока что знаю плохо, зотя и пыьаюсь изучать. Правда этому мешает то, что у нас на фирме он запрещён к использованию. Используются, так же, и исключения, хотя известная мне версия RAII не используется. Я пока не понял как при таких условиях можно писать надёжные программы. Ну у более опытных коллег это пока получается. Буду бороться за модернизацию применяемых у нас на фирме средств разработки


Ну может я и ошибаюсь, но уверен, такой опытный человек как Вы, прекрасно понимает о чем идет речь Вот и наши коллеги ниже Вам написали, о чем идет речь. И я выше написал. Речь о том, что если один человек — это "человек проект", то я не сомневаюсь, что можно не используя auto/shared/weak ptr's и используя исключения, написать проект который успешно работает, и в нем да же нет утечек Я уверен опытный гуру, на это вполне способен. Только как только разработчиков становится несколько, и/или уходит этот разработчик, а приходит другой(ие) — то тут не получить утечку в таких условиях становится затруднительно. можно, конечно но это требует дополнительных усилий. Вы, вероятно скажете что нужны кодинг стандартс. Но из вышенаписанного легко сделать вывод, что они у нас не запрещают использование исключений(более того рекомендуют, и думаю правильно делают Но при этом, использовать RAII не только не обязывают, но да же не рекомендуют. Про него там ни слова.

E>Кстати, открой тайну, что оборзначает "RAII не используется"? Это значит, что нет умных указателей, или что нет аналога AFX::CFile / std::fstream или что?

Совершенно верно. это не запрещено, но рекомендаций использовать это- нигде нет. std::auto_ptr де факто нигде почти не используется, std:: потоки тоже. запись чтение их/в файлы производится с помощью CRT/ и/или API. никаких RAII оберток вокруг этого не делается. Надеюсь тайна открылась
Re[5]: Извини, если высказался непонятно
От: dip_2000 Россия  
Дата: 25.10.07 12:12
Оценка:
Здравствуйте, Erop, Вы писали:

E>Я имел в виду "программа, как коммерческий продукт"...

E>ИМХО, при коммерческом программировании это вообще единственный критерий оценки процесса разработки. ПО должно выполнять возложенные на него задачи, то есть "работать".
E>В случае коробочного софта, это обычно обозначает: выполнять нужную функциональность, быть поддерживаемым, развиваемым, и, в послдеднее время, ещё и легко переносимым на другие платформы...

А как на счет поддержки ? или труд программистов выполняющих поддержку/доработку системы уже бесплатен? Ведь эти операции зачастую выполняются не "гуру разработчиками", а людьми новыми в проекте. но то же получающими зарплату
Re[6]: Извини, если высказался непонятно
От: Erop Россия  
Дата: 25.10.07 12:24
Оценка:
Здравствуйте, dip_2000, Вы писали:

E>>В случае коробочного софта, это обычно обозначает: выполнять нужную функциональность, быть поддерживаемым, развиваемым, и, в послдеднее время, ещё и легко переносимым на другие платформы...


_>А как на счет поддержки ? или труд программистов выполняющих поддержку/доработку системы уже бесплатен? Ведь эти операции зачастую выполняются не "гуру разработчиками", а людьми новыми в проекте. но то же получающими зарплату


Было бы неплохо перед формулировкой ответа читать сообщения оппонента, хотя бы непосредственно то, на которое ты отвечешь...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: Популярность boost и STL
От: Аноним  
Дата: 25.10.07 13:06
Оценка:
Здравствуйте, rg_software, Вы писали:

_>Очень интересно мнение форумчан, насколько широко люди, программирующие на С++, используют boost & STL? Речь идет о самом широком срезе -- студенты, программисты, хобби-девелоперы...


голосование устрой, ответов и пользы больше
Re[9]: Популярность boost и STL
От: Roman Odaisky Украина  
Дата: 25.10.07 13:19
Оценка:
Здравствуйте, Centaur, Вы писали:

_>>Кстати, почему так строку не развернуть? :) В инете этот вариант часто предлагают.


C>Так строку не развернуть, но по причинам, не имеющим почти никакого отношения к C++.


C>Проблема будет при попытке развернуть строку, содержащую многобайтный символ (который при этом вывернется наизнанку и станет невалидным). Или строку Unicode, содержащую суррогатные пары (которые тоже вывернутся наизнанку) или nonspacing диакритику в decomposed форме (которая уйдёт на соседнюю букву).


Кстати, да. Но такой проблемы не будет, если итераторы сделать правильно. Как-то так:
OctetStream utf8string;
Utf8Iterator const first = begin<Utf8>(utf8string);
Utf8Iterator const last = end<Utf8>(utf8string);

doSomething(first, last);
doSomething(std::reverse_iterator<Utf8Iterator>(last), std::reverse_iterator<Utf8Iterator>(first));
До последнего не верил в пирамиду Лебедева.
Re[13]: таки не всё просто, однозначно :)
От: Roman Odaisky Украина  
Дата: 25.10.07 16:24
Оценка:
Здравствуйте, Erop, Вы писали:

RO>>Так Джоэл считает. У него, впрочем, контекст тот, что собеседуемый должен сам осилить указательную/итераторную арифметику.

E>Ну я так понял, что ты разделяешь его точку зрения? :)

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

RO>>P. S....Я потом понял, что reverse("a(bc)d") != "d(cb)a", а равняется оно "d)cb(a". Поэтому при отладке, когда я сразу вводил строку задом наперед (...), работало, а когда я заменил begin/end на rbegin/rend, перестало. Не то, чтобы мне помогла std::reverse — для этой задачи было всё равно — это скорее свойство человеческого мышения такое, человек не компьютер.


E>Я согласен что свойство. И у него есть такое вот банальное следствие: "чем более абстрактен код, тем сложнее его писать корректно и тем труднее его отлаживать и тестировать"...

E>ИМХО твой пример с заменой итератора это ярко демонстрирует...
E>Мало того, если бы ты "отступил на один шаг" в абстрактности своего кода и не заменяд бы итераторы в отлаженном коде, а написал бы по простому std::revarse, то ты бы просто и незатейлево увидел в отладчике что происходит. И скорее всего бы отладился...

Есть такая проблема, но это уже проблема IDE. С тем же успехом IDE не покажет значение выражения «a + b», если оператор переопределен. Или ты о другом?

E>При этом всём мне кажется, что ты довольно таки квалифицированный инженер, во всяком случае "выше среднего уровня", и то у тебя происходят проблемы из-за излишней абстрактности STL-way кода...


В данном случае не из-за этого.

Открою великую тайну — в настоящее время я выискиваю глюки в программах, написанных на позорном PHP, а не пишу мегамногопоточные серверы реального времени на C++… :-( ;-)

E>Может хотя бы твой собственный пример тебя в чём-то убедит?


Минздрав предупреждает: злоупотребление STL и, особенно, Boost вредно для здоровья.
E>
p. s.

E>Да, не приведёшь задачку? Интересно просто...

http://www.topcoder.com/stat?c=problem_statement&amp;pm=6381&amp;rd=10881&amp;rm=265978&amp;cr=21981096

Посчитать количество блоков в строке, где блок — последовательность подряд идущих одинаковых букв. Букв всего две, A и B. Например, solve("(2,A(3,AB))") = solve("AABABABAABABAB") = 12.
До последнего не верил в пирамиду Лебедева.
Re[14]: таки не всё просто, однозначно :)
От: Erop Россия  
Дата: 25.10.07 21:18
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Есть такая проблема, но это уже проблема IDE. С тем же успехом IDE не покажет значение выражения «a + b», если оператор переопределен. Или ты о другом?


Я о том, что если бы ты использовал std::reverse, то скорее всего бы отладился, а так не отладился... Прямым тектстом вроде написал

RO>Минздрав предупреждает: злоупотребление STL и, особенно, Boost вредно для здоровья.

Угу. С этим я совершенно согласен
E>>
p. s.

RO>http://www.topcoder.com/stat?c=problem_statement&amp;pm=6381&amp;rd=10881&amp;rm=265978&amp;cr=21981096

RO>Посчитать количество блоков в строке, где блок — последовательность подряд идущих одинаковых букв. Букв всего две, A и B. Например, solve("(2,A(3,AB))") = solve("AABABABAABABAB") = 12.


Прикольно А зачем понадобилось разворачивать?
Кроме того, я так понимаю, что круто это решать не разжимая строку. Типа научиться считать по подстроке сколько там блоков и что на концах, потом два таких можно складывать, ну и так далее, не забыть частный случай, когда блок один, ну и так далее...

Типа
struct SubstringDesc {
    char First;
    char Last;
    int BlockCounnt;

    SubstringDesc& operator+=( const SubstringDesc& other )
    {
        BlockCount += other.BlockCount;
        if( Last == other.First )
            BlockCount--;
        Last = other.Last;
        return *this;
    }

    SubstringDesc& operator *= ( int factor )
    {
        assert( BlockCount > 0 && factor > 0 );
        int correction = Last == First ? factor - 1 : 0;
        BlockCount = BlockCount * factor - correction;
        return *this;
    }
};


Ну и теперь разбираем запакованное представление строки и накапливаем себе постепенно результат... И где тут должен появиться обратный итератор?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[10]: Популярность boost и STL
От: Centaur Россия  
Дата: 29.10.07 10:12
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

C>>Проблема будет при попытке развернуть строку, содержащую многобайтный символ (который при этом вывернется наизнанку и станет невалидным). Или строку Unicode, содержащую суррогатные пары (которые тоже вывернутся наизнанку) или nonspacing диакритику в decomposed форме (которая уйдёт на соседнюю букву).


RO>Кстати, да. Но такой проблемы не будет, если итераторы сделать правильно. Как-то так:

RO>
RO>OctetStream utf8string;
RO>Utf8Iterator const first = begin<Utf8>(utf8string);
RO>Utf8Iterator const last = end<Utf8>(utf8string);

RO>doSomething(first, last);
RO>doSomething(std::reverse_iterator<Utf8Iterator>(last), std::reverse_iterator<Utf8Iterator>(first));
RO>


Да. Вот только в этом коде некий гипотетический тип Utf8 должен быть опять-таки строчкой байт либо достаточно широким символьным типом. А если добавить ещё и обработку диакритики (и соответственно типы Grapheme и GraphemeIterator), то реализация станет сложной, а оптимизация — трудной. Ни о каком произвольном доступе к графемам за O(1), конечно, не стоит и мечтать — разве что индексировать строку при первом использовании…

Кстати, в свете юникода стоит отметить ещё одну проблему со строками вообще и со строками в C++ в частности. Строки иногда очень хочется сделать ключом map’а или ещё как-нибудь отсортировать. При этом нужен предикат порядка над строками. А он — surprise! — разный для разных человеческих языков и в общем случае не сводится к поэлементному сравнению (как это предполагает std::char_traits). Кто здесь когда последний раз инстанцировал std::map<std::wstring, T, std::locale>?
Re[11]: Популярность boost и STL
От: dip_2000 Россия  
Дата: 29.10.07 10:53
Оценка:
Здравствуйте, Centaur, Вы писали:


C>Кстати, в свете юникода стоит отметить ещё одну проблему со строками вообще и со строками в C++ в частности. Строки иногда очень хочется сделать ключом map’а или ещё как-нибудь отсортировать. При этом нужен предикат порядка над строками. А он — surprise! — разный для разных человеческих языков и в общем случае не сводится к поэлементному сравнению (как это предполагает std::char_traits). Кто здесь когда последний раз инстанцировал std::map<std::wstring, T, std::locale>?


Дайте пожалуйста ссылку, на ресурс где это можно прочесть интересует разный для разных человеческих языков и в общем случае не сводится к поэлементному сравнению
Re[8]: Извини, если высказался непонятно
От: Erop Россия  
Дата: 29.10.07 11:05
Оценка:
Здравствуйте, eao197, Вы писали:

E>У меня сложилось впечатление, что русская пословица "быстро только кошки родятся" очень верна и для программирования. Так что я сомневаюсь, что на любом языке и на любой технологии качественную программу можно написать быстро. Поскольку качество зависит не столько от языка/платформы, сколько от тчательности проектирования и тестирования.


Фишка в том, что часто нужно не качественно, а быстро. Рынок такого сорта софта довольно велик AFAIK...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[12]: Популярность boost и STL
От: CiViLiS Россия  
Дата: 29.10.07 19:43
Оценка:
Здравствуйте, dip_2000, Вы писали:

_>Дайте пожалуйста ссылку, на ресурс где это можно прочесть интересует разный для разных человеческих языков и в общем случае не сводится к поэлементному сравнению

unicode.org какой же еще может быть ресурс

А если точнее то "человеческую" сортировку делает Collation Algorithm.
... << RSDN@Home 1.2.0 alpha rev. 775>>
"Бог не терпит голой сингулярности" -- Роджер Пенроуз
Re[8]: Популярность boost и STL
От: Qbit86 Кипр
Дата: 29.10.07 22:55
Оценка:
Здравствуйте, rg_software, Вы писали:

_>Верно. Я, конечно, буст уважаю, но 74 библиотеки? Разве что несколько выбранных наугад.


Не надо выбирать наугад. Обязательно надо Boost.SmartPtr, Boost.Function, Boost.Bind.
Желательно также Boost.Any, Boost.Filesystem, Boost.Statechart, Boost.Regex, Boost.Iostreams.
Плюс всякие мелочи: boost::lexical_cast, boost::noncopyable.
Глаза у меня добрые, но рубашка — смирительная!
Re[11]: Популярность boost и STL
От: Cyberax Марс  
Дата: 30.10.07 01:09
Оценка:
Здравствуйте, Centaur, Вы писали:

C> А он — surprise! — разный для разных человеческих языков и в общем случае не сводится к поэлементному сравнению (как это предполагает std::char_traits). Кто здесь когда последний раз инстанцировал std::map<std::wstring, T, std::locale>?

Для std::map, вообще говоря, естественный язык не важен — там достаточно простого сравнения по кодам символов.

Вот для user-visible сортировок — это да. Но там вообще тааааааааакая "банка с червями".
Sapienti sat!
Re[10]: Действительно с пониманием итераторов не всё просто.
От: jazzer Россия Skype: enerjazzer
Дата: 30.10.07 02:26
Оценка:
Здравствуйте, andrey.desman, Вы писали:

AD>Круто! Я тоже хочу себе пятьдесят четыре довигинтиллиона триста восемь унвигинтиллионов четыреста двадцать восемь вигинтиллионов семьсот девяносто новемдециллионов двести три октодециллиона четыреста семьдесят восемь септендециллионов семьсот шестьдесят два сексдециллиона триста сорок квиндециллионов пятьдесят два кваттуордециллиона семьсот двадцать три тредециллиона триста сорок шесть дуодециллионов девятьсот восемьдесят три ундециллиона четыреста пятьдесят три дециллиона четыреста восемьдесят семь нониллионов двадцать три октиллиона четыреста восемьдесят девять септиллионов девятьсот восемьдесят семь секстиллионов двести тридцать один квинтиллион двести семьдесят пять квадриллионов четыреста двенадцать триллионов триста девяносто миллиардов восемьсот семьдесят два миллиона триста сорок восемь тысяч четыреста семьдесят пять байтов оперативы


Жаверам это скажи
Это у них на каждом шагу OutOfMemoryException
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[12]: Популярность boost и STL
От: dip_2000 Россия  
Дата: 30.10.07 05:49
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>> А он — surprise! — разный для разных человеческих языков и в общем случае не сводится к поэлементному сравнению (как это предполагает std::char_traits). Кто здесь когда последний раз инстанцировал std::map<std::wstring, T, std::locale>?

C>Для std::map, вообще говоря, естественный язык не важен — там достаточно простого сравнения по кодам символов.
Вобще, как я понял предыдущего оратора, он утверждает что "в общем случае не сводится к поэлементному сравнению ". Те прямо противоположное твоему утверждению.
Честно говоря первый раз такое слышу Пока читаю ссылки данные им.
Re[7]: Популярность boost и STL
От: night beast СССР  
Дата: 30.10.07 08:32
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Я бы рассказал про итераторы, всё равно большинство людей их до конца, похоже, не осилило. Например, почему std::reverse(str.begin(), str.end()) — неверный ответ на вопрос «как развернуть строку». По этому поводу есть две поучительные
Автор: Odi$$ey
Дата: 14.03.03
картинки
Автор: Roman Odaisky
Дата: 26.03.07
.


картинки конечно поучительные, однако не совсем верные.
дело в том, что по стандарту разрешено указавать на 1 элемент после последнего.
выход за диапазоны приводит к UB. ссылаться на элемент перед начальным -- UB.

поэтому в стандартной либе извращаются таким вот образом
template<typename _Iterator> class reverse_iterator
{
    protected:
      _Iterator current;

    public:

      iterator_type base() const { return current; }

      reference operator*() const {
    _Iterator __tmp = current;
    return *--__tmp;
      }
};
Re[12]: Популярность boost и STL
От: Erop Россия  
Дата: 30.10.07 09:42
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Погоди-погоди. Если я правильно помню, по стандарту в std::wchar_t должен влезать любой символ, который поддерживается реализацией, в том числе суррогатная пара целиком, если реализация заявляет о поддержки оных (я знаю, что у мелкософта это не так — это проблема мелкософта, это значит, что млекософтовский wchat_t на самом деле не поддерживает юникод, со всеми сопутствующими граблями). И вообще когда у тебя есть многобайтовая строка std::string(N), то при помощи codecvt ты можешь получить std::wstring(M), где M<=N, и ее ты уже можешь сравнивать поэлементно.


Не, ну если тебе надо чтобы было "стандартно", а не чтобы "работало", то таки да, ты прав.

Конечно Windows давнои хмуро нестандартна по многим направлениям. ИМХО это заслуга, как M$, так и держателей стандартов, потому что держатели нифига не мохают расширять свои стандарты и не думать о примественности. Но MS тут конечно намного больше старается на нестандартность. ИМХО это даже обсуждать смысла никакого.
Проблема в том, что Windows давно уже может наплевать на то, что она "нестандартна". Ей это не особо-то и надо...
Это нам всем надо, чтобы под Windows тоже работало
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[9]: А Boost.Any зачем? (-)
От: Erop Россия  
Дата: 30.10.07 09:44
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Желательно также Boost.Any, Boost.Filesystem, Boost.Statechart, Boost.Regex, Boost.Iostreams.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[10]: А Boost.Any зачем? (-)
От: Qbit86 Кипр
Дата: 30.10.07 12:07
Оценка:
>А Boost.Any зачем? (-)

А почему нет? Чем вам Boost.Any не угодил? Отличная маленькая аккуратная библиотечка. boost::any отлично заменяет шарповский System.Object. Гораздо безопасее, чем void*. Удобнее, чем весь-из-себя-статический Boost.Variant.
Глаза у меня добрые, но рубашка — смирительная!
Re[14]: Популярность boost и STL
От: Erop Россия  
Дата: 30.10.07 12:45
Оценка:
Здравствуйте, jazzer, Вы писали:

E>>Это нам всем надо, чтобы под Windows тоже работало

J>Мне, например, не надо

Ну "нам" -- этоимелось в виду "сообществу программистов и их клиентам"
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[11]: А Boost.Any зачем? (-)
От: Erop Россия  
Дата: 30.10.07 12:46
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>А почему нет? Чем вам Boost.Any не угодил? Отличная маленькая аккуратная библиотечка. boost::any отлично заменяет шарповский System.Object. Гораздо безопасее, чем void*. Удобнее, чем весь-из-себя-статический Boost.Variant.


Ну нужда редкая довольно. Обычно если полиморфизм нужен, то он по честному по приплюснутому организуется...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[12]: А Boost.Any зачем? (-)
От: Qbit86 Кипр
Дата: 30.10.07 13:16
Оценка:
Здравствуйте, Erop, Вы писали:

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


Редкая, согласен. И насчёт «обычно по-честному организуется» тоже согласен. Просто обычно нужен не абстрактный абстрактный System.Object, а конкретный абстрактный SomeFunctionArgs  Но в некоторых случаях boost::any очень удобен.

В этот список «чего надо выучить» я внёс Boost.Any из-за того, что там учить нечего — 10 минут надо читать доки, ещё 10 минут потратить на изучение исходников (это полезно, реализация там прозрачная и внятная). И всё, можно использовать.
Глаза у меня добрые, но рубашка — смирительная!
Re[13]: А Boost.Any зачем? (-)
От: Erop Россия  
Дата: 30.10.07 13:43
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>В этот список «чего надо выучить» я внёс Boost.Any из-за того, что там учить нечего — 10 минут надо читать доки, ещё 10 минут потратить на изучение исходников (это полезно, реализация там прозрачная и внятная). И всё, можно использовать.



ИМХО вред от Boost.Any не в том, что его долго изучать, а в том, что в нормальной программе его не должно быть нужно. ИМХО обычно лучше подумать как выпрямить архитектуру, а не как привинтить ещё какую-нибудь фичу из буста...
Короче это только очень продвинутым людям нужно изучать, а не тем, кто про умные указатели не в курсе
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[14]: А Boost.Any зачем? (-)
От: Qbit86 Кипр
Дата: 30.10.07 14:09
Оценка:
Здравствуйте, Erop, Вы писали:

E>ИМХО вред от Boost.Any не в том, что его долго изучать, а в том, что в нормальной программе его не должно быть нужно.


Он может быть даже в «нормальной» программе. Например, если вы читаете данные из файла. Я видел реализацию аналогичного класса Value в библиотеке Exiv2. Лучше бы авторы взяли boost::any, ей богу. Удобно также использовать streamable any.

E>Короче это только очень продвинутым людям нужно изучать, а не тем, кто про умные указатели не в курсе


Это да, вначале умные указатели, остальное потом. Я ещё Boost.Tuples забыл, его тоже можно включить в список «желательно» (не «обязательно»).

Итоговое имхо насчёт сабжа всей ветки: начинающим в Boost'е надо выучить ровно три библиотеки. В этом ничего сложного нет, освоить их можно за три дня (чтение доков, написание sandbox'ов и helloworld'ов). Об остальных библиотеках прочитать в общих чертах (ещё полчаса) и подучивать по мере необходимости (не раньше .
Глаза у меня добрые, но рубашка — смирительная!
Re[15]: Популярность boost и STL
От: jazzer Россия Skype: enerjazzer
Дата: 30.10.07 14:52
Оценка:
Здравствуйте, Erop, Вы писали:

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


E>>>Это нам всем надо, чтобы под Windows тоже работало

J>>Мне, например, не надо

E>Ну "нам" -- этоимелось в виду "сообществу программистов и их клиентам"


А-а-а... Ну моим клиентам пофиг, на чем сервер написан и на какой оси он крутится
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[8]: Популярность boost и STL
От: Roman Odaisky Украина  
Дата: 30.10.07 18:01
Оценка:
Здравствуйте, night beast, Вы писали:

RO>>Я бы рассказал про итераторы, всё равно большинство людей их до конца, похоже, не осилило. Например, почему std::reverse(str.begin(), str.end()) — неверный ответ на вопрос «как развернуть строку». По этому поводу есть две поучительные
Автор: Odi$$ey
Дата: 14.03.03
картинки
Автор: Roman Odaisky
Дата: 26.03.07
.


NB>картинки конечно поучительные, однако не совсем верные.

NB>дело в том, что по стандарту разрешено указавать на 1 элемент после последнего.

Я знаю. Вроде Одиссей всё правильно нарисовал. Там стрелочки указывают на то, на что укажет &*, а черточки, с которых стрелочки начинаются, — на сам итератор (или base() для reverse_iterator).
До последнего не верил в пирамиду Лебедева.
Re[9]: Популярность boost и STL
От: night beast СССР  
Дата: 31.10.07 05:44
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Я знаю. Вроде Одиссей всё правильно нарисовал. Там стрелочки указывают на то, на что укажет &*, а черточки, с которых стрелочки начинаются, — на сам итератор (или base() для reverse_iterator).


внутренний голос говорит, что такие пляски с указателями не совсем хорошо скажутся на производительности.
может вариант с std::reverse окажется получше... тестить надо.
Re[2]: skeptik_! А ты с чем не согласен? :) Boost не надо? (
От: Erop Россия  
Дата: 28.12.07 17:53
Оценка:
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: Популярность boost и STL
От: Sni4ok  
Дата: 28.12.07 20:30
Оценка:
Здравствуйте, rg_software, Вы писали:

_>Очень интересно мнение форумчан, насколько широко люди, программирующие на С++, используют boost & STL? Речь идет о самом широком срезе -- студенты, программисты, хобби-девелоперы...



есть мнение, что человек не знающий boost, а тем более stl- с++ не знает.
исключения конечно придумать можно.. но правило 80-20 тут применимо- стопудова.
Re[14]: А Boost.Any зачем? (-)
От: -MyXa- Россия  
Дата: 29.12.07 00:20
Оценка:
Здравствуйте, Erop, Вы писали:

E>ИМХО вред от Boost.Any не в том, что его долго изучать, а в том, что в нормальной программе его не должно быть нужно. ИМХО обычно лучше подумать как выпрямить архитектуру, а не как привинтить ещё какую-нибудь фичу из буста...


Про ахринектуру не согласен. Boost::any не обязательно выпячивать. Вот, для примера, в AOP, который этот, дык там any не жужжит, т.е. не виден пользователю и архитектура цела.
Если не поможет, будем действовать током... 600 Вольт (C)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.