Re[62]: Ну ты вообще многого не видишь... ;)
От: CreatorCray  
Дата: 10.06.09 09:30
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>А вот по соседству бродит некий Егор, который ставит минусы на все мои посты, вот он уверен, что std::wstring — это епик вин С++, и что он не "гора компромиссов между ужами и ежами", а спроектирован побеждать во всех обстоятельствах.

Что то я такого в этой теме не припомню.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[55]: Ну ты вообще многого не видишь... ;)
От: CreatorCray  
Дата: 10.06.09 09:30
Оценка:
Здравствуйте, criosray, Вы писали:

C>Кстати, спасибо, что напомнили. Публичные методы StringBuilder еще и thread safe в отличии от std::wstring.

Не совсем так

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

http://msdn.microsoft.com/en-us/library/system.text.stringbuilder(VS.71).aspx
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[63]: Ну ты вообще многого не видишь... ;)
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.06.09 09:58
Оценка:
Здравствуйте, CreatorCray, Вы писали:
CC>Что то я такого в этой теме не припомню.
Чего ты не припомнишь? Егора?
Вот: http://rsdn.ru/Forum/Message.aspx?mid=3415798&amp;only=1
Автор: Erop
Дата: 04.06.09

Цитирую:

S>Изменяемые строки в моём любимом языке реализовали вполне эффективно — см StringBuilder.
Это, эта всякий случай, если не понятно: НЕ СМОГЛИ РЕАЛИЗОВАТЬ ЭФФЕКТИВНО СТРОКУ, НЕ РАЗДЕЛЯЯ ЕЁ НА МУТАБЕЛЬНУЮ И ИММУТАБЕЛЬНУЮ... А что, смогли что ли?

... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[64]: Ну ты вообще многого не видишь... ;)
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 10.06.09 11:00
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

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

CC>>Что то я такого в этой теме не припомню.
S>Чего ты не припомнишь? Егора?
S>Вот: http://rsdn.ru/Forum/Message.aspx?mid=3415798&amp;only=1
Автор: Erop
Дата: 04.06.09

S>Цитирую:
S>

S>>Изменяемые строки в моём любимом языке реализовали вполне эффективно — см StringBuilder.
S>Это, эта всякий случай, если не понятно: НЕ СМОГЛИ РЕАЛИЗОВАТЬ ЭФФЕКТИВНО СТРОКУ, НЕ РАЗДЕЛЯЯ ЕЁ НА МУТАБЕЛЬНУЮ И ИММУТАБЕЛЬНУЮ... А что, смогли что ли?


А где там про эпик вин std::wstring? Я что-то тоже такого не припоминаю.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[65]: Ну ты вообще многого не видишь... ;)
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.06.09 11:25
Оценка: +2
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>А где там про эпик вин std::wstring? Я что-то тоже такого не припоминаю.

IMHO, если бы от такого разделения на константные строки и фабрики строк была какая-то реальная польза, в C++ уже бы давно были бы популярны такие библиотеки.

http://rsdn.ru/Forum/Message.aspx?mid=3415700&amp;only=1
Автор: Erop
Дата: 04.06.09

E>Ты писал, что фишка в том, что создание копии строки дорого стоит, ну так это тогда всё в неэффективность мутабельной строки в С# упирается выходит? Потому, как в С++ удобно и легко получается COW и нет никаких мегапроблем. А для константных строк тоже нет проблем...

Ну то есть вот, наша неэффективная мутабельная строка порвала, значит, "удобные и лёгкие" строки в C++.

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

А нефанаты тем временем изучают вопросы типа "как правильно проектировать строки, чтобы получать эффективную реализацию". Я вовсе не считаю StringBuilder идеалом. Но то, что порвёт StringBuilder, оставит от ваших std::* кровавые ошмётки.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[66]: Ну ты вообще многого не видишь... ;)
От: Cyberax Марс  
Дата: 10.06.09 11:31
Оценка: +2 -1
Здравствуйте, Sinclair, Вы писали:

S>В общем, это мне уже как-то становится скучно. Есть медицинский факт: строки в С++ спроектированы отвратительно.

S>Я достаточно хорошо понимаю все исторические причины, которые привели к этому архитектурному убожеству.
Какие строки? "const char *"?

С++ как обычно даёт кучу возможностей сделать что-то красивое (как и выстрелить себе в ногу). Например, я писал свой пакет строк на основе Александресковских. С фичами, которых нет в С# (и не будет). Например, возможностью превратить immutable-строку в mutable при необходимости с почти нулевыми затратами.

Или с возможностью подсунуть хранилище с gap buffer'ом. Сейчас вот пытаюсь этот код найти....
Sapienti sat!
Re[58]: Ну ты вообще многого не видишь... ;)
От: CreatorCray  
Дата: 10.06.09 12:01
Оценка:
Здравствуйте, Serginio1, Вы писали:

