Ценность совместимости C++ с C
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 26.07.24 20:30
Оценка:
Обратил внимание, что даже в последних стандартах подчеркивается, что ряд особенностей C++ (хотя бы пресловутое сужение типа) существует лишь для совместимости с C.

Насколько это востребовано вообще? Ладно, где-нибудь в начале-середине 90-х, когда в C++ устоялись еще не все базовые свойства, и многие банально опасались переходить с C, не зная, куда оно в итоге повернется. Но уже где-то к концу 90-х основные вещи устаканились и, если в последующие лет десять кто-то не переписал свой софт на C++, то уже вряд ли стал это делать позднее. Или до сих пор переписывают в товарных количествах?

С другой стороны, я еще с конца 90-х привык для каждого нового проекта (в том числе переносимого с C) включать все возможные предупреждения, отключая явно лишь наиболее очевидные. Понятно, что на сишных текстах такой режим выдавал сотни-тысячи предупреждений, и какое-то время уходило на правку, зато все остальное время можно было не опасаться где-то незаметно накосячить. В этом смысле даже базовый (без дополнительного анализа со стороны компилятора) контроль типов в C++ гораздо правильнее либерального сишного.

В чем может быть ценность этой совместимости, кроме поощрения ленивых и малограмотных? Может, я чего не понимаю?

P.S. Речь исключительно о совместимости по синтакису/семантике кода. К связыванию и ABI вопрос не относился.
Отредактировано 05.08.2024 16:14 Евгений Музыченко . Предыдущая версия .
Re: Ценность совместимости C++ с C
От: пффф  
Дата: 26.07.24 20:37
Оценка: +1
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Обратил внимание, что даже в последних стандартах подчеркивается, что ряд особенностей C++ (хотя бы пресловутое сужение типа) существует лишь для совместимости с C.


Дык, эта. Куча плюсового кода написана с учетом этих правил, и если их поменять, сломается пол мира. И никто старый код переписывать не будет только для того, чтобы он соответствовал новым стандартам. А если в новый стандарт протащат отказ от этой совместимости, то уверен, кто-нибудь да не поскупиться и закажет их.

А так — где можно — отказываются. register выкинули, auto полностью смысл поменяло
Re: Ценность совместимости C++ с C
От: kov_serg Россия  
Дата: 26.07.24 20:54
Оценка: +4 :)
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Обратил внимание, что даже в последних стандартах подчеркивается, что ряд особенностей C++ (хотя бы пресловутое сужение типа) существует лишь для совместимости с C.

C++ на этой совместимости до сих пор паразитирует

ЕМ>Насколько это востребовано вообще? Ладно, где-нибудь в начале-середине 90-х, когда в C++ устоялись еще не все базовые свойства, и многие банально опасались переходить с C, не зная, куда оно в итоге повернется. Но уже где-то к концу 90-х основные вещи устаканились и, если в последующие лет десять кто-то не переписал свой софт на C++, то уже вряд ли стал это делать позднее. Или до сих пор переписывают в товарных количествах?


ЕМ>В чем может быть ценность этой совместимости, кроме поощрения ленивых и малограмотных? Может, я чего не понимаю?


Всё очень просто если C++ будет не совместим с C, то он потеряет интерфейс к внешнему миру и будет чуть более чем бесполезен.
Подключение динамических библиотек C++ к чему-то еще очень весёлое занятие.
Re[2]: Ценность совместимости C++ с C
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 26.07.24 21:26
Оценка:
Здравствуйте, пффф, Вы писали:

П>Куча плюсового кода написана с учетом этих правил, и если их поменять, сломается пол мира. И никто старый код переписывать не будет только для того, чтобы он соответствовал новым стандартам. А если в новый стандарт протащат отказ от этой совместимости, то уверен, кто-нибудь да не поскупиться и закажет их.


