Обратил внимание, что даже в последних стандартах подчеркивается, что ряд особенностей C++ (хотя бы пресловутое сужение типа) существует лишь для совместимости с C.
Насколько это востребовано вообще? Ладно, где-нибудь в начале-середине 90-х, когда в C++ устоялись еще не все базовые свойства, и многие банально опасались переходить с C, не зная, куда оно в итоге повернется. Но уже где-то к концу 90-х основные вещи устаканились и, если в последующие лет десять кто-то не переписал свой софт на C++, то уже вряд ли стал это делать позднее. Или до сих пор переписывают в товарных количествах?
С другой стороны, я еще с конца 90-х привык для каждого нового проекта (в том числе переносимого с C) включать все возможные предупреждения, отключая явно лишь наиболее очевидные. Понятно, что на сишных текстах такой режим выдавал сотни-тысячи предупреждений, и какое-то время уходило на правку, зато все остальное время можно было не опасаться где-то незаметно накосячить. В этом смысле даже базовый (без дополнительного анализа со стороны компилятора) контроль типов в C++ гораздо правильнее либерального сишного.
В чем может быть ценность этой совместимости, кроме поощрения ленивых и малограмотных? Может, я чего не понимаю?
P.S. Речь исключительно о совместимости по синтакису/семантике кода. К связыванию и ABI вопрос не относился.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Обратил внимание, что даже в последних стандартах подчеркивается, что ряд особенностей C++ (хотя бы пресловутое сужение типа) существует лишь для совместимости с C.
Дык, эта. Куча плюсового кода написана с учетом этих правил, и если их поменять, сломается пол мира. И никто старый код переписывать не будет только для того, чтобы он соответствовал новым стандартам. А если в новый стандарт протащат отказ от этой совместимости, то уверен, кто-нибудь да не поскупиться и закажет их.
А так — где можно — отказываются. register выкинули, auto полностью смысл поменяло
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Обратил внимание, что даже в последних стандартах подчеркивается, что ряд особенностей C++ (хотя бы пресловутое сужение типа) существует лишь для совместимости с C.
C++ на этой совместимости до сих пор паразитирует
ЕМ>Насколько это востребовано вообще? Ладно, где-нибудь в начале-середине 90-х, когда в C++ устоялись еще не все базовые свойства, и многие банально опасались переходить с C, не зная, куда оно в итоге повернется. Но уже где-то к концу 90-х основные вещи устаканились и, если в последующие лет десять кто-то не переписал свой софт на C++, то уже вряд ли стал это делать позднее. Или до сих пор переписывают в товарных количествах?
ЕМ>В чем может быть ценность этой совместимости, кроме поощрения ленивых и малограмотных? Может, я чего не понимаю?
Всё очень просто если C++ будет не совместим с C, то он потеряет интерфейс к внешнему миру и будет чуть более чем бесполезен.
Подключение динамических библиотек C++ к чему-то еще очень весёлое занятие.
Здравствуйте, пффф, Вы писали:
П>Куча плюсового кода написана с учетом этих правил, и если их поменять, сломается пол мира. И никто старый код переписывать не будет только для того, чтобы он соответствовал новым стандартам. А если в новый стандарт протащат отказ от этой совместимости, то уверен, кто-нибудь да не поскупиться и закажет их.
Дык, если это делать, то делать грамотно. Ввести в язык способ явного объявления уровней совместимости, чтоб можно было описать их прямо в тексте, а не россыпью ключей компилятора или прагм, которые у всех разные. По умолчанию включать максимально строгий контроль, и нехай каждый, кому это не нравится, явно пишет в тексте "я умнее компилятора, я сам буду все контролировать, не пропущу ни одной мелочи". У тех, кто понимает толк, это довольно быстро станет стандартом де-факто, а на тех, кто ставит либеральные режимы, будут смотреть так же, как сейчас смотрят на любителей C-style cast или передачи объектов через void *.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Дык, если это делать, то делать грамотно. Ввести в язык способ явного объявления уровней совместимости, чтоб можно было описать их прямо в тексте, а не россыпью ключей компилятора или прагм, которые у всех разные. По умолчанию включать максимально строгий контроль, и нехай каждый, кому это не нравится, явно пишет в тексте "я умнее компилятора, я сам буду все контролировать, не пропущу ни одной мелочи". У тех, кто понимает толк, это довольно быстро станет стандартом де-факто, а на тех, кто ставит либеральные режимы, будут смотреть так же, как сейчас смотрят на любителей C-style cast или передачи объектов через void *.
Ты потом первый прибежишь с криками: "что за очередную #$%нину в плюсики вкорячили?"
Здравствуйте, Евгений Музыченко, Вы писали:
_>>если C++ будет не совместим с C, то он потеряет интерфейс к внешнему миру
ЕМ>Про совместимость по ABI я вообще не говорю — без нее как раз нельзя. Я исключительно про совместимость с C по тексту программы.
Чтобы можно было итеративно улучшать сишное говно, потихоньку переделывая его на нормальном языке, а не выкидывать сразу всё старое в мусорку и не писать заново на другом языке
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Обратил внимание, что даже в последних стандартах подчеркивается, что ряд особенностей C++ (хотя бы пресловутое сужение типа) существует лишь для совместимости с C.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>По умолчанию включать максимально строгий контроль, и нехай каждый, кому это не нравится, явно пишет в тексте "я умнее компилятора, я сам буду все контролировать, не пропущу ни одной мелочи".
Да, это сразу гемор. Надо какое-то старьё собрать — будут глобально ставить самый совместимый уровень. Да и вообще, режим максимальной совместимости просто будут сразу по умолчанию ставить.
Иначе будет похоже на вечную борьбу с боромиром чекеров в рже
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>В чем может быть ценность этой совместимости, кроме поощрения ленивых и малограмотных? Может, я чего не понимаю?
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Про совместимость по ABI я вообще не говорю — без нее как раз нельзя. Я исключительно про совместимость с C по тексту программы.
Как ты из плюсового текста позовешь сишнию функцию. Например, системных вызов?
Тут вроде как только два пути: или c++ в каком-то виде понимает си, или FFI (Foreign Function Interface), как делается в языках, слишком уж не похожих на Си.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Обратил внимание, что даже в последних стандартах подчеркивается, что ряд особенностей C++ (хотя бы пресловутое сужение типа) существует лишь для совместимости с C. Может, я чего не понимаю?
Дает возможность сишникам использовать фичи С++, но писать в своем стиле.
Вообще, плюс плюсов в том, что можно плюсовать в любом нравящимся разработчику или его организации стиле, будь то си с классами, или метопрограммирование на шаблонах.
Вкратце, философию С++ можно охарактеризовать крылатой фразой
Здравствуйте, пффф, Вы писали:
П>Надо какое-то старьё собрать — будут глобально ставить самый совместимый уровень.
Вот и нехай ставят каждый раз явно. Вроде того, как иные водятлы вставляют затычку в замок ремня безопасности, и пассажирам сразу видно, как данный индивид относится, в том числе, к их безопасности.
Здравствуйте, Pzz, Вы писали:
Pzz>Как ты из плюсового текста позовешь сишнию функцию.
Объявлю ее, как extern "C". Это повлияет только на ABI, и никак не повлияет на правила вычисления фактических параметров, преобразования значения результата и прочее.
Здравствуйте, opfor, Вы писали:
O>Дает возможность сишникам использовать фичи С++, но писать в своем стиле. O>Вообще, плюс плюсов в том, что можно плюсовать в любом нравящимся разработчику или его организации стиле, будь то си с классами, или метопрограммирование на шаблонах.
Вы таки путаете понятие стиля программирования с использованием неявных (и неочевидных) свойств C, единственная выгода от которых — некоторое сокращение текста. Но реальную экономию времени это дает где-нибудь единицам из тысяч, у кого "весь текст программы в голове вместе с машинным кодом", а остальные благополучно потеряют "сэкономленное" время на отладке и поиске непонятных глюков, и вдобавок потратят дополнительное.
Здравствуйте, kov_serg, Вы писали:
_>C++ на этой совместимости до сих пор паразитирует _>Всё очень просто если C++ будет не совместим с C, то он потеряет интерфейс к внешнему миру и будет чуть более чем бесполезен.
+100500
Особенно забавно, как надутые плюсовики со своим "фу, это не C++ way" даже не понимают, что пилят сук, на котором сидят.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Вы таки путаете понятие стиля программирования с использованием неявных (и неочевидных) свойств C, единственная выгода от которых — некоторое сокращение текста. Но реальную экономию времени это дает где-нибудь единицам из тысяч, у кого "весь текст программы в голове вместе с машинным кодом", а остальные благополучно потеряют "сэкономленное" время на отладке и поиске непонятных глюков, и вдобавок потратят дополнительное.
Ну так возможность выстрелить себе в ногу — это не баг, а фича С++
Мне плюсы нравятся за эту свободу.
Здравствуйте, Alekzander, Вы писали:
_>>Всё очень просто если C++ будет не совместим с C, то он потеряет интерфейс к внешнему миру и будет чуть более чем бесполезен.
A>+100500
Вы точно поняли, о чем здесь речь?
A>Особенно забавно, как надутые плюсовики со своим "фу, это не C++ way" даже не понимают, что пилят сук, на котором сидят.
Так это, по сути, не зрелые программисты, которые решают задачу наиболее подходящим набором имеющихся средств, а люди, не вышедшие из стадии ученичества, которые решают любую задачу "как учитель научил", "как старшие показали" и т.п.