Здравствуйте, HunteX, Вы писали:
HX>А вообще сам по себе вопрос не уместен. Без разницы на чем ты кодишь или будешь кодить — важен результат программирования. И если он качественно выполнен — значит ты хороший прогер В итоге все сводится к изучению технологий и архитектур, а язык это так ... инструмент.
Здравствуйте, Mamut, Вы писали:
M>при этом Cassandra/Hdoop/Neo4J и еще вагон и тележка написаны на Java Парадокс-с
Человек не смог назвать ни одного примера, где предпочтительнее использовать шарп или яву, но мнит, при этом, себя экспертом по применению языков. Вот где парадокс то.
Здравствуйте, B0FEE664, Вы писали:
BFE>Чем плохо ?
Тем, что заради наследования исключительно реализации, ты занаследовал публично еще и два контракта. Результат — бардак в контрактах, что куда больнее чем бардак в реализациях.
M>>при этом Cassandra/Hdoop/Neo4J и еще вагон и тележка написаны на Java Парадокс-с
НС>Человек не смог назвать ни одного примера, где предпочтительнее использовать шарп или яву, но мнит, при этом, себя экспертом по применению языков. Вот где парадокс то.
Это то, что Влад любит называть блабом Когда крутишься в одной среде, кажется, что вне этой среды ничего не существует
Здравствуйте, Аноним, Вы писали:
А>А стоит ли сейчас вообще начинать изучать с++? Или лучше браться сразу за другие языки типа c#, java, python?
Всё зависит только от решаемой задачи.
Если нужно писать компьютерную игру или САD/CAE систему — то используем С++.
Если web приложение — C#.
Если автоматизируем рабочее места бухгалтера, кадровика, торговца — 1С.
Вот и весь ответ. Всё остальное, что Вам здесь напишут — пустой флейм.
cli>Для С++ тупо меньше вакансий, выше требования к квалификации, сам язык сложнее и зарплаты в массе своей меньше.
Согласен на все 100%, зарплаты сишников далеко не самые высокие, а требования гораздо более высокие, чем, наприме, к дотнетчику.
Но это в общем — то всё так в мире устроено — кто создаёт реальный продукт, тот имеет гораздо меньший доход, чем тот, кто его продаёт.
Не совсем удачная аналогия, но всё же...
Здравствуйте, anton_t, Вы писали:
_>Тем, что прямоугольник не является ни точкой, ни размером. Прямоугольник содержит точку и размер.
Ну это смотря как посмотреть... Прямоугольник может быть задан двумя точками, например... Суть не в этом, а в том что при множественном наследовании я могу представить структуры данных в мне удобном виде.
Здравствуйте, abibok, Вы писали:
BFE>>class Rectangle : public Point, public Size BFE>>{ BFE>>... BFE>>}; BFE>>[/ccode] BFE>>Чем плохо ?
A>Вы пытаетесь заменить агрегацию наследованием для несвязанных сущностей.
Агрегация единственного объекта может быть заменена наследованием (но не всегда её следует делать public).
А несвязанные сущности в связке дают новую фигуру. Что не так ?
A>В большом проекте это чревато проблемами, когда где-то что-то меняется и в результате в нескольких других местах ломается или начинает работать не так как задумано.
Так будет в любом случае, если не отслеживать иерархию типов (или реализацию интерфейсов). Причём тут множественное наследование?
A>Вот хороший пример на эту тему: есть класс Квадрат и есть класс Прямоугольник. Кто от кого должен наследоваться?
Это как вам удобнее. Что вы в результате хотите получить ? И как это связано со множественным наследованием ?
Ну, а в русле предложенного подхода я бы сделал так.
class Size1D
{
int m_sz;
};
class Size2D : public Size1D, public Size1D
{
...
};
class Rectangle : public Point, public Size2D
{
};
class Square : public Point, public Size1D
{
};
Здравствуйте, Ночной Смотрящий, Вы писали: НС>Здравствуйте, B0FEE664, Вы писали:
BFE>>Чем плохо ? НС>Тем, что заради наследования исключительно реализации, ты занаследовал публично еще и два контракта. Результат — бардак в контрактах, что куда больнее чем бардак в реализациях.
А в чём бардак ? Прямоугольник может быть представим как точка или как размер. Нарушение каких контрактов вы предполагаете ?
Здравствуйте, MasterZiv, Вы писали:
MZ>Всё остальное -- общее программирование, не специфичное для С++ (но имеющее естественно особенности в реализации).
Эти особенности очень уж особенные. Ключевое слово const использовано для того, чтобы и настоящие константы определять (как в C#), так и для того, чтобы определять объекты только для чтения (readonly в C#). Зачем, чтобы сэкономить одно ключевое слово? А явно избыточное ключевое слово class в свое время зачем было введено? И так далее через запятую.
Здравствуйте, igna, Вы писали:
I>Здравствуйте, MasterZiv, Вы писали:
MZ>>Всё остальное -- общее программирование, не специфичное для С++ (но имеющее естественно особенности в реализации).
I>Эти особенности очень уж особенные. Ключевое слово const использовано для того, чтобы и настоящие константы определять (как в C#), так и для того, чтобы определять объекты только для чтения (readonly в C#). Зачем, чтобы сэкономить одно ключевое слово? А явно избыточное ключевое слово class в свое время зачем было введено? И так далее через запятую.
Чем константа отличается от "объекта только для чтения"? Я знаю только одно отличие для глобальных целоцисленных констант — их можно использовать в качестве размера массива, и то это появилось не сразу.
Здравствуйте, Mamut, Вы писали:
MZ>> > А можете привести примеры задач, которые бы вы стали решать только на C++ и MZ>> > почему?
MZ>> Создание СУБД, например.
M>при этом Cassandra/Hdoop/Neo4J и еще вагон и тележка написаны на Java Парадокс-с
Так это ж поделки. Я знаю, что в природе есть компилятор на PL/SQL. Но это ничего не значит.
Здравствуйте, 24, Вы писали:
LVV>>Мои студенты говорят: Кто продрался через С++, для того все перечисленные языки — семечки...
24>Я бы сказал, что тех, кто не смог "продраться" через С++, не стоит подпускать к программированию.
Количество проектов намного превышает возможности тех людей, которые "продрались".
Здравствуйте, MasterZiv, Вы писали:
MZ>On 10.04.2011 23:30, LaptevVV wrote:
>> Мои студенты говорят: Кто продрался через С++, для того все перечисленные языки >> — семечки...
MZ>Это неверно. С++ по концепциям и инновациям -- достаточно простой и MZ>безинновационный язык. Инновационного там пожалуй только шаблоны MZ>(но они не сразу появились в языке) и модель множественного наследования.
О да, особенно "проста" там система типов с автоматическим преобразованием в ссылки, временными объектами, и автоматической инициализацией всего этого. По сравнению со всем этим, хаскель — прост как две копейки.
Здравствуйте, esil, Вы писали:
E>Здравствуйте, Mamut, Вы писали:
MZ>>> > А можете привести примеры задач, которые бы вы стали решать только на C++ и MZ>>> > почему?
MZ>>> Создание СУБД, например.
M>>при этом Cassandra/Hdoop/Neo4J и еще вагон и тележка написаны на Java Парадокс-с
E>Так это ж поделки. Я знаю, что в природе есть компилятор на PL/SQL. Но это ничего не значит.
Ну-ну, назвать production-ready graph базу данных поделкой — это сильно
Здравствуйте, B0FEE664, Вы писали:
НС>>Тем, что заради наследования исключительно реализации, ты занаследовал публично еще и два контракта. Результат — бардак в контрактах, что куда больнее чем бардак в реализациях. BFE>А в чём бардак ?
Лишние ненужные сущности.
BFE> Прямоугольник может быть представим как точка или как размер.
Логически — нет.
BFE> Нарушение каких контрактов вы предполагаете ?