Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.147.53.168] |
|
Страницы: (32) « Первая ... 21 22 [23] 24 25 ... 31 32 ( Перейти к последнему сообщению ) |
Сообщ.
#331
,
|
|
|
Цитата simsergey @ С хрена ли выше?Вероятность утечки памяти в С++, особенно при работе с объектами в Run-Time гораздо выше. Правильнее сказать, не "вероятность утечки памяти", а "вероятность допущения ошибок", приводящих к утечке памяти, выше. Ага, щаззз. Вместо того чтобы сосредоточится на сути задачи, программист, по-твоему, должен тратить силы на совершенно рутинное, нудное и чреватое ошибками управление памятью. Да ну на хер. |
Сообщ.
#332
,
|
|
|
Цитата applegame @ Вдогонку, умные указатели и другие контроллеры ресурсов для того в C++ и придумали, чтобы не слишком отвлекаться на рутину. Вместо того чтобы сосредоточится на сути задачи, программист, по-твоему, должен тратить силы на совершенно рутинное, нудное и чреватое ошибками управление памятью. Да ну на хер. |
Сообщ.
#333
,
|
|
|
Цитата simsergey @ Одно дело указатель - адрес в памяти, другое дело целый объект. Я о проблеме быстродействия. Нет этой проблемы. Я, например, даже shared_ptr не так уж и часто использую - у меня обычно владелец объекта известен, и поэтому он просто во владельце обёрнут в unique_ptr. И его производительность в точности равна производительности обычного указателя. Цитата simsergey @ Автор ведет речь о том, что все эти расширения языка лишние для решения конкретных задач, которые, скажем, он бы мог решить свободно на Си. Не думаю, что есть такие задачи. По крайней мере я слабо представляю, где были бы лишними, например, деструкторы. Ну и в любом случае автору никто не мешает писать на С++ в стиле Си. Вывод - Си не нужен. Добавлено Цитата amk @ При этом в C++ из коробки есть средства для работы в таких ситуациях, а в C их нет и быть не может. Не всегда. Например, С++ в принципе не способен отловить такое: std::vector<std::string> v; void push_twice(const std::string &s) { v.push_back(s); // При добавлении происходит реаллокация v.push_back(s); // Ссылка s тут уже умерла - Fail } v.push_back("Ooops"); push_twice(v.back()); Туда же - изменение vector/deque пока по ним итерируешься. Единственный выход - выносить как-либо такие проверки в рантайм. Во время же компиляции из известных мне языков от этого только Rust нормально избавляет. |
Сообщ.
#334
,
|
|
|
Цитата OpenGL @ Ну и в любом случае автору никто не мешает писать на С++ в стиле Си. Вывод - Си не нужен. Вывод неверен Автор живет не в изоляции. Код нужно еще и читать. И если не знать C++ полноценно, то разобраться в C++ коде будет невозможно. Даже библиотеки использовать. Это таки два разных языка. И в вопросе выживания у C, на мой взгляд, шансов больше. Добавлено Цитата OpenGL @ Например, С++ в принципе не способен отловить такое Ну Си тоже, потому в контексте разговора это неважно. Хотя, на мой взгляд, в Си ты к этому больше готов, C++(по сравнению с Си) дает ложное ощущение спокойствия. Видел это в реальной разработке и не в одной команде. Но это лишь мои тараканы, на объективную аргументацию не тянет. Добавлено Цитата OpenGL @ Во время же компиляции из известных мне языков от этого только Rust нормально избавляет. Он от этого "избавляет" путем запрета. В то время как ты просто нарушил контракт(неявный) вызываемой функции, она сама все делает правильно. |
Сообщ.
#335
,
|
|
|
Цитата D_KEY @ Автор живет не в изоляции. Код нужно еще и читать. И если не знать C++ полноценно, то разобраться в C++ коде будет невозможно. Даже библиотеки использовать. Это таки два разных языка. И в вопросе выживания у C, на мой взгляд, шансов больше. Ты сейчас перечислил минусы программиста, а не языка. Цитата D_KEY @ Ну Си тоже, потому в контексте разговора это неважно. Я ровно это же самое сказал постом ранее Цитата D_KEY @ Он от этого "избавляет" путем запрета. Есть другой способ избавиться от нежелательных действий на этапе компиляции? |
Сообщ.
#336
,
|
|
|
Цитата OpenGL @ На самом деле если один язык имеет более сложные синтаксис, библиотеку и т.д., чем другой, то программисту его освоить сложнее. В результате язык теряет часть пользователей, основным занятием которых является не написание собственно программ. Я, к примеру, хоть и числюсь на работе программистом, на самом деле занимаюсь разработкой логики работы вычислительных блоков. Дополнительно пишу разные вспомогательные программы, по большей части не очень большие. ЯП мне нужен не сам по себе, а для моделирования/проверки того, что я и другие наразрабатывали. То есть собственно программирование у меня занимает часто несколько минут в день. В результате об особенностях работы с тем же C++ я больше узнаю здесь, на форуме, из обсуждений подобных этой теме, чем из собственного опыта.Ты сейчас перечислил минусы программиста, а не языка. И в результате, мне часто быстрее какую-нибудь штуку написать на чистом C, чем разбираться, как это эффективно реализовать на C++. Впрочем я и на C сейчас редко писать стал, чаще быстрее набросать нужное на питоне, тем более, что к скорости особых требований нет. |
Сообщ.
#337
,
|
|
|
Цитата amk @ На самом деле если один язык имеет более сложные синтаксис, библиотеку и т.д., чем другой, то программисту его освоить сложнее. Я с этим и не спорю. Речь-то не об этом, а о том, что у си нет ни одного плюса перед плюсами - на последних точно так же можно писать в стиле Си и с использованием сишных библиотек, и поэтому использование С вместо плюсов является чем угодно, но никак не логичным и взвешенным решением. |
Сообщ.
#338
,
|
|
|
Цитата OpenGL @ Нелогично писать на C++ в стиле C и с C-шными библиотеками. Потому что тогда к программе прицепится довольно много такого, что не будет использоваться. Лучше тогда именно C и ограничиться, благо компилятор чистого C всегда в комплекте идёт. можно писать в стиле Си и с использованием сишных библиотек, и поэтому использование С вместо плюсов является чем угодно, но никак не логичным и взвешенным решением |
Сообщ.
#339
,
|
|
|
Цитата amk @ Потому что тогда к программе прицепится довольно много такого, что не будет использоваться. Например? |
Сообщ.
#340
,
|
|
|
Цитата OpenGL @ Исполнительную библиотеку C++ надо инициализировать. Делается это независимо от того, используются её возможности или нет. Для программы размером в гигабайт это наверно не очень существенно, но не все проекты такие большие. Например? |
Сообщ.
#341
,
|
|
|
Ты так говоришь, как будто там мегабайты кода Не знаю, как насчёт микроконтроллеров, но ни в одном проекте для ПК/мобилок это значимым не будет. А то и не будет вообще - по крайней мере helloworld, скомпиленный gcc и g++ на -O3 у меня выдали идентичный ассемблерный код.
|
Сообщ.
#342
,
|
|
|
Цитата amk @ Исполнительную библиотеку C++ надо инициализировать. Делается это независимо от того, используются её возможности или нет. Для программы размером в гигабайт это наверно не очень существенно, но не все проекты такие большие. Т.е., получается, что единственный минус c++ перед си - то что надо обязательно подключать какие-то библиотеки. Всё остальное - сплошные плюсы. Ну да, мелкие программки можно и на Си делать. Можно и на ассемблере. Без разницы. Причём они, как правило, реализуют один алгоритм с парой функций. Здесь C++ мало поможет. Добавлено Цитата OpenGL @ но ни в одном проекте для ПК/мобилок это значимым не будет. Будет. Когда тебе нужно сделать dll с десятком малосвязанных функций. Чтоб размер имел значение. |
Сообщ.
#343
,
|
|
|
Цитата Олег М @ Будет. Когда тебе нужно сделать dll с десятком малосвязанных функций. Чтоб размер имел значение. С какого такого перепоя он будет иметь значение, если g++ даже libstdc++ не линкует, если ничего от С++ ты не используешь? |
Сообщ.
#344
,
|
|
|
Цитата OpenGL @ С какого такого перепоя он будет иметь значение, если g++ даже libstdc++ не линкует, если ничего от С++ ты не используешь? А зачем тебе тогда C++, если ты ничего от него не используешь? В частности (тут я тупо не в курсе) будет ли libstdс++ линковаться, если ты используешь из плюсов только new и delete? Без них никак |
Сообщ.
#345
,
|
|
|
Цитата OpenGL @ если ничего от С++ ты не используешь Если быть точнее - из STL |