| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Пару вопросов о наболевшем |
| Автор: sidiakin 13.8.2013, 20:38 |
| Вот мне нравится язык С++, но то как там сделано ООП прост ужас. Вот мне интересно люди кто работает С++ -программистами действительно пишут в стиле ООП или это не обязательно? Я бы с удовольствием работал на Си, но если ООП для Сишников обязательно, то лучше какойнить C# И вот интересно. В новом ЯП Go отсутствует ООП. Получается что ООП себя не оправдало? Оказалось что оно никому не нужно |
| Автор: kemiisto 13.8.2013, 23:14 | ||||
И в чём же ужас?
Пишут. Обязательно или нет - это зависит от задачи. Это откуда информация? Я бегло глянул, есть там ООП. Наследования нет. Так оно к ООП имеет опосредованное отношение. Нужен полиморфизм, а как он реализован на языковом уровне - дело десятое. А полиморфизм в go есть. Вывод странный. "Классическое" ООП на манер C++/Java, да, пожалуй не самое оно, но к ООП вообще это отношения не имеет. |
| Автор: NoviceF 14.8.2013, 08:13 |
Так а при чём тогда c++? И чем c# лучше в плане ООП? |
| Автор: jsharp36 14.8.2013, 09:08 |
| Пока альтернативы особой ООП нет. Например, функциональные языки - отличная штука, но всё составляется из функций - это математика. ООП - всё составляется из функций и объектов - это близко к естественному языку - предложения требуют подлежащего и сказуемого. Это ад, конечно, с т.з. правильности моделирования. В естественном языке и свет светит и ветер дует (хотя нет объекта ветер и действия дуть, также как нет объекта свет и его отдельного действия свечения). В ООП этот ад на проектах всяких энтерпрайзов в моделях тоже проявляется. В объектах "бизнес-правило", в паттернах. Но что поделать, так устроено мышление большинства людей. А значит удобно, низкий порог вхождения. С++ и С# мало чем в ООП отличаются, кроме отсутствия в последнем множественного наследования. Если это хорошо, то в первом есть возможность его не использовать. Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id520a6f366ccc19bb72000002#findElement_E7045_520b1eef6ccc19d40c000483_0 |
| Автор: kemiisto 14.8.2013, 09:28 | ||
Точнее, в C# (как и в Java) нет множественного наследования реализации, а есть только множественное наследование интерфейса. Но это тоже палка о двух концах, так как часто пораждает кучу одинакового кода в классах, реализующих один и тот же интерфейс. Поэтому многие новомодные языки поддерживают механизм примесей (mixin). C#, вроде, даже и сам как-то там поддерживает на уровне библиотек. |
| Автор: bsa 14.8.2013, 13:05 |
| jsharp36, ООП к языку не имеет никакого отношения. Другое дело, что в одних языках его использовать удобней, чем в других. Посмотри например на SDL и на ядро Linux - типичные ОО программы, но на языке С. Так что тут дело в головах, а не языках. |
| Автор: jsharp36 14.8.2013, 13:53 | ||
Я не утверждал, что ООП гвоздями прибито к языку. Но вообще, отношение имеет. Язык определяет мышление. Т.е. инструмент определяет, как им удобнее пользоваться. Да, я в своем сообщении подразумевал ООП джавовского, С++-сного типа. И популярность ООП связана с нашим естественным мышлением и его недостатками. Отсюда и недостатки ООП. Любая парадигма не имеет прямого отношения к языку. Но тем не менее, одни языки предрасполагают к ООП, другие нет. Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id520a6f366ccc19bb72000002#findElement_E7045_520b61a86ccc190e42002352_0 |