Дык, если это делать, то делать грамотно. Ввести в язык способ явного объявления уровней совместимости, чтоб можно было описать их прямо в тексте, а не россыпью ключей компилятора или прагм, которые у всех разные. По умолчанию включать максимально строгий контроль, и нехай каждый, кому это не нравится, явно пишет в тексте "я умнее компилятора, я сам буду все контролировать, не пропущу ни одной мелочи". У тех, кто понимает толк, это довольно быстро станет стандартом де-факто, а на тех, кто ставит либеральные режимы, будут смотреть так же, как сейчас смотрят на любителей C-style cast или передачи объектов через void *.
Re[2]: Ценность совместимости C++ с C
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 26.07.24 21:27
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>если C++ будет не совместим с C, то он потеряет интерфейс к внешнему миру


Про совместимость по ABI я вообще не говорю — без нее как раз нельзя. Я исключительно про совместимость с C по тексту программы.
Re[3]: Ценность совместимости C++ с C
От: пффф  
Дата: 26.07.24 21:30
Оценка: :)
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Дык, если это делать, то делать грамотно. Ввести в язык способ явного объявления уровней совместимости, чтоб можно было описать их прямо в тексте, а не россыпью ключей компилятора или прагм, которые у всех разные. По умолчанию включать максимально строгий контроль, и нехай каждый, кому это не нравится, явно пишет в тексте "я умнее компилятора, я сам буду все контролировать, не пропущу ни одной мелочи". У тех, кто понимает толк, это довольно быстро станет стандартом де-факто, а на тех, кто ставит либеральные режимы, будут смотреть так же, как сейчас смотрят на любителей C-style cast или передачи объектов через void *.


Ты потом первый прибежишь с криками: "что за очередную #$%нину в плюсики вкорячили?"
Re[3]: Ценность совместимости C++ с C
От: пффф  
Дата: 26.07.24 21:36
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

_>>если C++ будет не совместим с C, то он потеряет интерфейс к внешнему миру


ЕМ>Про совместимость по ABI я вообще не говорю — без нее как раз нельзя. Я исключительно про совместимость с C по тексту программы.


Чтобы можно было итеративно улучшать сишное говно, потихоньку переделывая его на нормальном языке, а не выкидывать сразу всё старое в мусорку и не писать заново на другом языке
Re: Ценность совместимости C++ с C
От: reversecode google
Дата: 26.07.24 21:37
Оценка: -2
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Обратил внимание, что даже в последних стандартах подчеркивается, что ряд особенностей C++ (хотя бы пресловутое сужение типа) существует лишь для совместимости с C.


https://eel.is/c++draft/
где именно это упоминается ?
Re[3]: Ценность совместимости C++ с C
От: пффф  
Дата: 26.07.24 21:44
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>По умолчанию включать максимально строгий контроль, и нехай каждый, кому это не нравится, явно пишет в тексте "я умнее компилятора, я сам буду все контролировать, не пропущу ни одной мелочи".


Да, это сразу гемор. Надо какое-то старьё собрать — будут глобально ставить самый совместимый уровень. Да и вообще, режим максимальной совместимости просто будут сразу по умолчанию ставить.
Иначе будет похоже на вечную борьбу с боромиром чекеров в рже
Re: Ценность совместимости C++ с C
От: Pzz Россия https://github.com/alexpevzner
Дата: 26.07.24 22:01
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>В чем может быть ценность этой совместимости, кроме поощрения ленивых и малограмотных? Может, я чего не понимаю?


Возможность вызывать Сишный API из C++.
Re[3]: Ценность совместимости C++ с C
От: Pzz Россия https://github.com/alexpevzner
Дата: 26.07.24 22:04
Оценка: :)
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Про совместимость по ABI я вообще не говорю — без нее как раз нельзя. Я исключительно про совместимость с C по тексту программы.


Как ты из плюсового текста позовешь сишнию функцию. Например, системных вызов?

Тут вроде как только два пути: или c++ в каком-то виде понимает си, или FFI (Foreign Function Interface), как делается в языках, слишком уж не похожих на Си.
Re: Ценность совместимости C++ с C
От: opfor  
Дата: 26.07.24 22:49
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Обратил внимание, что даже в последних стандартах подчеркивается, что ряд особенностей C++ (хотя бы пресловутое сужение типа) существует лишь для совместимости с C. Может, я чего не понимаю?


