C vs C++
, Не опять а снова
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.141] |
|
|
Правила раздела:
| Страницы: (37) « Первая ... 7 8 [9] 10 11 ... 36 37 ( Перейти к последнему сообщению ) |
C vs C++
, Не опять а снова
|
Сообщ.
#121
,
|
|
|
|
Ах, простите великодушно - сразу не опознал, что вас интересуют версии, а не как оно на самом деле. Впредь не стану вам мешать искать ту, что больше нравится. |
|
Сообщ.
#122
,
|
|
|
|
Цитата sergioK @ D_KEY В целом да если вникать в суть ,а не тупо не повторять его слишком эмоциональную фразу, Ну так чем не ответ ?Еще есть софт, который был написан изначально непрограммистами(как nginx, который писал сисадмин). Они вполне могут знать Си, в этом ничего удивительного нет. Но вот вряд ли они будут знать С++ на достаточном уровне. |
|
Сообщ.
#123
,
|
|
|
|
Давай я попробую. Смотри. Язык (любой: естественный, компьютерный) - это средство выражения мысли. Причём, правила языка определяют форму того, как эта мысль будет выражена. Используя язык в течение длительного времени (когда ты начинаешь на языке думать, а не переводить с одного на другое) язык начинает оказывать влияние на способ собственно мышления, способ формулирования, набор категорий, в которых мыслишь и т. п. Будешь использовать Haskel - начнёшь мыслить в категории чистых функций, лямбд, монад и прочего. Будешь использовать SQL - начнёшь думать в терминах запросов, связок таблиц, подзапросов и т. д. Способ структурирования программы, распределения ответственностей, работы с объектами, ресурсами, памятью... Естественно, это начинает проявляться тогда, когда язык используется достаточно долго. Отсюда и возникают явления типа "C с классами", "программировать на C# как на C++" и т. п. Привычка выражать мысли одним образом накладывает отпечаток на то, когда инструмент их выражения меняется. |
|
Сообщ.
#124
,
|
|
|
|
Это все понятно, но, ИМХО, не имеет никакого отношения к тому контексту, в котором "культура" была упомянута.
Кроме того, я считаю, что с помощью языка нужна решать задачу, а не "мыслить" на этом языке. Ну и да, си-программисты вполне способны мыслить категориями классов и объектов без поддержки со стороны языка. Подобно тому, как можно мыслить категориями тех или иных паттернов без встроенной их поддержки в языке. |
|
Сообщ.
#125
,
|
|
|
|
Цитата D_KEY @ Ну и да, си-программисты вполне способны мыслить категориями классов и объектов без поддержки со стороны языка. Ох, лучше бы они этого не делали... |
|
Сообщ.
#126
,
|
|
|
|
Цитата D_KEY @ Кроме того, я считаю, что с помощью языка нужна решать задачу, а не "мыслить" на этом языке. «Нужно» и «как оно происходит» на самом деле не всегда совпадает все же. |
|
Сообщ.
#127
,
|
|
|
|
А в чем их принципиальное отличие? Из статей с вики о них как-то не очень понял. Да и вообще - дело не в них же, а в том, что использование встроенных в C++ классов, очевидно, удобнее костылей С. |
|
Сообщ.
#128
,
|
|
|
|
Цитата korvin @ Цитата D_KEY @ Кроме того, я считаю, что с помощью языка нужна решать задачу, а не "мыслить" на этом языке. «Нужно» и «как оно происходит» на самом деле не всегда совпадает все же. +100500 |
|
Сообщ.
#129
,
|
|
|
|
Цитата korvin @ Цитата D_KEY @ Кроме того, я считаю, что с помощью языка нужна решать задачу, а не "мыслить" на этом языке. «Нужно» и «как оно происходит» на самом деле не всегда совпадает все же. Конечно не всегда. Ну так какую культуру навязывает С++, если люди на нем пишут совершенно разный код, если есть несколько "противоположных" культур его использования, если быдлокода на нем очень много, а репутация его, как быдлоязыка, не сильно отличается от php? Если бы С++ навязывал свое правильное использование, то не понадобилось бы всяким Саттерам вести всякие GoW, выпускать "сложные задачи"(которые почти все связаны с языковыми проблемами С++). Добавлено Цитата OpenGL @ что использование встроенных в C++ классов, очевидно, удобнее костылей С. Ну это как посмотреть. Унаследованный от GObject класс на С(или Vala) я могу спокойно использовать, например, в питоне(прослойка пишется один раз и работает для всех классов - т.к. gobject - это прозрачное API для ООП). С классами С++ дело обстоит очевидно не так. Задачи бывают разными А для не обобщенной реализации ООП в Си достаточно структурок с указателями на функции. И то, только когда это действительно нужно. Можешь глянуть как это делается в сырцах subversion, например. С другой стороны, можно сделать более гибкую систему, чем та, что зашита в плюсах. Да, плюсы удобнее, но не всегда И даже в этих случаях, профит от С++ не всегда перевешивает связанные с использованием С++ трудности. Я не понимаю, почему С++ нужно всегда предпочитать С. Я думаю, что все зависит от задачи, команды и перспектив развития. |
|
Сообщ.
#130
,
|
|
|
|
Цитата D_KEY @ Ну это как посмотреть Да как ни смотри - если хочешь видеть, конечно. Цитата D_KEY @ Унаследованный от GObject класс на С(или Vala) я могу спокойно использовать, например, в питоне И это выставляется как плюс? В мире Qt биндингов это рядовое событие. Цитата D_KEY @ С классами С++ дело обстоит очевидно не так Очевидно, это не для всех очевидно ![]() Цитата D_KEY @ А для не обобщенной реализации ООП в Си достаточно структурок с указателями на функции. В C++, наверное, потребуется что-то ещё? Цитата D_KEY @ Можешь глянуть как это делается в сырцах subversion OpenGL, не надо: психика, она дороже. Цитата D_KEY @ С другой стороны, можно сделать более гибкую систему, чем та, что зашита в плюсах. Покажи мне пример такой системы. А заодно покажи, почему её нельзя было сделать на C++. Добавлено Кстати, D_KEY, в соседней теме Fester наглядно показывает причину, по которой выбирают C. |
|
Сообщ.
#131
,
|
|
|
|
Цитата MyNameIsIgor @ И это выставляется как плюс? В мире Qt биндингов это рядовое событие. В отличие от Qt, gobject'у не потребовались никакие расширения языка, moc и пр. Цитата Цитата D_KEY @ А для не обобщенной реализации ООП в Си достаточно структурок с указателями на функции. В C++, наверное, потребуется что-то ещё? В С++ реализация ООП зашита. И если тебе нужно что-то большее, приходится делать moc и ему подобные дополнительные инструменты. Ну или просто заводить параллельно "еще одну" ООП-реализацию. Цитата Покажи мне пример такой системы. Да тот же GObject. Ну или что-нибудь в таком роде. Цитата А заодно покажи, почему её нельзя было сделать на C++. Можно, но в обход существующей в языке ООП-реализации. От С это будет мало отличаться. |
|
Сообщ.
#132
,
|
|
|
|
Цитата D_KEY @ В отличие от Qt, gobject'у не потребовались никакие расширения языка, moc MOC - лишь возможное решение. И оно лучше, чем переложить его работу на макрухи. Так что раз GObject'у он не потребовался, им лишь в минус. Цитата D_KEY @ и пр. Что именно? Цитата D_KEY @ В С++ реализация ООП зашита. И если тебе нужно что-то большее, приходится делать moc и ему подобные дополнительные инструменты. Ну или просто заводить параллельно "еще одну" ООП-реализацию. Т.е. таки не приходится, а является возможным решением. Цитата D_KEY @ Можно, но в обход существующей в языке ООП-реализации. От С это будет мало отличаться. Поскольку эту параллельную реализацию ООП можно делать с использованием имеющейся реализации, шаблонов и пространств имён, то разница будет огромна и исключительно в лучшую сторону. Цитата D_KEY @ Да тот же GObject. Ну или что-нибудь в таком роде. Ты шутишь? Там двести страниц. |
|
Сообщ.
#133
,
|
|
|
|
Цитата MyNameIsIgor @ Т.е. таки не приходится, а является возможным решением. Выходящим за рамки языка. Цитата Цитата D_KEY @ Можно, но в обход существующей в языке ООП-реализации. От С это будет мало отличаться. Поскольку эту параллельную реализацию ООП можно делать с использованием имеющейся реализации, шаблонов и пространств имён, то разница будет огромна и исключительно в лучшую сторону. И говорила бы о негибкости предложенной в С++ реализации ООП. Цитата Ты шутишь? Там двести страниц. Я не заставляю. Можешь не читать, вряд ли ты увидишь там что-то новое Посмотри на содержание. Добавлено Ладно, я перегибаю палку, честно говоря |
|
Сообщ.
#134
,
|
|
|
|
Цитата D_KEY @ Ладно, я перегибаю палку, честно говоря Кто ты и что ты сделал с D_KEY? |
|
Сообщ.
#135
,
|
|
|
|
Цитата OpenGL @ Цитата D_KEY @ Ладно, я перегибаю палку, честно говоря Кто ты и что ты сделал с D_KEY? ![]() Копирайт Астин забыл |