А был ли мальчик? (помянем плюсы)

User avatar
AndreyT
Уже с Приветом
Posts: 3003
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Re: А был ли мальчик? (помянем плюсы)

Post by AndreyT »

OtherSide wrote: 11 Jan 2018 21:29В общем мысль, что плюсы погубила совместимость с си, по хорошему на плюсах в ООП стиле оч. редко писали.
В C++ нет никакой совместимости с С и никогда не было (кроме замшелых времен "C with classes"). Миф о совместимости C++ с С существует только в головах студентов, которые не сумели изучить ничего больше, чем какое-то куцее С-подобное подмножество С++, да и то знают плохо. Схожесть С и С++ существует только на уровне syntactic sugar и общих деталей абстрактной платформы, но семантики этих языков различаются фундаментально, причем с самого начала стандартизованных времен.
Best regards,
Андрей
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15526
Joined: 27 Sep 2007 22:53

Re: А был ли мальчик? (помянем плюсы)

Post by Мальчик-Одуванчик »

Под совместимостью наверное имеется ввиду что С в целом является подмножеством С++ и программа, написанная на С, будет компилироваться средой С++. Понятно, что стандарт 97 года устанавливает эту совместимость не абсолютной.
Andriy777
Уже с Приветом
Posts: 1486
Joined: 28 Jan 2002 10:01

Re: А был ли мальчик? (помянем плюсы)

Post by Andriy777 »

StrangerR wrote:Я весьма немного сам писал на C++, и побольше разбирался в чьем то коде. Темплейты - хороший способ запутать все насмерть.
Я немного сам говорил по французски и больше разбирался что говорили. Лягушатники, что скажешь?

Sent from my Nexus 6P using Tapatalk

Pantigalt
Уже с Приветом
Posts: 803
Joined: 24 Jan 2007 07:32
Location: Сергели->Новосибирск->SFBA->Новосибирск->Москва->NY->SFBA

Re: А был ли мальчик? (помянем плюсы)

Post by Pantigalt »

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
+100 про темплейты.
По сути ООП в классическом виде в С++ не нужно.

1. Наследование в топку. Используем аггрегацию.
2. Полиморфное поведение экземпляров классов за счёт использования виртуальных методов в топку
2. Инкапсуляция по сути тоже не особо нужна (we are adults here).

Мне лично нравится идея использовать Микс-ыны.
Вместо классов использовать только структуры как контейнеры или для RAII-поведения.
Спи быстрее, твоя подушка нужна другому. Copyright Зощенко
User avatar
AndreyT
Уже с Приветом
Posts: 3003
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Re: А был ли мальчик? (помянем плюсы)

Post by AndreyT »

Мальчик-Одуванчик wrote: 12 Jan 2018 22:01 Под совместимостью наверное имеется ввиду что С в целом является подмножеством С++ и программа, написанная на С, будет компилироваться средой С++.
Понятно, что без необходимости от этого отступать не хотели. Но уже с самого первого стандарта С++ (С++98) такой совместимости не было в целом ряде деталей. А на уровне семантики выражений различия сразу были фундаментальные: С - lvalue-discarding язык, С++ - lvalue-preserving язык.
Best regards,
Андрей
User avatar
M. Ridcully
Уже с Приветом
Posts: 12017
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: А был ли мальчик? (помянем плюсы)

Post by M. Ridcully »

AndreyT wrote: 13 Jan 2018 00:59 А на уровне семантики выражений различия сразу были фундаментальные: С - lvalue-discarding язык, С++ - lvalue-preserving язык.
Вот блин, как же я жил то до сих пор без таких фундаментальных знаний! :-)
Мир Украине. Свободу России.
User avatar
Medium-rare
Уже с Приветом
Posts: 9195
Joined: 04 Mar 2011 03:04
Location: SFBA

Re: А был ли мальчик? (помянем плюсы)

Post by Medium-rare »

Pantigalt wrote: 13 Jan 2018 00:51 1. Наследование в топку. Используем аггрегацию.
* Template: если базовый тип коллекции мутирует. wrapper для указателя и т.п.
* Inheritance: если вам нужна большая заготовка со сложным предопределённым поведением, как элемент UI, в котором надо переопределить сколько-то хэндлеров, и чем дольше пишете этот UI, тем обычно, больше. Иначе что? Возьмёте такой template с десятком, а то и сотней параметризующих типов?

Вот в Qt есть и то, и другое. Хотя они сами говорят, вместо наших контейнеров и врапперов используйте уже один STL. А всё остальное, если C++ код писать - то наследовать от их базы, а то как ещё? Помню такой фреймворк WTL майкрософтовский, тимплейтный UI, ага. Так он хорош "отсюда до сюда", и если что, писать-непереписать.
... and even then it's rare that you'll be going there...
User avatar
AndreyT
Уже с Приветом
Posts: 3003
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Re: А был ли мальчик? (помянем плюсы)

Post by AndreyT »

