|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
maytonПоследнее - очень важно. Кто первый вышел на рынок - тот победитель. Стратегия "быстро хапнуть бабла и свалить в закат" - вечна. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:40 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov maytonПоследнее - очень важно. Кто первый вышел на рынок - тот победитель. Стратегия "быстро хапнуть бабла и свалить в закат" - вечна. Да. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:40 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
mayton petrav пропущено... Я рекомендую всячески сопротивляться добавлению в проект каждой новой библиотеки. Это от разработчика PVS Studio, я согласен абсолютно -- с каждым символом. Не согласен с точкой зрения. Она - архаична. И ее можно было реплицировать еще в середине 20-го века когда любой программный продукт был железом+ОС+приложением 3 в одном. Современный программный продукт - это зачастую на 90% идея, воплощённая в интеграции системных средств или платформ Amazon/Google/Azure и собственно вашего кода. Которого обычно мало. Ваш код - это по сути клей который склеивает готовые решения в одно. Подход когда вы пилите и свой HttpClient и свой (не дай бох) более сложный драйвер - отбрасывает вас во времени на много спринтов назад и при таком подходе ваши конкуренты вас обойдут и выдадут работающий прототип. Последнее - очень важно. Кто первый вышел на рынок - тот победитель. Сидельцы и народные умельнцы - здесь обычно остаются за бортом. Они - вне рынка ПО. Они неинтересны потому-что они задержались и поезд ушел. Поэтому я очень сильно не поддерживаю С++ - ников в их желании иметь свой "свечной заводик" на любой случай жизни. Вы просто не прочитали раздел на который я дал ссылку. Или прочитали, но не поняли что там написано. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:46 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
maytonПоследнее - очень важно. Кто первый вышел на рынок - тот победитель. Совсем не обязательно. Если рынок продукта небольшой тогда и нет смысла рвать когти и переплачивать за разработку в 24-7 режиме. А если большой то место всем хватит, главное чтобы костюмчик сидел продукт был достойный. И тут наоборот, попытка будет только одна и вывести нужно действительно конкурентноспособный продукт. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:48 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Я давно слежу за продуктами PVS. Но их создатели изначально находились в невыгодном стартовом положении. Они анализировали самый тяжелый и самый сложный компиллятор в мире. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:58 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
mayton Я давно слежу за продуктами PVS. Но их создатели изначально находились в невыгодном стартовом положении. Они анализировали самый тяжелый и самый сложный компиллятор в мире. Компилятор? Наверное язык? Но кто-то же должен его анализировать. Продукт очень качественный, мирового уровня и отечественный. Повод для гордости. mayton Подход когда вы пилите и свой HttpClient и свой (не дай бох) более сложный драйвер - отбрасывает вас во времени на много спринтов назад и при таком подходе ваши конкуренты вас обойдут и выдадут работающий прототип. Почитайте внимательнее статью. Автор как раз и не советует писать свой HttpClient. А Вы, почему-то, прочитали, что советует... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 19:06 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
mayton, Кстати, у меня только что слетела возможность редактировать свои посты. Меня что забанили? Во, теперь вернулась. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 19:18 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov maytonПоследнее - очень важно. Кто первый вышел на рынок - тот победитель. Стратегия "быстро хапнуть бабла и свалить в закат" - вечна. эта стратегия всегда ведёт к саморазрушению и деградации т.е. что в итоге получает человек? бухает и жрёт = забивает на развитие и разлагается т.о. она то вечна, но вообще-то у неё довольно предсказуемый и глобальный конец (для всего рода, потому что дети, которых не научили добывать/создавать ресурсы - обречены). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 19:25 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
OoCc полудухи что тут возвращает компилятор?! как str попал в main() ? Ты меня спрашиваешь? Это твой код. мой код возвращал str, а твой ничего не возвращает ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 19:38 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
petrav mayton Я давно слежу за продуктами PVS. Но их создатели изначально находились в невыгодном стартовом положении. Они анализировали самый тяжелый и самый сложный компиллятор в мире. Компилятор? Наверное язык? Но кто-то же должен его анализировать. Продукт очень качественный, мирового уровня и отечественный. Повод для гордости. Я думаю что я все таки не ошибся. Очень много вопросов языка С++ крутятся вокруг компиллятора. А именно его контрактов по отношению к реализации в bare-metal. Я-бы даже сказал что у меня есть личная претезия именно к компилляторам. Сказать что они сложны - это значит не сказать ничего. Сказать что до сих пор есть сложные соглашения по поводу типов int/char и по поводу того в какую разрядность они будут собраны. Замечу что этому вопросу 100 лет в обед. И большая часть вопросов новичков крутятся вокруг "некой слепоты" касаемой разрядностей и платформ. Фактически наработка опыта в С++ должна проходить не через язык а через систему. Железо. ОС. И компилляторы. Вы не можете считаться опытным С++ кодером просто зная С++. Собственно это знание вам не дает ничего. Вы должны носом пропахать практику и поймать грабли разрядности чтобы понять что здесь будет padding структуры. А здесь символ будет покрывать диапазон 1 байта. Просто таковы условия. Такой глубины неопределённости уже давно нет в смежных языках и технологиях. Тип данных - это главный строительный цемент. И очень странно что этому вопросу уделяют мало внимания в комитетах. За 40 лет практически не было сколь заметных улучшений строгости базовой спеки. Более того существуют сильно болшие различия в Microsoft C++/Gnu Compiller Collection которые тоже не решаются на уровне спеки языка а решаются где-то сбоку. Макросы, директивы компиллятора, опции командной строки. Такого ужаса не существовало в других компилляторах. Они были более предсказемы. Ну и тип данных строка о котором я говорю уже давно. Я говорю - комитет - утверди string как фундаментальную единицу компилляции и выброси все библиотечные строки. Вобщем нечего гордиться. Нет предмета гордости. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 20:03 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
mayton Макросы, директивы компиллятора, опции командной строки. Такого ужаса не существовало в других компилляторах. Они были более предсказуемы. Ну и тип данных строка о котором я говорю уже давно. Да... так и есть. Но, во-первых, у нас выбора нет. Хотя можно найти другую работу. Никто не спорит, что тут у нас в C++ помимо красоты языка, ещё и куча кривизны и костылей. Но статья, которую я процитировал, в общем, универсальна. И касается всех языков программирования. А автор советует не разрабатывать HttpClient. Я точно так же видел как отваливается половина сложнейшего приложения на .NET. После обновления Студии. Что-то связанное с удалённым созданием объектов на сервере логики. Хотя использование этого компонента .NET было правильным. В смысле, что мы его и использовали правильно, и правильным было то, что мы его использовали. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 20:30 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky полудух, Все компиляторы оптимизируют это устраняя копирование возвращаемого значения, и по факту функция работает с тем экземпляром куда результат присваивается в вызывающем коде (RVO). А начиная с С++17 это обязательное поведение. Так что можете спокойно возвращать строку. а когда я делаю str.c_str() снаружи, таки копирования не происходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 20:39 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
полудух а когда я делаю str.c_str() снаружи, таки копирования не происходит? А если сделать str.c_str() снаружи, а потом str.c_str() сделать внутри? Вот как думаешь, что случится? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 20:50 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
"внутрей" к тому времени уже не будет оттуда return был ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 21:05 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
полудух "внутрей" к тому времени уже не будет оттуда return был При большом желании можно и в "нутря" вернуться == std::longjmp. Московский утверждает, что та переменная типа std::string на самом деле будет создана на стеке функции main() и никакого копирования строки не будет. А раз она создана там, то там и создана. И дальше можно делать хоть в c_str() - да хоть куда. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 21:13 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
petrav полудух "внутрей" к тому времени уже не будет оттуда return был При большом желании можно и в "нутря" вернуться == std::longjmp. Московский утверждает, что та переменная типа std::string на самом деле будет создана на стеке функции main() и никакого копирования строки не будет. А раз она создана там, то там и создана. И дальше можно делать хоть в c_str() - да хоть куда. спасибо, кэп, я спрашивал про другое - делает ли c_str() копирование, когда преобразует string в char*? технически ведь он ничего не преобразует, там внутрях тот же char*... он его мувает наружу, или указатель вертает, или как? в коде вроде указатель: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Return const pointer to null-terminated contents. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 21:30 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
полудух спасибо, кэп, я спрашивал про другое - делает ли c_str() копирование, когда преобразует string в char*? технически ведь он ничего не преобразует, там внутрях тот же char*... он его мувает наружу, или указатель вертает, или как? Короче, дело так обстоит. Код, конечно, прототипный и заведомо неверный. Но концептуально правильный. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Никакого копирования не происходит. c_str() это доступ к внутреннему буферу. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 21:43 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
полудух, Точно также как и std::vector::data() и std::array::data() -- просто возвращают указатели на внутренние буферы, больше ничего не происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 21:56 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
ясно, спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 22:47 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
mayton petrav пропущено... Компилятор? Наверное язык? Но кто-то же должен его анализировать. Продукт очень качественный, мирового уровня и отечественный. Повод для гордости. Вобщем нечего гордиться. Нет предмета гордости. Да вот ещё... Вы интересно повернули вопрос о предмете гордости. ООО «Системы программной верификации» российская компания? PVS Studio российская разработка? Я думаю это качественный продукт и повод для гордости, если они из РФ. А далее Вы приводите разгромную критику языка C++ и компиляторов С++. А ещё далее Вы делаете вывод, что гордится нечем, нет предмета гордости. Ну понятно. Один вопрос, язык С++ и компиляторы проектировала и разрабатывала тоже ООО «Системы программной верификации» из РФ ?! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2020, 00:28 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Да я не про PVS. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2020, 14:57 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
PVS-Studio, кстати, даже Джон Кармак (id Software) активно юзает (4:10) я почитал блог PVS , действительно хорошая штука ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2020, 19:02 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
В идеале компиллятор должен и выполнять эти функции. А мы должны просто читать внимательно WARNINGs а не игнорить. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2020, 19:24 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
похоже такой крутой разбор текста не может сделать таже команда, которая разрабатывает логику компилятора т.е. тупо с ассемблером работает нужна отдельная команда ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2020, 10:06 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
mayton В идеале компиллятор должен и выполнять эти функции. Вообще-то не должен. Задача компилятора генерировать код. Функция анализа кода это задача IDE. Не говоря уже о том что очень много ложных срабатываний для работы с которыми нужна интерактивность. Т.е. компилятор тут никаким боком. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2020, 13:11 |
|
|
start [/forum/topic.php?fid=57&msg=39954853&tid=2017432]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 149ms |
0 / 0 |