CC>>>>В С++ у тебя вылетает bad_alloc на ~1.4 Гб занятой памяти.

C>>>1.4 гб это далеко не лимит — еще как минимум 600 мб должно быть доступно процессу.
CC>>если посмотреть VMView то видно что куски то есть, но постоянно растущая строка некоторую часть хипа зафрагментировала.
S>В свое время делал тесты http://www.rsdn.ru/forum/design/701354.1.aspx
Автор: Serginio1
Дата: 30.06.04

S>Для Лохов память выделяется со старших адресов и не подвергается сборе мусора. Хотя давно было дело.
О чём ты?
Я писал про поведение С++ примера, откуда сборка мусора?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[67]: Ну ты вообще многого не видишь... ;)
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 10.06.09 12:01
Оценка:
Здравствуйте, Cyberax, Вы писали:


C>С++ как обычно даёт кучу возможностей сделать что-то красивое (как и выстрелить себе в ногу). Например, я писал свой пакет строк на основе Александресковских. С фичами, которых нет в С# (и не будет). Например, возможностью превратить immutable-строку в mutable при необходимости с почти нулевыми затратами.

Stringbuilder занимается таким превращением. http://rsdn.ru/forum/flame.comp/3421959.1.aspx
Автор: Геннадий Васильев
Дата: 09.06.09
и солнце б утром не вставало, когда бы не было меня
Re[68]: Ну ты вообще многого не видишь... ;)
От: Cyberax Марс  
Дата: 10.06.09 12:35
Оценка:
Здравствуйте, Serginio1, Вы писали:

C>>С++ как обычно даёт кучу возможностей сделать что-то красивое (как и выстрелить себе в ногу). Например, я писал свой пакет строк на основе Александресковских. С фичами, которых нет в С# (и не будет). Например, возможностью превратить immutable-строку в mutable при необходимости с почти нулевыми затратами.

S>Stringbuilder занимается таким превращением. http://rsdn.ru/forum/flame.comp/3421959.1.aspx
Автор: Геннадий Васильев
Дата: 09.06.09

Не, у меня круче всё было
Sapienti sat!
Re[66]: Ну ты вообще многого не видишь... ;)
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 10.06.09 12:35
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

ГВ>>А где там про эпик вин std::wstring? Я что-то тоже такого не припоминаю.

S>

IMHO, если бы от такого разделения на константные строки и фабрики строк была какая-то реальная польза, в C++ уже бы давно были бы популярны такие библиотеки.

S>http://rsdn.ru/Forum/Message.aspx?mid=3415700&amp;only=1
Автор: Erop
Дата: 04.06.09

S>

E>Ты писал, что фишка в том, что создание копии строки дорого стоит, ну так это тогда всё в неэффективность мутабельной строки в С# упирается выходит? Потому, как в С++ удобно и легко получается COW и нет никаких мегапроблем. А для константных строк тоже нет проблем...

S>Ну то есть вот, наша неэффективная мутабельная строка порвала, значит, "удобные и лёгкие" строки в C++.

В упомянутом тобой постинге Егора нет никаких восхвалений в адрес std::wstring (отучаемся додумывать ненаписанное), да и сама std::wstring не упоминается. COW — это не std::wstring.

Так где про эпик вин std::wstring?

S>В общем, это мне уже как-то становится скучно. Есть медицинский факт: строки в С++ спроектированы отвратительно.


Не "строки в C++", а "строки MS STL". Даже не смотря на то, что эти строки описаны в стандарте, нет никаких оснований переносить недостатки, свойственные тем или иным реализциям std::basic_string на весь C++.

S>Я достаточно хорошо понимаю все исторические причины, которые привели к этому архитектурному убожеству.

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

Не смеши меня, ладно? Никто из C++-ников не говорил (AFAIR), что std::wstring есть лучшее решение на все случаи жизни. Это только строка, предусмотренная стандартной библиотекой. Но "стандартная" не означает "обязательная к применению", поэтому нельзя апеллировать к этой реализации, как к обязательно используемой везде в C++ ("строка в C++" — фраза содержит именно такое неявное обобщение). Сама по себе подобная апелляция уже ошибочна. Не нравятся те или иные строки? Сделай другие.

S>А нефанаты тем временем изучают вопросы типа "как правильно проектировать строки, чтобы получать эффективную реализацию". Я вовсе не считаю StringBuilder идеалом. Но то, что порвёт StringBuilder, оставит от ваших std::* кровавые ошмётки.


Ну, поздравляю нефанатов. Наконец-то они дошли до того, что известно любому C++-нику. Что универсальных решений не бывает.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[68]: Ну ты вообще многого не видишь... ;)
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 10.06.09 12:45
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Не, у меня круче всё было

Ну своё то оно всегда
Просто имутабельность строки, гарантируется фреймворком в сэйв режиме. В нативе это возможно только через пометку памяти R/O.
и солнце б утром не вставало, когда бы не было меня
Re[68]: Ну ты вообще многого не видишь... ;)
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 10.06.09 12:48
Оценка: -1
Здравствуйте, Serginio1, Вы писали:

C>>С++ как обычно даёт кучу возможностей сделать что-то красивое (как и выстрелить себе в ногу). Например, я писал свой пакет строк на основе Александресковских. С фичами, которых нет в С# (и не будет). Например, возможностью превратить immutable-строку в mutable при необходимости с почти нулевыми затратами.

S>Stringbuilder занимается таким превращением. http://rsdn.ru/forum/flame.comp/3421959.1.aspx
Автор: Геннадий Васильев
Дата: 09.06.09


Занимается, но только при одном сценарии использования.

var sb = new StringBuilder();
/* цикл модификаций */
string result = sb.ToString();
/* забыли про sb */
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[69]: Ну ты вообще многого не видишь... ;)
От: Cyberax Марс  
Дата: 10.06.09 12:54
Оценка:
Здравствуйте, Serginio1, Вы писали:

C>>Не, у меня круче всё было

S>Ну своё то оно всегда
S> Просто имутабельность строки, гарантируется фреймворком в сэйв режиме. В нативе это возможно только через пометку памяти R/O.
В С++ для этого есть слово "const". Конечно, его можно снять const_cast'ом, но это уже ССЗБ.
Sapienti sat!
Re[69]: Ну ты вообще многого не видишь... ;)
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 10.06.09 12:58
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

Суть то в том, что занимается. И нефиг для этих целей стрингбуилдер трогать уже строка для этого есть.
Скорее проблема в том, что в мануалах я этого вроде не видел, хотя и могу ошибаться.
и солнце б утром не вставало, когда бы не было меня
Re[67]: Ну ты вообще многого не видишь... ;)
От: criosray  
Дата: 10.06.09 13:20
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>С фичами, которых нет в С# (и не будет). Например, возможностью превратить immutable-строку в mutable при необходимости с почти нулевыми затратами.

Лучше молчать, если не знает.
Re[57]: Ну ты вообще многого не видишь... ;)
От: criosray  
Дата: 10.06.09 13:22
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>>>На 10к строк С# падает с out of memory

C>>??? Не падает. Выполняется за 3.9 сек.
CC>У тя или 64битная ОС или памяти > 2гиг
Слабо прочитать топик?

CC>>>В С++ у тебя вылетает bad_alloc на ~1.4 Гб занятой памяти.

C>>1.4 гб это далеко не лимит — еще как минимум 600 мб должно быть доступно процессу.
CC>если посмотреть VMView то видно что куски то есть, но постоянно растущая строка некоторую часть хипа зафрагментировала
Еще один камень в огород С++.
Re[65]: Ну ты вообще многого не видишь... ;)
От: criosray  
Дата: 10.06.09 13:25
Оценка:
Здравствуйте, CreatorCray, Вы писали:

ГВ>>>Можно продолжить играться с std::wstring. Например, подсунуть ей другой аллокатор.

C>>Ну да. А еще можно переписать ее так, чтоб внутри было concatenation tree — сугубо, чтоб заточить под задачу аккумулирования строк.
CC>Мне кажется или ты начинаешь понемногу понимать?

Это Вы начинаете немного понимать. У меня-то проблем с пониманием не было и я изначально говорил, что разделение строк по методам работы с ними (а не по способу внутренней реализации, как это сделано в с++ ) на строку и аккумулятор в дотнет — гениальное решение, которое на много эфективнее (и удобнее) строк С++.
Re[69]: Ну ты вообще многого не видишь... ;)
От: criosray  
Дата: 10.06.09 13:26
Оценка:
Здравствуйте, CreatorCray, Вы писали:



ГВ>>>Дотнетовский, например, String.insert возвращает string. А QT-шный QString::insert возвращает QString&. Разница понятна?

C>>Разница понятна — и то и другое есть ссылка.
CC>О да!

CC>Как ты там говорить любишь: "не позорьтесь"


Смех без причины? Что Вас так насмешило?
Re[68]: Ну ты вообще многого не видишь... ;)
От: Cyberax Марс  
Дата: 10.06.09 13:40
Оценка:
Здравствуйте, criosray, Вы писали:

C>>С фичами, которых нет в С# (и не будет). Например, возможностью превратить immutable-строку в mutable при необходимости с почти нулевыми затратами.

C>Лучше молчать, если не знает.
Таки нет в .NET тех фич, которые у меня были.
Sapienti sat!
Re[69]: Ну ты вообще многого не видишь... ;)
От: criosray  
Дата: 10.06.09 13:48
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>>>С фичами, которых нет в С# (и не будет). Например, возможностью превратить immutable-строку в mutable при необходимости с почти нулевыми затратами.

C>>Лучше молчать, если не знает.
C>Таки нет в .NET тех фич, которые у меня были.
Ну давайте рассказывайте что за фичи-то.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.