В C++ нет никакой совместимости с С и никогда не было (кроме замшелых времен "C with classes"). Миф о совместимости C++ с С существует только в головах студентов, которые не сумели изучить ничего больше, чем какое-то куцее С-подобное подмножество С++, да и то знают плохо. Схожесть С и С++ существует только на уровне syntactic sugar и общих деталей абстрактной платформы, но семантики этих языков различаются фундаментально, причем с самого начала стандартизованных времен.OtherSide wrote: 11 Jan 2018 21:29В общем мысль, что плюсы погубила совместимость с си, по хорошему на плюсах в ООП стиле оч. редко писали.
А был ли мальчик? (помянем плюсы)
-
- Уже с Приветом
- Posts: 3003
- Joined: 14 Apr 2004 01:11
- Location: SFBA (было: Минск, Беларусь)
Re: А был ли мальчик? (помянем плюсы)
Best regards,
Андрей
Андрей
-
- Уже с Приветом
- Posts: 15526
- Joined: 27 Sep 2007 22:53
Re: А был ли мальчик? (помянем плюсы)
Под совместимостью наверное имеется ввиду что С в целом является подмножеством С++ и программа, написанная на С, будет компилироваться средой С++. Понятно, что стандарт 97 года устанавливает эту совместимость не абсолютной.
-
- Уже с Приветом
- Posts: 1486
- Joined: 28 Jan 2002 10:01
Re: А был ли мальчик? (помянем плюсы)
Я немного сам говорил по французски и больше разбирался что говорили. Лягушатники, что скажешь?StrangerR wrote:Я весьма немного сам писал на C++, и побольше разбирался в чьем то коде. Темплейты - хороший способ запутать все насмерть.
Sent from my Nexus 6P using Tapatalk
-
- Уже с Приветом
- Posts: 803
- Joined: 24 Jan 2007 07:32
- Location: Сергели->Новосибирск->SFBA->Новосибирск->Москва->NY->SFBA
Re: А был ли мальчик? (помянем плюсы)
+100 про темплейты.Medium-rare wrote: 12 Jan 2018 05:52 * В C++, как C с классами, нет ничего плохого. Но порядок в коде без лишнего напряжения, если есть хорошая композиция объектов в дизайне.
* Трудно сказать, что C++ это есть C с классами, когда применяются templates, ибо их нет в C. Standard Template Library теперь просто неотъемлимая часть языка C++, и её большая часть C++ программистов, или другую template library, или свои собственные templates используют. Или (чаще) более одной.
* Вам не повезло.
std::vector<std::string> vctOfStrings; // уже точно никакой не C
По сути ООП в классическом виде в С++ не нужно.
1. Наследование в топку. Используем аггрегацию.
2. Полиморфное поведение экземпляров классов за счёт использования виртуальных методов в топку
2. Инкапсуляция по сути тоже не особо нужна (we are adults here).
Мне лично нравится идея использовать Микс-ыны.
Вместо классов использовать только структуры как контейнеры или для RAII-поведения.
Спи быстрее, твоя подушка нужна другому. Copyright Зощенко
-
- Уже с Приветом
- Posts: 3003
- Joined: 14 Apr 2004 01:11
- Location: SFBA (было: Минск, Беларусь)
Re: А был ли мальчик? (помянем плюсы)
Понятно, что без необходимости от этого отступать не хотели. Но уже с самого первого стандарта С++ (С++98) такой совместимости не было в целом ряде деталей. А на уровне семантики выражений различия сразу были фундаментальные: С - lvalue-discarding язык, С++ - lvalue-preserving язык.Мальчик-Одуванчик wrote: 12 Jan 2018 22:01 Под совместимостью наверное имеется ввиду что С в целом является подмножеством С++ и программа, написанная на С, будет компилироваться средой С++.
Best regards,
Андрей
Андрей
-
- Уже с Приветом
- Posts: 12017
- Joined: 08 Sep 2006 20:07
- Location: Силиконка
Re: А был ли мальчик? (помянем плюсы)
Вот блин, как же я жил то до сих пор без таких фундаментальных знаний!AndreyT wrote: 13 Jan 2018 00:59 А на уровне семантики выражений различия сразу были фундаментальные: С - lvalue-discarding язык, С++ - lvalue-preserving язык.
![Smile :-)](./images/smilies/smile.gif)
Мир Украине. Свободу России.
-
- Уже с Приветом
- Posts: 9195
- Joined: 04 Mar 2011 03:04
- Location: SFBA
Re: А был ли мальчик? (помянем плюсы)
* Template: если базовый тип коллекции мутирует. wrapper для указателя и т.п.
* Inheritance: если вам нужна большая заготовка со сложным предопределённым поведением, как элемент UI, в котором надо переопределить сколько-то хэндлеров, и чем дольше пишете этот UI, тем обычно, больше. Иначе что? Возьмёте такой template с десятком, а то и сотней параметризующих типов?
Вот в Qt есть и то, и другое. Хотя они сами говорят, вместо наших контейнеров и врапперов используйте уже один STL. А всё остальное, если C++ код писать - то наследовать от их базы, а то как ещё? Помню такой фреймворк WTL майкрософтовский, тимплейтный UI, ага. Так он хорош "отсюда до сюда", и если что, писать-непереписать.
... and even then it's rare that you'll be going there...
-
- Уже с Приветом
- Posts: 3003
- Joined: 14 Apr 2004 01:11
- Location: SFBA (было: Минск, Беларусь)
Re: А был ли мальчик? (помянем плюсы)
Это нормально. И в С, и в С++ хватает людей, знающих эти языки на уровне Машины Тьюринга: указатель, `++`, `--` и прочитать/записать. И таки живут как-то.M. Ridcully wrote: 13 Jan 2018 01:37Вот блин, как же я жил то до сих пор без таких фундаментальных знаний!AndreyT wrote: 13 Jan 2018 00:59 А на уровне семантики выражений различия сразу были фундаментальные: С - lvalue-discarding язык, С++ - lvalue-preserving язык.![]()
На связанную тему: как кто-то остроумно заметил, "Первым шагом в изучении языка С является понимание того, что массив является указателем. Вторым шагом в изучении языка С является понимание того, что массив НЕ является указателем". Сколько я вижу "экспердов" по С, годами работающих "в индустрии", но при этом безнадежно застрявших на первом шаге и с воинственным отторжением воспринимающих второй... И да, все эти люди все это время "жили до сих пор без таких фундаментальных знаний".
Best regards,
Андрей
Андрей
-
- Уже с Приветом
- Posts: 15526
- Joined: 27 Sep 2007 22:53
Re: А был ли мальчик? (помянем плюсы)
Кортежи (tuples) тоже удобны в этом плане.Pantigalt wrote: 13 Jan 2018 00:51 Вместо классов использовать только структуры как контейнеры или для RAII-поведения.
-
- Уже с Приветом
- Posts: 12017
- Joined: 08 Sep 2006 20:07
- Location: Силиконка
Re: А был ли мальчик? (помянем плюсы)
Ну не всем же быть в top 0.03% on SOAndreyT wrote: 13 Jan 2018 01:50Это нормально. И в С, и в С++ хватает людей, знающих эти языки на уровне Машины Тьюринга: указатель, `++`, `--` и прочитать/записать. И таки живут как-то.M. Ridcully wrote: 13 Jan 2018 01:37Вот блин, как же я жил то до сих пор без таких фундаментальных знаний!AndreyT wrote: 13 Jan 2018 00:59 А на уровне семантики выражений различия сразу были фундаментальные: С - lvalue-discarding язык, С++ - lvalue-preserving язык.![]()
![Very Happy :D](./images/smilies/biggrin.gif)
Кстати, раз уж об этом заговорили - чего это фундаментальное знание означает, и какие практические выводы / руководства к действию из него следуют, так сказать?
Мир Украине. Свободу России.
-
- Уже с Приветом
- Posts: 15798
- Joined: 01 Mar 2008 15:14
Re: А был ли мальчик? (помянем плюсы)
В каком смысле, практически любой С код компилятор плюсов соберет.AndreyT wrote: 12 Jan 2018 21:36В C++ нет никакой совместимости с С и никогда не было (кроме замшелых времен "C with classes"). Миф о совместимости C++ с С существует только в головах студентов, которые не сумели изучить ничего больше, чем какое-то куцее С-подобное подмножество С++, да и то знают плохо. Схожесть С и С++ существует только на уровне syntactic sugar и общих деталей абстрактной платформы, но семантики этих языков различаются фундаментально, причем с самого начала стандартизованных времен.OtherSide wrote: 11 Jan 2018 21:29В общем мысль, что плюсы погубила совместимость с си, по хорошему на плюсах в ООП стиле оч. редко писали.
А так это то о чем я говорю, плюсы погубило именно идентичность синтаксиса при другой семантике.
-
- Уже с Приветом
- Posts: 9195
- Joined: 04 Mar 2011 03:04
- Location: SFBA
Re: А был ли мальчик? (помянем плюсы)
Точно. Но мы о том догадываемся, только читая этот тред.
... and even then it's rare that you'll be going there...
-
- Уже с Приветом
- Posts: 15798
- Joined: 01 Mar 2008 15:14
Re: А был ли мальчик? (помянем плюсы)
Можно конечно говорить что они живее всех живых но по факту труп, это давно не основной язык для написания коммерческих приложений, стал нишевым
-
- Уже с Приветом
- Posts: 9195
- Joined: 04 Mar 2011 03:04
- Location: SFBA
Re: А был ли мальчик? (помянем плюсы)
У вас замечательный такой провокационный стиль. Главное, если не соглашаться, не принимать такую провокационную позицию: C++ никогда не был основным языком написания коммерческих приложений, и не претендовал на то.OtherSide wrote: 13 Jan 2018 21:24 Можно конечно говорить что они живее всех живых но по факту труп, это давно не основной язык для написания коммерческих приложений, стал нишевым
... убрал нафиг... Входит ли наше приложение в группу "основных коммерческих"? Менее всего меня заботит эта группа, а работа даёт платить за дом и др.
... and even then it's rare that you'll be going there...
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: А был ли мальчик? (помянем плюсы)
Тема и правда ржачная
![Very Happy :D](./images/smilies/biggrin.gif)
Плюсы сейчас можно сказать hardcore, Юникс обогнали
https://www.youtube.com/watch?v=wOwblaKmyVw