Вот кто нить может сказать что он очень интенсивно использует STL под виндами? Да, не спорю библиотека не плоха, но все же ее идею отчасти устарели. Ну например взять тот же стринг, его использование под виндовсом настолько затруднительно, что я думаю его вообще мало кто использует. Идем дальше, на кой чер там вообще аллокаторы, причем они есть почти в каждом классе. Опять пережиток прошлого(или я всетаки заблуждаюсь в отношении оных). А вот класс auto_ptr вообще загадочная вещица, которую совсем лучше не трогать, обычно все берут бустовскую реализацию. И это все навскидку, думаю если подумать то много чего можно написать. Вот собственно и вопрос: зачем же нужна STL?
ЗЫ: Я конечно не спорю что контейнеры там ооочень даже неплохи, но STL это же не просто библиотека контейнеров.
Здравствуйте, Denwer, Вы писали:
D>Вот кто нить может сказать что он очень интенсивно использует STL под виндами? Да, не спорю библиотека не плоха, но все же ее идею отчасти устарели. Ну например взять тот же стринг, его использование под виндовсом настолько затруднительно, что я думаю его вообще мало кто использует. Идем дальше, на кой чер там вообще аллокаторы, причем они есть почти в каждом классе. Опять пережиток прошлого(или я всетаки заблуждаюсь в отношении оных). А вот класс auto_ptr вообще загадочная вещица, которую совсем лучше не трогать, обычно все берут бустовскую реализацию. И это все навскидку, думаю если подумать то много чего можно написать. Вот собственно и вопрос: зачем же нужна STL?
D>ЗЫ: Я конечно не спорю что контейнеры там ооочень даже неплохи, но STL это же не просто библиотека контейнеров.
Все написанное Вами — святая истина. Однако гораздо лучше иметь такую, чем никакой. А boost — это поле экспериментов, некоторые из которых со временем окажутся в стандартной библиотеке.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Denwer, Вы писали:
D>Вот кто нить может сказать что он очень интенсивно использует STL под виндами? Да, не спорю библиотека не плоха, но все же ее идею отчасти устарели. Ну например взять тот же стринг, его использование под виндовсом настолько затруднительно, что я думаю его вообще мало кто использует.
А что мешает использовать другие String-и например MFC?
D>Идем дальше, на кой чер там вообще аллокаторы, причем они есть почти в каждом классе. Опять пережиток прошлого(или я всетаки заблуждаюсь в отношении оных). А вот класс auto_ptr вообще загадочная вещица, которую совсем лучше не трогать, обычно все берут бустовскую реализацию. И это все навскидку, думаю если подумать то много чего можно написать.
Полностью согласен. Я например еще не видел для себя ситуации где auto_ptr был необходим.
Может быть я заблуждаюсь, конечно. Но тогда пусть меня знаюшие люди поправят. Он наверное для Java-программеров.
D>ЗЫ: Я конечно не спорю что контейнеры там ооочень даже неплохи, но STL это же не просто библиотека контейнеров.
Нет конечно, не только библиотека контейнеров, но даже если так, то оно того стоит.
Hедопитая бутылка подобна высшему образованию — когда-нибудь потом обязательно пригодится. ICQ#7981430
Здравствуйте, Zinya, Вы писали:
Z>Здравствуйте, Denwer, Вы писали:
D>>Вот кто нить может сказать что он очень интенсивно использует STL под виндами? Да, не спорю библиотека не плоха, но все же ее идею отчасти устарели. Ну например взять тот же стринг, его использование под виндовсом настолько затруднительно, что я думаю его вообще мало кто использует.
Z>А что мешает использовать другие String-и например MFC?
Ага, и идеей переносимости кода под другую ОС можно подтереться. И к тому же можно еще добавить: А что мешает использовать контейнеры от ATL например, я имею в виду с 7 студией. Они очень даже не плохи. К тому же очень вписываются в технолигию СОМ, там даже есть контейнер интерфейсов.
D>>Идем дальше, на кой чер там вообще аллокаторы, причем они есть почти в каждом классе. Опять пережиток прошлого(или я всетаки заблуждаюсь в отношении оных). А вот класс auto_ptr вообще загадочная вещица, которую совсем лучше не трогать, обычно все берут бустовскую реализацию. И это все навскидку, думаю если подумать то много чего можно написать.
Z>Полностью согласен. Я например еще не видел для себя ситуации где auto_ptr был необходим. Z>Может быть я заблуждаюсь, конечно. Но тогда пусть меня знаюшие люди поправят. Он наверное для Java-программеров.
D>>ЗЫ: Я конечно не спорю что контейнеры там ооочень даже неплохи, но STL это же не просто библиотека контейнеров.
Z>Нет конечно, не только библиотека контейнеров, но даже если так, то оно того стоит.
Но действительных плюсов я признаться не вижу.
ЗЫ: Я бы был вооще против включения STL в стандарт. Это разумеется не означает вообще отсутствие этой библиотеки. Этоже было нужно только для написания переносимых программ, но программы это же не набор контейнеров, а как насчет ГУЙя? Он то занимает не малую часть.
Здравствуйте, VBez, Вы писали:
Z>>А что мешает использовать другие String-и например MFC?
VB>Программирование под Виндовс != программирование с использованием MFC.
Я имел ввиду std::string против CString и CAtlString.
Hедопитая бутылка подобна высшему образованию — когда-нибудь потом обязательно пригодится. ICQ#7981430
Здравствуйте, Denwer, Вы писали:
Z>>А что мешает использовать другие String-и например MFC?
D>Ага, и идеей переносимости кода под другую ОС можно подтереться. И к тому же можно еще добавить: А что мешает использовать контейнеры от ATL например, я имею в виду с 7 студией. Они очень даже не плохи. К тому же очень вписываются в технолигию СОМ, там даже есть контейнер интерфейсов.
Ну речь ведь шла про Win.
D>>>ЗЫ: Я конечно не спорю что контейнеры там ооочень даже неплохи, но STL это же не просто библиотека контейнеров.
Z>>Нет конечно, не только библиотека контейнеров, но даже если так, то оно того стоит. D>Но действительных плюсов я признаться не вижу.
D>ЗЫ: Я бы был вооще против включения STL в стандарт. Это разумеется не означает вообще отсутствие этой библиотеки. Этоже было нужно только для написания переносимых программ, но программы это же не набор контейнеров, а как насчет ГУЙя? Он то занимает не малую часть.
Тогда надо определиться, что вообще ты хочешь видеть в этой библиотеке?
Хочешь сделать из нее монстра аля MFC?
Hедопитая бутылка подобна высшему образованию — когда-нибудь потом обязательно пригодится. ICQ#7981430
что то в последнее время очень часто стал замечать такие революционные вопросы, но все же высказать свое мнение по этому поводу считаю нужным.
Думаю, что столь броское предложение всего лишь очередной крик душы, потому что попытаюсь, возможно и неправильно, но все же высказать свое мнение по поводу шаблонов.
ИМХО:
Шаблоны — это реализация какого либо полностью абстрактного алгоритма с вынесенными from something dependent parameters.
Идем дальше, на кой чер там вообще аллокаторы, причем они есть почти в каждом классе. Опять пережиток прошлого(или я всетаки заблуждаюсь в отношении оных).
Аллокаторы — распределители памяти под хранение внутренних user dependent types при инстанцировании.
Отсюда возникает мое предположение — какая разница под чем их использовать и что значит зачем аллокаторы, когда стандартным образом это делает при помощи оператора new, а я хочу свои внутренние типы хранить не в сырой памяти, а скажем в каком нибудь значительно более эффективном распределителе.
Вот кто нить может сказать что он очень интенсивно использует STL под виндами?
Часто пишут platform independent programs? или скажем более правильно — абстрактные алгоритмы.
Да, не спорю библиотека не плоха, но все же ее идею отчасти устарели.
Для этого и существуют альтернативные библиотеки, которые как уже говорилось и есть поле испытательной деятельности.
Ну например взять тот же стринг, его использование под виндовсом настолько затруднительно, что я думаю его вообще мало кто использует.
насколько? это char реализация шаблона basic_string. использовал, но мне так трудно не было. Главное представлять с какими типами ты работаешь и что имеешь на выходе.
А вот класс auto_ptr вообще загадочная вещица, которую совсем лучше не трогать, обычно все берут бустовскую реализацию.
в чем загадочная? в деструкторе? это уже давно не загадка и кто мешает использовать одиночные типы под auto_ptr. насчет бустовской согласен, но ведь создавался он не на пустом месте и кто знает где бы он был, если бы не на лицо были скрытые недочеты auto_ptr.
И это все навскидку, думаю если подумать то много чего можно написать. Вот собственно и вопрос: зачем же нужна STL?
много чего можна уточнить в следующих версиях. Как стандартная библиотека базовых алгоритмов.
ЗЫ: Я конечно не спорю что контейнеры там ооочень даже неплохи, но STL это же не просто библиотека контейнеров.
Возможно я был также радикален как и ты, но тогда зачем нужен плюрализм мнений.
Возможно был и не точен в некоторых вопросах, сорри. Волшебников мало, но стремится никто не мешает.
Было тут как-то голосование (вернее опрос) на эту тему.
Из тех кто проголосовал, очень многие используют STL в реальных проектах.
Я не исключение.
Если хочешь, поройся в архивах голосований. Может оно еще не удалено.
Если ты конкртено обходишься без STL и живешь без него прекрасно,
то нет никаких проблем. Использовать или не использовать STL или еще какую
библиотеку — это сугубо практический вопрос и на философию не очень тянет.
Основное преимущество STL, кроме того, что она удобна, — это ее стандартность
и хорошая документированность.
Здравствуйте, Alexmoon, Вы писали:
A>Здравствуйте, Denwer, Вы писали:
A>что то в последнее время очень часто стал замечать такие революционные вопросы, но все же высказать свое мнение по этому поводу считаю нужным. A>Думаю, что столь броское предложение всего лишь очередной крик душы, потому что попытаюсь, возможно и неправильно, но все же высказать свое мнение по поводу шаблонов.
A>ИМХО:
A>Шаблоны — это реализация какого либо полностью абстрактного алгоритма с вынесенными from something dependent parameters.
А я разве сказал что то про шаблоны? Разумеется шаблоны это если так можно сказать революционный прыжок С++, я бы даже сказал более "высокий" чем технология NET(это ИМХО).
A>
Идем дальше, на кой чер там вообще аллокаторы, причем они есть почти в каждом классе. Опять пережиток прошлого(или я всетаки заблуждаюсь в отношении оных).
A>Аллокаторы — распределители памяти под хранение внутренних user dependent types при инстанцировании.
А мне казалось(да и не только мне, Маерсу тоже) что аллокаторы нужны только при far & near указателях, которые канули в небытие.
A>Отсюда возникает мое предположение — какая разница под чем их использовать и что значит зачем аллокаторы, когда стандартным образом это делает при помощи оператора new, а я хочу свои внутренние типы хранить не в сырой памяти, а скажем в каком нибудь значительно более эффективном распределителе.
A>
Вот кто нить может сказать что он очень интенсивно использует STL под виндами?
A>Часто пишут platform independent programs? или скажем более правильно — абстрактные алгоритмы.
Согласен когда пишешь алгоритмы, то тут спора нет. Только вот это оочень маленькая доля ПО, в основном же пишутся готовые программы, которые еще как правило имеют ГУЙ. И какая тут platform independent?
A>
Да, не спорю библиотека не плоха, но все же ее идею отчасти устарели.
A>Для этого и существуют альтернативные библиотеки, которые как уже говорилось и есть поле испытательной деятельности.
A>
Ну например взять тот же стринг, его использование под виндовсом настолько затруднительно, что я думаю его вообще мало кто использует.
A>насколько? это char реализация шаблона basic_string. использовал, но мне так трудно не было. Главное представлять с какими типами ты работаешь и что имеешь на выходе.
Ты просто не писал проги которые нет так зависили от ОС. Например при написании мульлангуге прог, стринги засовывают в ресурсы. И как же мне потом сними работать через класс string? Т.е. какой кровью мне обойдуться потери. Ну конечно строки можно засунуть и в текстовый файл, но это же через заднее место, но тогда можно и STL применить.
A>
А вот класс auto_ptr вообще загадочная вещица, которую совсем лучше не трогать, обычно все берут бустовскую реализацию.
A>в чем загадочная? в деструкторе? это уже давно не загадка и кто мешает использовать одиночные типы под auto_ptr. насчет бустовской согласен, но ведь создавался он не на пустом месте и кто знает где бы он был, если бы не на лицо были скрытые недочеты auto_ptr.
А в том что самый главный недостаток, в том что нельзя использовать в контейнерах?
A>
И это все навскидку, думаю если подумать то много чего можно написать. Вот собственно и вопрос: зачем же нужна STL?
A>много чего можна уточнить в следующих версиях. Как стандартная библиотека базовых алгоритмов.
Каждый раз уточняя, опять получиться монстр. Поэтому все же нечего ее было пихать в стандарт(ИМХО).
A>
ЗЫ: Я конечно не спорю что контейнеры там ооочень даже неплохи, но STL это же не просто библиотека контейнеров.
A>Возможно я был также радикален как и ты, но тогда зачем нужен плюрализм мнений.
Как раз тема для данного топика A>Возможно был и не точен в некоторых вопросах, сорри. Волшебников мало, но стремится никто не мешает.
У нас программа и с GUI и с кучей языков и STL нисколько не мешает.
При этом основная часть системы (кроме GUI) прекрасно переноситься на другие платформы.
Те проблемы, которые ты описал — это скорее проблемы проектирования системы в целом
и STL тут ни причем. Используешь ты STL или нет, все равно полезно
явно отделять GUI от логики и все платформенно зависимые части выносить в отдельные
модули, которые имеют платформенно независимый интерфейсы.
А мне казалось(да и не только мне, Маерсу тоже) что аллокаторы нужны только при far & near указателях, которые канули в небытие.
С удовольствием возьму Мейерса и еще раз уточню для себя этот вопрос. Не спорю. Могу и не очень хорошо помнить.
Согласен когда пишешь алгоритмы, то тут спора нет. Только вот это оочень маленькая доля ПО, в основном же пишутся готовые программы, которые еще как правило имеют ГУЙ. И какая тут platform independent?
А где ты встречал GUI platform independent или как ты себе это представляешь? Вот это в стандартных библиотеках точно не стоит абстрагировать, потому что монстр вот он.
А в том что самый главный недостаток, в том что нельзя использовать в контейнерах?
не буду пока спорить. Сейчас еще раз пересмотрю инфу и сходники и подумаю почему.
Каждый раз уточняя, опять получиться монстр. Поэтому все же нечего ее было пихать в стандарт(ИМХО).
есть чего. уточнять алгоритм и исправлять недочеты, это не монстр а "работа над собой"
у меня тут тоже возник вопросик
если ты решил, что STL не нужна, то пытаюсь предположить, что у тебя есть предложения по поводу замены. Чего предлагаешь?
Если предложений нет, то по моему вопрос неактуален, ПО МОЕМУ.
Здравствуйте, Denwer, Вы писали:
D>Вот кто нить может сказать что он очень интенсивно использует STL под виндами? Да, не спорю библиотека не плоха, но все же ее идею отчасти устарели. Ну например взять тот же стринг, его использование под виндовсом настолько затруднительно, что я думаю его вообще мало кто использует. Идем дальше, на кой чер там вообще аллокаторы, причем они есть почти в каждом классе. Опять пережиток прошлого(или я всетаки заблуждаюсь в отношении оных). А вот класс auto_ptr вообще загадочная вещица, которую совсем лучше не трогать, обычно все берут бустовскую реализацию. И это все навскидку, думаю если подумать то много чего можно написать. Вот собственно и вопрос: зачем же нужна STL?
D>ЗЫ: Я конечно не спорю что контейнеры там ооочень даже неплохи, но STL это же не просто библиотека контейнеров.
Ну я использую, и что?
GUI на MFC, а вся бизнеслогика — на STL + Loki + boost + ATL.
Смесь, конечно, весёлая, но действенная.
Единственный напряг — это следить за конверсией TCHAR <-> wchar_t (прога собирается и с юникодом, и с мультибайтом).
Аллокаторы STL — это вещь в себе. Тут я не поспорю.
Вообще, аллокатор — это разновидность политики (policy).
См. Александреску и его Loki — там с аллокаторами более человечно обошлись. Да и другие политики в ассортименте представлены...
Нужно учесть, что STL начинался в эпоху слабых компиляторов, поэтому многие очевидные сейчас вещи там отсутствуют (просто не скомпилировались бы). Пример — boost::bind.
std::auto_ptr и boost::shared_ptr — разные сущности.
auto_ptr задуман для реализации техники "move constructor". Если знаешь его ограничения — то вполне можешь использовать.
Его основные роли:
* возвращать указатель на свежесозданный объект (если объект не схватили — то пристрелить)
* приватный член класса (требует специального конструктора копирования у класса-хозяина)
Здравствуйте, Denwer, Вы писали:
A>>Аллокаторы — распределители памяти под хранение внутренних user dependent types при инстанцировании.
D>А мне казалось(да и не только мне, Маерсу тоже) что аллокаторы нужны только при far & near указателях, которые канули в небытие.
--
Не совсем.
Например, при использовании STL в kernel-mode драйверах без своих аллокаторов трудно обойтись.
C уважением,
Геннадий Майко.
Re: Нужен ли нам STL ?
От:
Аноним
Дата:
29.01.04 12:25
Оценка:
Здравствуйте, Denwer, Вы писали:
D>Вот кто нить может сказать что он очень интенсивно использует STL под виндами? Да, не спорю библиотека не плоха, но все же ее идею отчасти устарели. Ну например взять тот же стринг, его использование под виндовсом настолько затруднительно, что я думаю его вообще мало кто использует.
Критикуешь? Предлагай!
Что вместо std::string? Тормозящий CString из монстрообразной MFC? Или сишный char*?
К тому же, приведи аналог с использованием CString:
D>Идем дальше, на кой чер там вообще аллокаторы, причем они есть почти в каждом классе. Опять пережиток прошлого(или я всетаки заблуждаюсь в отношении оных).
Во-первых, переопределять дефолтные аллокаторы тебя никто не заставляет. Устраивают --- используй.
Во-вторых, это дополнительная гибкость. Когда упрёшься в производительность стандартного аллокатора на базе operator new и будешь делать свой, то вот тут-то и увидишь всю красоту STL.
D>А вот класс auto_ptr вообще загадочная вещица, которую совсем лучше не трогать, обычно все берут бустовскую реализацию. И это все навскидку, думаю если подумать то много чего можно написать. Вот собственно и вопрос: зачем же нужна STL?
Чтобы не тратить время на изобретение велосипедов, а использовать кучу готовых, эффективных и хорошо увязанных между собой кубиков.
D>ЗЫ: Я конечно не спорю что контейнеры там ооочень даже неплохи, но STL это же не просто библиотека контейнеров.
Проблема STL — в излишней универсальности, что плохо сказывается на производительности. Хотя штука, конечно, удобная. А в большинстве случаев используется в некритичных по быстродействию участках.
Про аллокаторы. Я как-то писал класс для BSTR на базе STL. Взял base_string<wchar_t> и перегрузил аллокатор, в котором вместо new сделал SysAllocString. Это была самая компактная реализация класса bstr их тех, что я видел.
Хотя, если честно, хотелось бы иметь класс — что-то среднее между list и vector. Т.е. с динамикой list и с индексаций как в vector. И чтобы указатель объекта можно было получить по итератору:
void FillValue(int* val)
{
val=0;
}
...
for(list<int>::iterator i=mylist.begin();i!=mylist.end();i++)
FillValue(i); // Болт!!! это не скомпилится!
Здравствуйте, Denwer, Вы писали:
D>А вот класс auto_ptr вообще загадочная вещица, которую совсем лучше не трогать, обычно все берут бустовскую реализацию. Вот собственно и вопрос: зачем же нужна STL?
У нас используют собственную библиотеку (очередной велосипед изобрели блин ).
1. auto_ptr там ой как не хватает.
2. Многие классы хуже своих STL-аналогов.
3. Например, заменить список на массив представляется вообще невозможным --- настолько разные интерфейсы.
4. Чего стоит, что в классах массивов нет операторов присваивания, и конструктор копирования тоже изведут (забота о программисте ), никаких тебе swap и т.п.
5. Использовать STL в принципе нельзя --- они там с кучами нахимичили
6. Ассоциативные контеqнеры убогие, ими почти не пользуются. Некоторых вообще нет.
7. С потоками плохо, то что есть только под использование одним способом, хочешь по-другому, извини ...
8. Аналогов алгоритмов нет. Во многих подсистемах есть, например своя функция RemoveDuplicatesFromSortedArray (угадайте кто эффективней она или std::unique)
9. Сортировка медленнее std::sort. В списках сортировки нет. Более жёсткие требование на элементы массивов.
Вот только класс для Unicode-строк ещё ничего, да и тот небезопасен в многопоточном приложении.
Да и вообще тяжко жить без STL. Чувствуешь, что плывешь против течения...
(имеется в виду развитие C++,boost и т.д).
Здравствуйте, Mystic, Вы писали:
D>>Вот кто нить может сказать что он очень интенсивно использует STL под виндами? M>Пишу на Delphi Смертельных неудобств не возникает. Я вообще против использования препроцессора и шаблонов, но это совсем другая песня...
Это всё равно, что я бы сказал, я вообще против Lisp -- я им не пользуюсь. Вы в дельфи пишете, не имея ни того не другого, соответственно не видите их практической ценности.
Кстати, что у Вас там из контейнеров имеется -- убогий TList? хе — хе.. А из алгоритмов?
Здравствуйте, Аноним, Вы писали:
А>5. Использовать STL в принципе нельзя --- они там с кучами нахимичили
А написать собственный аллокатор, удовлетворяющий этой химии?
А>Вот только класс для Unicode-строк ещё ничего, да и тот небезопасен в многопоточном приложении.
Нам потребовался контейнер строки, который бы одномоментно работал с char, WCHAR и wchar_t (gcc считает его 4-байтным). Сделали по мотивам, сохранив совместимость с STL (т.е. там все нужные typedef'ы, члены и прочее были прописаны). Рулит. Ещё сверху профайлером попрыгали, оптимизировали для коротких строк. То, что не инлайнится — затолкали внутрь .cpp, чтобы сто раз не перекомпилировать.
Перекуём баги на фичи!
Re[2]: Нужен ли нам STL ?
От:
Аноним
Дата:
30.01.04 14:40
Оценка:
Я с Вами совершенно согласен, сам валандаюсь с похожим дерьмом. Есть там и "отменная" библиотека контейнеров, которая требует наследования от одного класса из корня иерархии, который обладает воистину чудовищным интерфейсом — около 300 виртуальных функций.
При этом, контейнер может владеть эл-тами, но выполняя Remove ты обязан вручную удалять — бред полнейший. А уж монстровские итераторы с кучей виртуальных функций! УЖАС.
Re[3]: Нужен ли нам STL ?
От:
Аноним
Дата:
30.01.04 14:52
Оценка:
Здравствуйте, Кодт, Вы писали:
К>А написать собственный аллокатор, удовлетворяющий этой химии?
Конечно можно, но STL у нас не используется вообще. Проект большой. Поэтому использование её не оправдано.
— многие просто не знакомы с STL => проблемы сопровождения такого рода кода
— написать аллокатор можно, но если им буду пользоваться только я, то неоправдана его поддержка (опять же это придётся делать мне). Библиотека может меняться.. Вряд ли остальные будут от этого в восторге.
— проблема стиля (лучше пусть будет один, какой есть, чем мешанина)
— все интерфейсы используют местную библиотеку....
А>>Вот только класс для Unicode-строк ещё ничего, да и тот небезопасен в многопоточном приложении.
К>Нам потребовался контейнер строки, который бы одномоментно работал с char, WCHAR и wchar_t (gcc считает его 4-байтным). Сделали по мотивам, сохранив совместимость с STL (т.е. там все нужные typedef'ы, члены и прочее были прописаны). Рулит. Ещё сверху профайлером попрыгали, оптимизировали для коротких строк. То, что не инлайнится — затолкали внутрь .cpp, чтобы сто раз не перекомпилировать.
Да это в принципе не актуально, так как используются только юникодные строки. Для этой цели он вполне подходит. У создателей библиотеки не было цели сделать её STL-совместимой.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, voxel3d, Вы писали: V>>Кстати, что у Вас там из контейнеров имеется -- убогий TList? хе — хе.. А из алгоритмов? S> Каких алгоритмов
Советская власть это коммунизм минус электрификация всей страны.
По аналогии с Виртовским "программы = структуры + алгоритмы"
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, Sinclair, Вы писали:
S>>Здравствуйте, voxel3d, Вы писали: V>>>Кстати, что у Вас там из контейнеров имеется -- убогий TList? хе — хе.. А из алгоритмов? S>> Каких алгоритмов
К>Советская власть это коммунизм минус электрификация всей страны.
К>По аналогии с Виртовским "программы = структуры + алгоритмы"
Какие вам алгоритмы нужны и мы отсыпим Вам. Правда нетипизированные и на компараторах.
Эх были бы в Delphi дженерики ....
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S> Какие вам алгоритмы нужны и мы отсыпим Вам. Правда нетипизированные и на компараторах. S>Эх были бы в Delphi дженерики ....
Некотрые люди в Delphi страшные вещи творят при помощи директивы {$INCLUDE}
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Serginio1, Вы писали:
S>> Какие вам алгоритмы нужны и мы отсыпим Вам. Правда нетипизированные и на компараторах. S>>Эх были бы в Delphi дженерики .... S>Некотрые люди в Delphi страшные вещи творят при помощи директивы {$INCLUDE} S>
Ну это старый подход. Тоже согласен с этим веским доводом. Но все равно дженерики лучше.
и солнце б утром не вставало, когда бы не было меня
Re: Нужен ли нам STL ?
От:
Аноним
Дата:
30.01.04 19:05
Оценка:
Здравствуйте, Denwer, Вы писали:
Что вас собственно не устраивает, общая концепция или конкретная реализация? D>Вот кто нить может сказать что он очень интенсивно использует STL под виндами? Да, не спорю библиотека не плоха, но все же ее идею отчасти устарели. Ну например взять тот же стринг, его использование под виндовсом настолько затруднительно, что я думаю его вообще мало кто использует. Идем дальше, на кой чер там вообще аллокаторы, причем они есть почти в каждом классе. Опять пережиток прошлого(или я всетаки заблуждаюсь в отношении оных). А вот класс auto_ptr вообще загадочная вещица, которую совсем лучше не трогать, обычно все берут бустовскую реализацию. И это все навскидку, думаю если подумать то много чего можно написать. Вот собственно и вопрос: зачем же нужна STL?
То, что у вас не возникало необходимости их применения, не умаляет их практической значимости, хотя всегда есть место ошибке в реализации.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Denwer, Вы писали:
D>>Вот кто нить может сказать что он очень интенсивно использует STL под виндами? Да, не спорю библиотека не плоха, но все же ее идею отчасти устарели. Ну например взять тот же стринг, его использование под виндовсом настолько затруднительно, что я думаю его вообще мало кто использует.
А>Критикуешь? Предлагай! А>Что вместо std::string? Тормозящий CString из монстрообразной MFC? Или сишный char*?
А>К тому же, приведи аналог с использованием CString: А>
Можешь ты его написать на STL и так же кратко?
И вот еще про стринги вспомнил, оказывается стандарт не оговаривает реализыцию стрингов, т.е. кто как хочет так и пишет(я имел в виду с подсчетом ссылок и без).А это уже может влиять на кодирование моей проги, т.е. я как бы заранее должен иметь в виду какую СТЛ мне использовать, т.к. смена ее может плохо повлиять, особенно в многопоточных прогах.
D>>Идем дальше, на кой чер там вообще аллокаторы, причем они есть почти в каждом классе. Опять пережиток прошлого(или я всетаки заблуждаюсь в отношении оных).
А>Во-первых, переопределять дефолтные аллокаторы тебя никто не заставляет. Устраивают --- используй. А>Во-вторых, это дополнительная гибкость. Когда упрёшься в производительность стандартного аллокатора на базе operator new и будешь делать свой, то вот тут-то и увидишь всю красоту STL.
D>>А вот класс auto_ptr вообще загадочная вещица, которую совсем лучше не трогать, обычно все берут бустовскую реализацию. И это все навскидку, думаю если подумать то много чего можно написать. Вот собственно и вопрос: зачем же нужна STL?
А>Чтобы не тратить время на изобретение велосипедов, а использовать кучу готовых, эффективных и хорошо увязанных между собой кубиков.
D>>ЗЫ: Я конечно не спорю что контейнеры там ооочень даже неплохи, но STL это же не просто библиотека контейнеров.
А>STL --- это не только (и не столько) контейнеры.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Denwer, Вы писали:
А>Что вас собственно не устраивает, общая концепция или конкретная реализация?
Что я собственно хотел бы увидеть: иметь библиотеку с концепцией конечно СТЛ, но что бы она была заточена для виндов, ну не надо мне этой независимости. Отсюда вытекает что она не должна входить в стандарт.
В заточке я подразумевал хотябы следующее:
Что бы можно без всяких хитростей использовать в связке EXE-DLL, на данный момент с СТЛем этого не прокатит.
Что бы было 2 версии: однопоточная и многопоточная
Хорошая совместимость с WinAPI
Что я собственно хотел бы увидеть: иметь библиотеку с концепцией конечно СТЛ, но что бы она была заточена для виндов, ну не надо мне этой независимости. Отсюда вытекает что она не должна входить в стандарт.
Какое отношение язык или стандартная библиотека должны иметь к конкретной операционной системе? По моему ты на начинаешь собственные желания противопоставлять общей концепции. Из этого ничего хорошего не получится. Слова "не надо мне этой независимости" звучат очень грубо. А мне нужна и как будем решать проблему стандарта мы с тобой?
[skip]
Хорошая совместимость с WinAPI
СТАРАЯ ПЕСНЯ О ГЛАВНОМ. Какое отношение стандартная библиотека имеет к WinAPI? Если рассуждать с точки зрения стандарта, то он вообще не обязан знать, что есть такие WinAPI или XAPI.
Для этого существует масса бесплатных библиотек, которые заточены к конкретным API. Вот они к стандарту никакого отношения и не имеют. Только не говори что Microsoft — это стандарт.
Не нужно путать святой дух с яичницей.
Приношу извинения, если груб. В некотором из последних постов я писал уже свое мнение по поводу таких вопросов. Повторятся не буду. Если интересно знать мнение, то в профайле ты можешь его увидеть.
Здравствуйте, Alexmoon, Вы писали:
A>Здравствуйте, Denwer, Вы писали:
A>
Что я собственно хотел бы увидеть: иметь библиотеку с концепцией конечно СТЛ, но что бы она была заточена для виндов, ну не надо мне этой независимости. Отсюда вытекает что она не должна входить в стандарт.
A>Какое отношение язык или стандартная библиотека должны иметь к конкретной операционной системе? По моему ты на начинаешь собственные желания противопоставлять общей концепции. Из этого ничего хорошего не получится. Слова "не надо мне этой независимости" звучат очень грубо. А мне нужна и как будем решать проблему стандарта мы с тобой?
Вот я и говорю что, что мне нужна именно виндовозная библиотека, не надо мне никаго стандарта, просто хочется либу которая имела бы концепцию схожую с СТЛ.
А проблему мы с тобой и не будем решать, т.к. мы не работает над одним проектом.
A>[skip]
A>
Хорошая совместимость с WinAPI
A>СТАРАЯ ПЕСНЯ О ГЛАВНОМ. Какое отношение стандартная библиотека имеет к WinAPI? Если рассуждать с точки зрения стандарта, то он вообще не обязан знать, что есть такие WinAPI или XAPI. A>Для этого существует масса бесплатных библиотек, которые заточены к конкретным API. Вот они к стандарту никакого отношения и не имеют. Только не говори что Microsoft — это стандарт.
Ну и дал бы ссылку на такую либу, которая заточена на ВинАПИ и по концепции схожа с СТЛ.
Про Microsoft я ничего не говорил.
A>Не нужно путать святой дух с яичницей.
A>Приношу извинения, если груб. В некотором из последних постов я писал уже свое мнение по поводу таких вопросов. Повторятся не буду. Если интересно знать мнение, то в профайле ты можешь его увидеть.
Я тоже повторю свои слова, а именно что я хочу: ХОЧУ ИМЕТЬ ЗАТОЧЕННУЮ ЛИБУ ПОД ВИНДОВС В СТИЛЕ СТЛ
И не надо ее ни в какой стандарт пихать.
Hello, Denwer!
You wrote on Mon, 02 Feb 2004 08:02:09 GMT:
А>> Что вас собственно не устраивает, общая концепция или конкретная А>> реализация? D> Что я собственно хотел бы увидеть: иметь библиотеку с концепцией конечно D> СТЛ, но что бы она была заточена для виндов, ну не надо мне этой D> независимости. Отсюда вытекает что она не должна входить в стандарт.
Т.е., независимость от операционки тебе мешает? Вот есть, допустим, замечательная библиотека, но мысль о том, что подлые юниксоиды тоже смогут с ней работать, тебе не дает покоя?
D> В заточке я подразумевал хотябы следующее: Что бы можно без всяких D> хитростей использовать в связке EXE-DLL, на данный момент с СТЛем этого D> не прокатит.
Ерунда. Я использую STL в связке EXE-DLL без всяких хитростей, десятки тысяч людей используют STL в связке EXE-DLL без всяких хитростей, а у тебя — не прокатывает. Наверное, проблема не в stl?
D> Что бы было 2 версии: однопоточная и многопоточная
А почему не 4 — однопоточная, многопоточная с потокобезопасными стримами, многопоточная с потокобезопасными итераторами, многопоточная с потокобезопасными стримами и потокобезопасными итераторами? Или таки 8 версий потребуются? А то и 16?
D> Хорошая совместимость с WinAPI
А это что? Как, например, sort или lower_bound может быть хорошо или плохо совместим с WinAPI?
Best regards,
Sergey.
Posted via RSDN NNTP Server 1.8 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Hello, Denwer!
You wrote on Mon, 02 Feb 2004 07:54:48 GMT:
D> Ну это уже не серьезно, вот например такой код: D>
D> CStrign s;
D> s.LoadString(ID);
D>
D> Можешь ты его написать на STL и так же кратко?
А теперь представь, что у тебя в проекте 10-20 модулей, идентификаторы строк в некоторых из них совпадают. Можешь ли ты сказать, из какого модуля твой код потащит строку? Или это зависит от того, был ли вызван до этого кода AfxManageState и погоды на Марсе?
D> И вот еще про стринги вспомнил, оказывается стандарт не оговаривает D> реализыцию стрингов, т.е. кто как хочет так и пишет(я имел в виду с D> подсчетом ссылок и без).
Стандарт предоставляет некоторые минимальные гарантии насчет строк. Если их тебе не хватает, используй другие строки.
D> А это уже может влиять на кодирование моей проги, т.е. я как бы заранее D> должен иметь в виду какую СТЛ мне использовать, т.к. смена ее может D> плохо повлиять, особенно в многопоточных прогах.
А вот потоки и в самом деле давно пора тащить в стандарт. Как опцию.
Best regards,
Sergey.
Posted via RSDN NNTP Server 1.8 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
A>>[q]Что я собственно хотел бы увидеть: иметь библиотеку с концепцией конечно СТЛ, но что бы она была заточена для виндов, ну не надо мне этой независимости. Отсюда вытекает что она не должна входить в стандарт.
A>>Какое отношение язык или стандартная библиотека должны иметь к конкретной операционной системе? По моему ты на начинаешь собственные желания противопоставлять общей концепции. Из этого ничего хорошего не получится. Слова "не надо мне этой независимости" звучат очень грубо. А мне нужна и как будем решать проблему стандарта мы с тобой?
D>Вот я и говорю что, что мне нужна именно виндовозная библиотека, не надо мне никаго стандарта, просто хочется либу которая имела бы концепцию схожую с СТЛ.[/q]
Проблем нет конечно. Просто живое общение. Просто сейчас уже не буду перечитывать, но мне показалось, что стоит вопрос о необходимости включения STL в стандарт, а если вопрос лишь о тебе, тогда извини и выбирать только тебе. Ты там помниться упоминал ATL. Хорошая библиотека. Сейчас писать огромные COM объекты без нее уже наверное очень трудоемко. Но вопрос о необходимости наличия STL в стандарте и "я хочу" — это две несовместимые концепции.
[skip]
A>>[q]Хорошая совместимость с WinAPI
A>>СТАРАЯ ПЕСНЯ О ГЛАВНОМ. Какое отношение стандартная библиотека имеет к WinAPI? Если рассуждать с точки зрения стандарта, то он вообще не обязан знать, что есть такие WinAPI или XAPI. A>>Для этого существует масса бесплатных библиотек, которые заточены к конкретным API. Вот они к стандарту никакого отношения и не имеют. Только не говори что Microsoft — это стандарт.
D>Ну и дал бы ссылку на такую либу, которая заточена на ВинАПИ и по концепции схожа с СТЛ. D>Про Microsoft я ничего не говорил.[/q]
У каждого свои недостатки и при бурном обсуждении для меня концептуальных вопросов, поскольку я живу С++, тоже далеко не лишен эмоций.
A>>Приношу извинения, если груб. В некотором из последних постов я писал уже свое мнение по поводу таких вопросов. Повторятся не буду. Если интересно знать мнение, то в профайле ты можешь его увидеть.
D>Я тоже повторю свои слова, а именно что я хочу: ХОЧУ ИМЕТЬ ЗАТОЧЕННУЮ ЛИБУ ПОД ВИНДОВС В СТИЛЕ СТЛ
D>И не надо ее ни в какой стандарт пихать.
Не готов тебя сейчас забросать ссылками, поскольку существующие при грамотном проектировании, меня сейчас вполне устраивают, но так на вскидку. Чтобы легче исскать было
Зайди даже хотя бы на boost. Посмотри как правильно они описывают по английски about STL based. Выбери пару наиболее совместимых ключевых фраз для поиска. Прилинкуй семантический правильно имя WinAPI и думаю, что у тебя все получится. Начал бы я именно с этого.
Если вопрос стоит об удобстве и о вкусах, то ты знаешь, что тут тяжело советовать.
Здравствуйте, Sergey, Вы писали:
S>А вот потоки и в самом деле давно пора тащить в стандарт. Как опцию.
Чтобы тащить, нужна прежде всего хорошая многоплатформенная реализация, которую можно было бы взять за основу для предложения о внесении потоков в стандарт, и толкать это все через коммитет по стандартизации. Еще, конечно-же, нужны люди, которые будут этим активно заниматься. Ничего подобного пока не наблюдается.
Здравствуйте, Denwer, Вы писали:
D>Что я собственно хотел бы увидеть: иметь библиотеку с концепцией конечно СТЛ, но что бы она была заточена для виндов...
Здравствуйте, Denwer, Вы писали:
D>Ну это уже не серьезно, вот например такой код: D>
D> CStrign s;
D> s.LoadString(ID);
D>
D>Можешь ты его написать на STL и так же кратко?
Можно я встряну?
Запросто:
// ==========================================================================
//! ЗАГРУЗИТЬ СТРОКУ ИЗ РЕСУРСОВinline std::tstring LoadString(uint id, HINSTANCE hRes = NULL)
{
if (!hRes) hRes = ::GetModuleHandle(NULL);
std::vector<TCHAR> buff(256); // Начальный размер буфера - 256 символовint len = 0;
while ( (len = ::LoadString(hRes, id, &buff[0], buff.size() )) ==
static_cast<int>(buff.size() - 1) )
{
buff.resize( buff.size() * 2 ); // Увеличить буфер
}
return std::tstring( &buff[0] );
}
// Пример использования:
std::tstring s = LoadString( ID );
D>И вот еще про стринги вспомнил, оказывается стандарт не оговаривает реализыцию стрингов, т.е. кто как хочет так и пишет(я имел в виду с подсчетом ссылок и без).А это уже может влиять на кодирование моей проги, т.е. я как бы заранее должен иметь в виду какую СТЛ мне использовать, т.к. смена ее может плохо повлиять, особенно в многопоточных прогах.
Ты просто привык к MFCям и поэтому придираешься к STLю
Это просто минимальный джентльменский набор.
Нужно только представлять его возможности и не требовать слишком многого.
<< RSDN@Home 1.1.0 stable >>
_____________________
С уважением,
Stanislav V. Zudin