С-программер (Олег К.) и С++ программер (Vain) солидарно считают что программирование на С — мазохизм.
С некоторыми оговорками я с ними в общем-то согласен, но тем не менее существует стереотип что С — безусловный мазохизм! Вопрос в том почему имено вы так считаете, или не считаете?
Здравствуйте, adontz, Вы писали:
AS>>Вопрос в том почему имено вы так считаете, или не считаете? A>Выгоды (дополнительная гибкость, дополнительная портируемость, и т.д.) не адекватны трудозатратам (утечки ресурсов, слабая типизация).
Относительно утечки ресурсов не всё так просто. В С есть свои техники аналогичные идеоме умных указателей и RAII. К тому же, на доступных версиях компилятора С++ до определённого момента (где-то в середине 90-ых если мне склероз не изменяет) было крайне тяжело контролировать ресурсы. В этом плане он от С не сильно отличался. Щас с Modern C++ это делать весьма несложно. Но и в С вобщем-то тоже =) Я постараюсь на неделе написать и про это.
Является ли минусом слабая типизация — это вообще сложный вопрос. Именно для С — это гигантский плюс, ИМХО =)
Здравствуйте, Alexéy Sudáchen, Вы писали:
AS>>>Вопрос в том почему имено вы так считаете, или не считаете? AS>Относительно утечки ресурсов не всё так просто. В С есть свои техники аналогичные идеоме умных указателей и RAII.
Существование техник и удобство их использования разные вещи.
AS>К тому же, на доступных версиях компилятора С++ до определённого момента (где-то в середине 90-ых если мне склероз не изменяет) было крайне тяжело контролировать ресурсы.
Что, деструкторы не работали?
AS>Является ли минусом слабая типизация — это вообще сложный вопрос. Именно для С — это гигантский плюс, ИМХО =)
Вопрос только в том, оправдывает ли удобство в 2% случаев, когда это надо, проблемы в 98% случаев, когда это не надо.
A>Что, деструкторы не работали?
Тяжело было на каждый чих деструкторы писать =)
AS>>Является ли минусом слабая типизация — это вообще сложный вопрос. Именно для С — это гигантский плюс, ИМХО =) A>Вопрос только в том, оправдывает ли удобство в 2% случаев, когда это надо, проблемы в 98% случаев, когда это не надо.
А что это действительно даёт столько проблем?!
Здравствуйте, Alexéy Sudáchen, Вы писали:
AS>>>Является ли минусом слабая типизация — это вообще сложный вопрос. Именно для С — это гигантский плюс, ИМХО =) A>>Вопрос только в том, оправдывает ли удобство в 2% случаев, когда это надо, проблемы в 98% случаев, когда это не надо. AS>А что это действительно даёт столько проблем?!
Всегда есть человеческий фактор, вероятность ошибки. Венгерская нотация — очевидный костыль, позволяющий визуально контроллировать типы вместо компилятора. Если нет проблемы со случайным использованием слабой типизации, то зачем венгерская нотация?
Здравствуйте, adontz, Вы писали:
A>Если нет проблемы со случайным использованием слабой типизации, то зачем венгерская нотация?
Понятия не имею, и никогда не использовал. Вы считаете что именно для этого?
Здравствуйте, Alexéy Sudáchen, Вы писали:
AS>С некоторыми оговорками я с ними в общем-то согласен, но тем не менее существует стереотип что С — безусловный мазохизм! Вопрос в том почему имено вы так считаете, или не считаете?
Смотря для каких задач его применять. Для низкоуровневого программирования, Си отличный инструмент. А для более высокоуровневого программирования, мазохизм. Я на Си программировал разные микроконтроллеры, для таких задач, он действительно хорош. Ну или для программ близких к железу, а также для написания критичных к скорости участков кода. А вот в веб-прогрограммировании никто в здравом уме Си использовать не будет. И поэтому я не могу сказать, что Си — безусловный мазохизм, все как раз зависит от условий, в которых мы находимся.
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
С-программер (Олег К.) и С++ программер (Vain) солидарно считают что программирование на С — мазохизм.
AS>С некоторыми оговорками я с ними в общем-то согласен, но тем не менее существует стереотип что С — безусловный мазохизм! Вопрос в том почему имено вы так считаете, или не считаете?
Странно было бы не соглашаться с очевидным.
Потому что практически все, что можно написать на Си, можно написать и на С++, но не наоборот. За исключением некоторых С99-фич, собственно (некоторых — потому что многие фичи уже вошли в новый стандарт и/или поддерживаются компиляторами подпольно уже сейчас, например, restrict, variadic macros etc).
Все твои трюки со свичами будут прекрасно работать и в С++.
Здравствуйте, Alexéy Sudáchen, Вы писали:
AS>Здравствуйте, adontz, Вы писали:
AS>>>Вопрос в том почему имено вы так считаете, или не считаете? A>>Выгоды (дополнительная гибкость, дополнительная портируемость, и т.д.) не адекватны трудозатратам (утечки ресурсов, слабая типизация).
AS>Относительно утечки ресурсов не всё так просто. В С есть свои техники аналогичные идеоме умных указателей и RAII. К тому же, на доступных версиях компилятора С++ до определённого момента (где-то в середине 90-ых если мне склероз не изменяет) было крайне тяжело контролировать ресурсы. В этом плане он от С не сильно отличался. Щас с Modern C++ это делать весьма несложно. Но и в С вобщем-то тоже =) Я постараюсь на неделе написать и про это.
AS>Является ли минусом слабая типизация — это вообще сложный вопрос. Именно для С — это гигантский плюс, ИМХО =)
reinterpret_cast в С++ замечательно убивают любую типизацию там, где это вдруг потребовалось
Здравствуйте, Alexéy Sudáchen, Вы писали:
A>>Если нет проблемы со случайным использованием слабой типизации, то зачем венгерская нотация? AS>Понятия не имею, и никогда не использовал. Вы считаете что именно для этого?
Да, я думаю что сейчас она используется именно для этого (хотя придумывалась для другого).
Здравствуйте, jazzer, Вы писали:
J>Странно было бы не соглашаться с очевидным.
Ну для меня это совсем не очевидно =)
J>Потому что практически все, что можно написать на Си, можно написать и на С++, но не наоборот. За исключением некоторых С99-фич, собственно (некоторых — потому что многие фичи уже вошли в новый стандарт и/или поддерживаются компиляторами подпольно уже сейчас, например, restrict, variadic macros etc).
Ну далеко не всё. В С в отличии от С++ void* приводится к любому другому указателю. Это вроде бы незначительное отличие может в корне менять структуру программы. В скобках запутаешся то же самое писать на плюсах.
On 20.02.2011 11:13, Alexéy Sudáchen wrote:
> С некоторыми оговорками я с ними в общем-то согласен, но тем не менее существует > стереотип что С — безусловный мазохизм!
Программировать на С -- безусловный мазохизм, потому что
С++ делает кучу проверок за тебя, в то время как С оставляет
тебя на едине со своими проблемами. А разницы в коде или сборке
нет никакой.
Можно писать на С++ не используя классы, шаблоны и пр. , уже будет лучше.
Здравствуйте, MasterZiv, Вы писали:
MZ>Программировать на С -- безусловный мазохизм, потому что MZ>С++ делает кучу проверок за тебя, в то время как С оставляет MZ>тебя на едине со своими проблемами. А разницы в коде или сборке MZ>нет никакой.
То есть вы хотите сказать что если я пишу на С++ тот же самый код что и на С (а именно без шаблонов и классов), то я получаю некие дополнительные проверки, который магически защищают мой код?! Это интересно какие?
MZ>Можно писать на С++ не используя классы, шаблоны и пр. , уже будет лучше.
Здравствуйте, __lambda__, Вы писали:
___>Смотря для каких задач его применять. Для низкоуровневого программирования, Си отличный инструмент. А для более высокоуровневого программирования, мазохизм. Я на Си программировал разные микроконтроллеры, для таких задач, он действительно хорош. Ну или для программ близких к железу, а также для написания критичных к скорости участков кода. А вот в веб-прогрограммировании никто в здравом уме Си использовать не будет. И поэтому я не могу сказать, что Си — безусловный мазохизм, все как раз зависит от условий, в которых мы находимся.
Ну хорошо, вы повторили своими словами высказывание ставшее причиной это обсуждения. С некоторыми исключениями конечно. Однако почему вы так считаете?
Здравствуйте, Alexéy Sudáchen, Вы писали:
AS>То есть вы хотите сказать что если я пишу на С++ тот же самый код что и на С (а именно без шаблонов и классов), то я получаю некие дополнительные проверки, который магически защищают мой код?! Это интересно какие?
Здравствуйте, Alexéy Sudáchen, Вы писали:
AS>Ну хорошо, вы повторили своими словами высказывание ставшее причиной это обсуждения. С некоторыми исключениями конечно. Однако почему вы так считаете?
Странно, я думал, что опроверг, то самое высказывание. То высказывание, где утверждается, что программирование на Си, это безусловный мазохизм. И вроде как даже обосновал свою точку зрения тем, что условия разные бывают.
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, Alexéy Sudáchen, Вы писали:
FR>
FR>void (*FPtr)(void) = Tst;
FR>
Ну, я уверен что С ты знаешь и выделенное пропустил намеренно, как и -Wall -Werror. Ещё вырианты есть?
Я в С++ тоже могу гору багов с опечатками набрать, несмотря на его жёсткую типизацию и использование всяких песочниц а-ля STL. =)))