M. Ridcully wrote: 13 Jan 2018 01:37
AndreyT wrote: 13 Jan 2018 00:59 А на уровне семантики выражений различия сразу были фундаментальные: С - lvalue-discarding язык, С++ - lvalue-preserving язык.
Вот блин, как же я жил то до сих пор без таких фундаментальных знаний! :-)
Это нормально. И в С, и в С++ хватает людей, знающих эти языки на уровне Машины Тьюринга: указатель, `++`, `--` и прочитать/записать. И таки живут как-то.

На связанную тему: как кто-то остроумно заметил, "Первым шагом в изучении языка С является понимание того, что массив является указателем. Вторым шагом в изучении языка С является понимание того, что массив НЕ является указателем". Сколько я вижу "экспердов" по С, годами работающих "в индустрии", но при этом безнадежно застрявших на первом шаге и с воинственным отторжением воспринимающих второй... И да, все эти люди все это время "жили до сих пор без таких фундаментальных знаний".
Best regards,
Андрей
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15526
Joined: 27 Sep 2007 22:53

Re: А был ли мальчик? (помянем плюсы)

Post by Мальчик-Одуванчик »

Pantigalt wrote: 13 Jan 2018 00:51 Вместо классов использовать только структуры как контейнеры или для RAII-поведения.
Кортежи (tuples) тоже удобны в этом плане.
User avatar
M. Ridcully
Уже с Приветом
Posts: 12017
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: А был ли мальчик? (помянем плюсы)

Post by M. Ridcully »

AndreyT 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 язык.
Вот блин, как же я жил то до сих пор без таких фундаментальных знаний! :-)
Это нормально. И в С, и в С++ хватает людей, знающих эти языки на уровне Машины Тьюринга: указатель, `++`, `--` и прочитать/записать. И таки живут как-то.
Ну не всем же быть в top 0.03% on SO :D

Кстати, раз уж об этом заговорили - чего это фундаментальное знание означает, и какие практические выводы / руководства к действию из него следуют, так сказать?
Мир Украине. Свободу России.
OtherSide
Уже с Приветом
Posts: 15798
Joined: 01 Mar 2008 15:14

Re: А был ли мальчик? (помянем плюсы)

Post by OtherSide »

AndreyT wrote: 12 Jan 2018 21:36
OtherSide wrote: 11 Jan 2018 21:29В общем мысль, что плюсы погубила совместимость с си, по хорошему на плюсах в ООП стиле оч. редко писали.
В C++ нет никакой совместимости с С и никогда не было (кроме замшелых времен "C with classes"). Миф о совместимости C++ с С существует только в головах студентов, которые не сумели изучить ничего больше, чем какое-то куцее С-подобное подмножество С++, да и то знают плохо. Схожесть С и С++ существует только на уровне syntactic sugar и общих деталей абстрактной платформы, но семантики этих языков различаются фундаментально, причем с самого начала стандартизованных времен.
В каком смысле, практически любой С код компилятор плюсов соберет.
А так это то о чем я говорю, плюсы погубило именно идентичность синтаксиса при другой семантике.
User avatar
Medium-rare
Уже с Приветом
Posts: 9195
Joined: 04 Mar 2011 03:04
Location: SFBA

Re: А был ли мальчик? (помянем плюсы)

Post by Medium-rare »

OtherSide wrote: 13 Jan 2018 21:15 плюсы погубило
Точно. Но мы о том догадываемся, только читая этот тред.
... and even then it's rare that you'll be going there...
OtherSide
Уже с Приветом
Posts: 15798
Joined: 01 Mar 2008 15:14

Re: А был ли мальчик? (помянем плюсы)

Post by OtherSide »

Medium-rare wrote: 13 Jan 2018 21:18
OtherSide wrote: 13 Jan 2018 21:15 плюсы погубило
Точно. Но мы о том догадываемся, только читая этот тред.
Можно конечно говорить что они живее всех живых но по факту труп, это давно не основной язык для написания коммерческих приложений, стал нишевым
User avatar
Medium-rare
Уже с Приветом
Posts: 9195
Joined: 04 Mar 2011 03:04
Location: SFBA

Re: А был ли мальчик? (помянем плюсы)

Post by Medium-rare »

OtherSide wrote: 13 Jan 2018 21:24 Можно конечно говорить что они живее всех живых но по факту труп, это давно не основной язык для написания коммерческих приложений, стал нишевым
У вас замечательный такой провокационный стиль. Главное, если не соглашаться, не принимать такую провокационную позицию: C++ никогда не был основным языком написания коммерческих приложений, и не претендовал на то.

... убрал нафиг... Входит ли наше приложение в группу "основных коммерческих"? Менее всего меня заботит эта группа, а работа даёт платить за дом и др.
... and even then it's rare that you'll be going there...
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: А был ли мальчик? (помянем плюсы)

Post by Сабина »

Medium-rare wrote: 13 Jan 2018 21:18
OtherSide wrote: 13 Jan 2018 21:15 плюсы погубило
Точно. Но мы о том догадываемся, только читая этот тред.
Тема и правда ржачная :D
Плюсы сейчас можно сказать hardcore, Юникс обогнали
https://www.youtube.com/watch?v=wOwblaKmyVw

Return to “Вопросы и новости IT”