Дает возможность сишникам использовать фичи С++, но писать в своем стиле.
Вообще, плюс плюсов в том, что можно плюсовать в любом нравящимся разработчику или его организации стиле, будь то си с классами, или метопрограммирование на шаблонах.

Вкратце, философию С++ можно охарактеризовать крылатой фразой

кто как хочет, так и др-чит.

Re[4]: Ценность совместимости C++ с C
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 27.07.24 07:45
Оценка:
Здравствуйте, пффф, Вы писали:

П>Чтобы можно было итеративно улучшать сишное говно, потихоньку переделывая его на нормальном языке


Я же сказал, что вполне допускаю, что лет двадцать-тридцать назад кто-то еще это делал. За последние лет пятнадцать примеры есть?
Re[4]: Ценность совместимости C++ с C
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 27.07.24 07:49
Оценка:
Здравствуйте, пффф, Вы писали:

П>Надо какое-то старьё собрать — будут глобально ставить самый совместимый уровень.


Вот и нехай ставят каждый раз явно. Вроде того, как иные водятлы вставляют затычку в замок ремня безопасности, и пассажирам сразу видно, как данный индивид относится, в том числе, к их безопасности.
Re[2]: Ценность совместимости C++ с C
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 27.07.24 07:50
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Возможность вызывать Сишный API из C++.


Не о нем речь.
Re[4]: Ценность совместимости C++ с C
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 27.07.24 07:51
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Как ты из плюсового текста позовешь сишнию функцию.


Объявлю ее, как extern "C". Это повлияет только на ABI, и никак не повлияет на правила вычисления фактических параметров, преобразования значения результата и прочее.
Re[2]: Ценность совместимости C++ с C
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 27.07.24 07:57
Оценка:
Здравствуйте, opfor, Вы писали:

O>Дает возможность сишникам использовать фичи С++, но писать в своем стиле.

O>Вообще, плюс плюсов в том, что можно плюсовать в любом нравящимся разработчику или его организации стиле, будь то си с классами, или метопрограммирование на шаблонах.

Вы таки путаете понятие стиля программирования с использованием неявных (и неочевидных) свойств C, единственная выгода от которых — некоторое сокращение текста. Но реальную экономию времени это дает где-нибудь единицам из тысяч, у кого "весь текст программы в голове вместе с машинным кодом", а остальные благополучно потеряют "сэкономленное" время на отладке и поиске непонятных глюков, и вдобавок потратят дополнительное.
Re[2]: Ценность совместимости C++ с C
От: Alekzander  
Дата: 27.07.24 08:07
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>C++ на этой совместимости до сих пор паразитирует

_>Всё очень просто если C++ будет не совместим с C, то он потеряет интерфейс к внешнему миру и будет чуть более чем бесполезен.

+100500

Особенно забавно, как надутые плюсовики со своим "фу, это не C++ way" даже не понимают, что пилят сук, на котором сидят.
Re[3]: Ценность совместимости C++ с C
От: opfor  
Дата: 27.07.24 08:26
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Вы таки путаете понятие стиля программирования с использованием неявных (и неочевидных) свойств C, единственная выгода от которых — некоторое сокращение текста. Но реальную экономию времени это дает где-нибудь единицам из тысяч, у кого "весь текст программы в голове вместе с машинным кодом", а остальные благополучно потеряют "сэкономленное" время на отладке и поиске непонятных глюков, и вдобавок потратят дополнительное.


Ну так возможность выстрелить себе в ногу — это не баг, а фича С++
Мне плюсы нравятся за эту свободу.
Re[3]: Ценность совместимости C++ с C
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 27.07.24 09:04
Оценка:
Здравствуйте, Alekzander, Вы писали:

_>>Всё очень просто если C++ будет не совместим с C, то он потеряет интерфейс к внешнему миру и будет чуть более чем бесполезен.


A>+100500


Вы точно поняли, о чем здесь речь?

A>Особенно забавно, как надутые плюсовики со своим "фу, это не C++ way" даже не понимают, что пилят сук, на котором сидят.


Так это, по сути, не зрелые программисты, которые решают задачу наиболее подходящим набором имеющихся средств, а люди, не вышедшие из стадии ученичества, которые решают любую задачу "как учитель научил", "как старшие показали" и т.п.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.