C+ vs C#
От: alexeiz  
Дата: 09.02.06 11:41
Оценка: 112 (10) +10 -2
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Cyberax, Вы писали:


>>> C# писать проще чем на С++?

C>>Нужно. И еще нужно обосновать почему софт должен писаться на С#.
WH>Ну можно еще и на немерле...
WH>В любом случае чем выше уровень языка и чем меньше возможностей там накосячить тем лучше.
WH>А в С++ очень много возможностей накосячить. Даже не смотря на то что я знаю С++ лучше чем подавляющие большинство читающих я не стану писать на нем программу если можно взять C# ибо это непростительное расточительство средств.

У меня всё наоборот. В последние несколько лет C++ открылся для меня как исключительно мощное средство для быстрого создания программ. Всё дело в правильных абстракциях. Найдя эти правильные абстракции в C++, я понял, что более удобного средства пока нет. Странно, C# я даже и не рассматриваю, как альтернативу. Не укладывается у меня мышление в модель C#-па. Она меня сильно ограничивает. Вот о месте C++/CLI я некоторое время подумывал. Но его объектная модель для меня оказалась запутанной. С точки зрения C++ идиом непонятно, с какой стороны модель C++/CLI к ним подходит. Поэтому сравнивая C++ с .NET языком (который обычно C++/CLI) я всегда задаюсь вопросом: а что такого привлекательного есть в этом языке, что заставит меня разобраться в его объектной модели и перевесит моё желание использовать идиомы C++?

И в любом случае уровень языка C++ не меньше чем у C#. Главное опять же выбор абстракций.

Если кто подумал, что я C# никогда не использовал, это не так. 3 года высоко оплаченного труда. Никаких великих успехов продуктивности не замечено.

Основная ошибка людей программирующих на C++ — это автоматический выбор низкоуровневых абстракций. Так или иначе такой выбор превращает язык в подобие C. Глядя на код C++ очень легко понять на каком языке он действительно написан (на каком языке думает его создатель). Как недавно отлично выразился Francis Glassborow:

We know that C and C++ are different languages (well some of us
understand that) because even when source code will compile as either,
the idioms are different. Any experienced programmer in C and C++ can
look at code and identify the language in which the programmer is
thinking even if the code requires a C++ compiler. That is what makes
them different languages, they have a different look and feel.


Страуструп о таком выборе низкоуровневых абстракций говорил: If that's C++ I don't like it either.

Кстати люди, которые мыслят на C, даже на C# программируют как на C. Мне такое предоставилось наблюдать. На мой вопрос, почему было решено выбрать C#, я получил типичный ответ о продуктивности. Хм, какая может быть продуктивность, когда в программе половина функций была объявлена как unsafe? Файлы не закрывались при исключениях, и т.п.

11.02.06 22:30: Ветка выделена из темы Еще раз об управляемых ОС
Автор: WolfHound
Дата: 02.02.06
— WolfHound
13.02.06 14:25: Перенесено модератором из 'Философия программирования' — WolfHound
Re[35]: C+ vs C#
От: WolfHound  
Дата: 10.02.06 08:09
Оценка: +1 -1
Здравствуйте, alexeiz, Вы писали:

A>И в любом случае уровень языка C++ не меньше чем у C#. Главное опять же выбор абстракций.

А ты не думал что на C# тоже можно абстракциясми поиграть?

A>Если кто подумал, что я C# никогда не использовал, это не так. 3 года высоко оплаченного труда. Никаких великих успехов продуктивности не замечено.

Странно. А вот я заметил...

A>Основная ошибка людей программирующих на C++ — это автоматический выбор низкоуровневых абстракций. Так или иначе такой выбор превращает язык в подобие C. Глядя на код C++ очень легко понять на каком языке он действительно написан (на каком языке думает его создатель). Как недавно отлично выразился Francis Glassborow:

Ты кого за ламера инсталишь маздай не пропатченый!?
Если я пишу на С++ то я пишу на С++, а не на С с классами.

A>Кстати люди, которые мыслят на C, даже на C# программируют как на C. Мне такое предоставилось наблюдать. На мой вопрос, почему было решено выбрать C#, я получил типичный ответ о продуктивности. Хм, какая может быть продуктивность, когда в программе половина функций была объявлена как unsafe? Файлы не закрывались при исключениях, и т.п.

Хотел бы я посмотреть что бы у них получилось на С++
В таких случаях нормальный ПМ просто запрещает использовать unsafe и наказывает рублем за открытие файла без using'а.

ЗЫ Кстати можешь посмотреть историю моих сообщений... я некоторое время назад сам С++ защищал... Вот только чем больше я думаю об управляемых языках и операционках тем перспективы С++ с моей точки зрения все мение радужные.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[36]: C+ vs C#
От: alexeiz  
Дата: 10.02.06 09:10
Оценка: 16 (2) +3 :)
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, alexeiz, Вы писали:


A>>И в любом случае уровень языка C++ не меньше чем у C#. Главное опять же выбор абстракций.

WH>А ты не думал что на C# тоже можно абстракциясми поиграть?

Я играл. Я знаю этот язык достаточно хорошо.

В том, что возможности C++ гораздо богаче, чем у C#, меня никто не переубедит. Я описал тебе причины, почему некоторые люди думают, что это не так. Для меня богатство возможностей очевидно. Даже если в C# можно найти более или менее эквивалентные пути, меня это мало интересует. Зачем пытаться искать эквиваленты в языке с меньшими возможностями, для тех вещей, которые на C++ выражаются легко и естественно? Я предпочитаю язык, на котором мои мысли будут выражены легко и естественно.

...
WH>ЗЫ Кстати можешь посмотреть историю моих сообщений... я некоторое время назад сам С++ защищал... Вот только чем больше я думаю об управляемых языках и операционках тем перспективы С++ с моей точки зрения все мение радужные.

Я не защищаю C++. Я не думаю, что C++ в этом нуждается. Я просто выражаю своё мнение.
Re[37]: C+ vs C#
От: WolfHound  
Дата: 10.02.06 10:02
Оценка: +2
Здравствуйте, alexeiz, Вы писали:

A>В том, что возможности C++ гораздо богаче, чем у C#, меня никто не переубедит. Я описал тебе причины, почему некоторые люди думают, что это не так. Для меня богатство возможностей очевидно. Даже если в C# можно найти более или менее эквивалентные пути, меня это мало интересует. Зачем пытаться искать эквиваленты в языке с меньшими возможностями, для тех вещей, которые на C++ выражаются легко и естественно? Я предпочитаю язык, на котором мои мысли будут выражены легко и естественно.

Если говорить только о языке то я даже соглашусь. Вот только тут играет роль не только язык, а C# особенно C#2 не такой уж и бедный язык. Но и платформа .NET! И вот тут и начинается очень интересная история... Рантайм .NET'а позволяет легко делать такие вещи которые на С++ превращаются в огромную гору шаблонов и макросов которые очень не просто отладить... даже не смотря на то что я на этом не одну собаку съел.
А когда надо писать просто код то тут C# с качественной IDE которая для С++ вобще не реализуема рулит просто не по детски.
Кстати для .NET кроме C# существует еще и Nemerle, а этот язык С++ вобще уделывает как котенка.

А если говорить об управляемых ОС вобще то как я уже говорил я считаю что CLR это не самое подходящее основание для таких операционок. Но если создать правильную VM и сделать архитиктуру как в сингулярити то ИМХО получится очень мощьная штука которая позволит произвести качественный скачек всей индустрии.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[38]: C+ vs C#
От: alexeiz  
Дата: 10.02.06 10:49
Оценка: :))
Здравствуйте, WolfHound, Вы писали:

WH>Если говорить только о языке то я даже соглашусь. Вот только тут играет роль не только язык, а C# особенно C#2 не такой уж и бедный язык. Но и платформа .NET!


Вот это и моё мнение. Использовать C# имеет смысл ради доступа к библиотеке .NET. Другой вопрос насколько она важна для тех или иных целей, и насколько ради доступа к библиотеке ты согласен поменять стиль программирования, перейти на другие идиомы и т.д.

>И вот тут и начинается очень интересная история... Рантайм .NET'а позволяет легко делать такие вещи которые на С++ превращаются в огромную гору шаблонов и макросов которые очень не просто отладить... даже не смотря на то что я на этом не одну собаку съел.


Приведи примеры. Хотя нетрудно догадаться. Сериализация, reflection? Вообщем, всё, что строится на reflection'е?

WH>А когда надо писать просто код то тут C# с качественной IDE которая для С++ вобще не реализуема рулит просто не по детски.


Трудно представить, что IDE имеет решающее значение.

WH>Кстати для .NET кроме C# существует еще и Nemerle, а этот язык С++ вобще уделывает как котенка.


Абсолютно другой язык, не имеющий ни к C# ни к C++ никакого отношения. Зачем ты его здесь привёл?
Re[39]: C+ vs C#
От: WolfHound  
Дата: 10.02.06 11:14
Оценка:
Здравствуйте, alexeiz, Вы писали:

A>Вот это и моё мнение. Использовать C# имеет смысл ради доступа к библиотеке .NET.

Тут не только библиотека хотя она тоже очень важна. Но главное это богатый рантайм который позволяет делать очень многие вещи гораздо проще.

A>Другой вопрос насколько она важна для тех или иных целей, и насколько ради доступа к библиотеке ты согласен поменять стиль программирования, перейти на другие идиомы и т.д.

Для меня сменить стиль и идеомы программирования не проблема.

A>Приведи примеры. Хотя нетрудно догадаться. Сериализация, reflection? Вообщем, всё, что строится на reflection'е?

Скажем последний продукт который я писал (сейчас я отдыхаю) просто пропитан аттрибутами. Там все на этом построено и эта декларотивность очень облегчает работу.

A>Трудно представить, что IDE имеет решающее значение.

Тем не мение... ReSharper очень сильно помогает писать, а главное читать код. ИМХО это довольно трудно переоценить.

A>Абсолютно другой язык, не имеющий ни к C# ни к C++ никакого отношения. Зачем ты его здесь привёл?

За тем что тут не очередной флейм C# vs C++. Тут вобщето идет разговор об упровляемых ОС и языках для них.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[39]: C+ vs C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.02.06 16:02
Оценка: :))
Здравствуйте, alexeiz, Вы писали:

A>Вот это и моё мнение. Использовать C# имеет смысл ради доступа к библиотеке .NET. Другой вопрос насколько она важна для тех или иных целей, и насколько ради доступа к библиотеке ты согласен поменять стиль программирования, перейти на другие идиомы и т.д.


Видиш ли, я не верю, что ты действительно 3 года программировал на C#. За такой срок можно оценить повышение производительности.

Бессмысленно пытаться найти одно приемущество C# или дотнета. Каждое отдельное приемущество не столь существнно. Приемущество получается в свете того комулятивного эффекта который получается в итоге. Важно все. И типобезопасность языка, и поддержка IDE, и полнота/непротиворичивость библиотеки, и простата реализации идиом/паттернов, и выразительность конструкций, и возможности рефакторинга, и дизайнеры (классов, компонентов, форм). В общем, важно все. Все вместе дает нехилое упрощение работы. В итоге ты можешь делать больше, решать более сложные задачи и тратить на все это меньшее время.

Вот только, чтобы все это получить нужно избавиться от фобий и принять другие подходы! На C# нельзя программировать как на С++! Это свой мир, своя идеология. В C# больше дотнета, чем собственно языка.

Кстати после того, как изучишь эту идеологию, то и на С++ станешь писать по другому. Начнешь понимать весь вред кулхакерских решений выжимающих пару тактов процессора иди делающих код чуть короче, но при этом нарушающих принципы безопасности и надежности.


A>Абсолютно другой язык, не имеющий ни к C# ни к C++ никакого отношения. Зачем ты его здесь привёл?


Вообще-то Нэмерл явно создавался как развитие C#. Это можно сказать такой идеальный C#. C# в который хорошо интегрированы функциональная парадигма и парадигма метапрограммирования. Так что совершенно ясно причем тут он.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[40]: C+ vs C#
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 10.02.06 16:22
Оценка: +4
Здравствуйте, VladD2, Вы писали:

VD>Начнешь понимать весь вред кулхакерских решений выжимающих пару тактов процессора иди делающих код чуть короче, но при этом нарушающих принципы безопасности и надежности.


Этот вред всегда был понятен. Для этого вовсе не нужно было переключаться на другие языки.

И вообще, складывается впечатление, что ты поносишь C++ из-за своего печального опыта программирования на C++, который, видимо, изобиловал подобными кулхакерскими решениями. Но, видишь ли, есть программисты, у которых подобного печального опыта нет. Вероятно, alexeiz как раз пример. И я так же.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[41]: C+ vs C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.02.06 18:17
Оценка:
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, VladD2, Вы писали:


VD>>Начнешь понимать весь вред кулхакерских решений выжимающих пару тактов процессора иди делающих код чуть короче, но при этом нарушающих принципы безопасности и надежности.


E>Этот вред всегда был понятен.


Кому как. Тут недвано пример демонстрировался кем-то как он лихо "юзает" повторную инициализации объектов.

E> Для этого вовсе не нужно было переключаться на другие языки.


Очень, знаете ли, способствует.

E>И вообще, складывается впечатление, что ты поносишь C++ из-за своего печального опыта программирования на C++


Кто тебе сказал о том, что у меня был какой-то печальный опыт? Просто у меня был разный опыт и я делаю осознный выбор. У тебя же опыт был однобокий и ты тем неменее пыташся годать о моем опыте.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[41]: C+ vs C#
От: Дарней Россия  
Дата: 11.02.06 06:42
Оценка: -3
Здравствуйте, eao197, Вы писали:

E>Но, видишь ли, есть программисты, у которых подобного печального опыта нет. Вероятно, alexeiz как раз пример. И я так же.


Наверно, эти программисты просто никогда не работали над большими проектами на плюсах. В команде от десяти человек и больше, объемом от n*10 человеко-лет.
Или я неправильно угадал?
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[40]: C+ vs C#
От: alexeiz  
Дата: 11.02.06 09:00
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, alexeiz, Вы писали:


A>>Вот это и моё мнение. Использовать C# имеет смысл ради доступа к библиотеке .NET. Другой вопрос насколько она важна для тех или иных целей, и насколько ради доступа к библиотеке ты согласен поменять стиль программирования, перейти на другие идиомы и т.д.


VD>Видиш ли, я не верю, что ты действительно 3 года программировал на C#. За такой срок можно оценить повышение производительности.


По сравнению с C++? Это уже смотря как хорошо ты его знаешь (а по твоим постам видно, что ты не различаешь C и C++). У меня изначально производительность была высокая. C# ничего улучшающего не принёс.

VD>Бессмысленно пытаться найти одно приемущество C# или дотнета. Каждое отдельное приемущество не столь существнно. Приемущество получается в свете того комулятивного эффекта который получается в итоге. Важно все. И типобезопасность языка, и поддержка IDE, и полнота/непротиворичивость библиотеки, и простата реализации идиом/паттернов, и выразительность конструкций, и возможности рефакторинга, и дизайнеры (классов, компонентов, форм). В общем, важно все. Все вместе дает нехилое упрощение работы. В итоге ты можешь делать больше, решать более сложные задачи и тратить на все это меньшее время.


Вот я и смотрю на кумулятивный эффект. Как язык C# проигрывает C++ по выразительности. Базовая библиотеки .NET (BCL) мне не нравится (дизайн хуже, чем у стандартной библиотеки C++. Искуственная привязка всего к ООП.). Остальная часть библиотеки .NET используется не на столько часто, чтобы был какой-то серьёзный эффект. Формочки я не клепаю, поэтому дизайнеры мне не нужны.

VD>Вот только, чтобы все это получить нужно избавиться от фобий и принять другие подходы! На C# нельзя программировать как на С++! Это свой мир, своя идеология.


Я хорошо представляю себе этот мир и его идеологию. И он мне не нравится.

>В C# больше дотнета, чем собственно языка.


Поэтому я и сопоставляю обычно C++ и C++/CLI, где предпологается и язык есть и дотнет. Но оказывается, C++/CLI ушёл не в ту сторону. По крайней мере, пока я не увижу реализацию STL/CLI, я буду считать, что большинство идиом C++ неприменимы к C++/CLI.

VD>Кстати после того, как изучишь эту идеологию, то и на С++ станешь писать по другому. Начнешь понимать весь вред кулхакерских решений выжимающих пару тактов процессора иди делающих код чуть короче, но при этом нарушающих принципы безопасности и надежности.


LOL Кто бы рассказывал. Ты извени, но в области C++ твои слова — пустой звук. Кстати, так как ты не считаешь нужным читать посты твоих собеседников, рекомендую тебе всё таки посмотреть мой пост, где я писал про уровень абстракции.

A>>Абсолютно другой язык, не имеющий ни к C# ни к C++ никакого отношения. Зачем ты его здесь привёл?


VD>Вообще-то Нэмерл явно создавался как развитие C#. Это можно сказать такой идеальный C#. C# в который хорошо интегрированы функциональная парадигма и парадигма метапрограммирования. Так что совершенно ясно причем тут он.


Отнюдь. Спорный вопрос, что это развитие C#. Причём он ещё в экпериментальной стадии. Я бы сказал, что он здесь пока не к месту.
Re[42]: C+ vs C#
От: alexeiz  
Дата: 11.02.06 09:13
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Здравствуйте, eao197, Вы писали:


E>>Но, видишь ли, есть программисты, у которых подобного печального опыта нет. Вероятно, alexeiz как раз пример. И я так же.


Д>Наверно, эти программисты просто никогда не работали над большими проектами на плюсах. В команде от десяти человек и больше, объемом от n*10 человеко-лет.

Д>Или я неправильно угадал?

Не угадал.
Re[42]: C+ vs C#
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 11.02.06 09:15
Оценка: +2
Здравствуйте, Дарней, Вы писали:

Д>Наверно, эти программисты просто никогда не работали над большими проектами на плюсах. В команде от десяти человек и больше, объемом от n*10 человеко-лет.

Д>Или я неправильно угадал?

Угадал правильно.
Был другой опыт. Небольшие команды, средние проекты с временем жизни в несколько лет. На каждого разработчика в результате по 150-200т. строк кода (за год где-то по 50-60т. строк). В таких условиях кулхакерские приемы валят проекты напрочь.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[43]: C+ vs C#
От: Дарней Россия  
Дата: 11.02.06 09:51
Оценка: -3 :))
Здравствуйте, alexeiz, Вы писали:

A>Не угадал.


Значит, ты еще не дозрел
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[42]: C+ vs C#
От: Cyberax Марс  
Дата: 11.02.06 10:13
Оценка:
VladD2 wrote:
> VD>>Начнешь понимать весь вред кулхакерских решений выжимающих пару
> тактов процессора иди делающих код чуть короче, но при этом нарушающих
> принципы безопасности и надежности.
> E>Этот вред всегда был понятен.
> Кому как. Тут недвано пример демонстрировался кем-то как он лихо "юзает"
> повторную инициализации объектов.
И что? Замечательный трюк, позволяющий сэкономить ресурсы. У меня
используется в моей библиотеке контейнеров, которая тщательно
протестирована.

Для обычных объектов такой трюк почти никогда не нужен.

> E> Для этого вовсе не нужно было переключаться на другие языки.

> Очень, знаете ли, способствует.
Например, я сейчас пишу на Java и Python. Тем не менее С++ мне все равно
очень нравится.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[44]: C+ vs C#
От: alexeiz  
Дата: 11.02.06 10:32
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Здравствуйте, alexeiz, Вы писали:


A>>Не угадал.


Д>Значит, ты еще не дозрел


Ну, ёлки палки!
Re[45]: C+ vs C#
От: Дарней Россия  
Дата: 11.02.06 11:02
Оценка: +1
Здравствуйте, alexeiz, Вы писали:

A>Ну, ёлки палки!


я раньше тоже думал в точности, как ты
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[46]: C+ vs C#
От: alexeiz  
Дата: 11.02.06 11:15
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Здравствуйте, alexeiz, Вы писали:


A>>Ну, ёлки палки!


Д>я раньше тоже думал в точности, как ты


Т.е. как конкретно? Ты ещё не выразил своего мнения. Милости просим.
Re[47]: C+ vs C#
От: WolfHound  
Дата: 11.02.06 11:31
Оценка: -1 :)
Здравствуйте, alexeiz, Вы писали:

Д>>я раньше тоже думал в точности, как ты

A>Т.е. как конкретно? Ты ещё не выразил своего мнения. Милости просим.
Ну примерно так: С++ крут! С++ мега крут! Нет ничего круче С++! Если правильно использовать С++ то все эти новомодные финтифлюшки тапа .NET'а просто ерунда!
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[47]: C+ vs C#
От: Дарней Россия  
Дата: 11.02.06 13:43
Оценка: +1
Здравствуйте, alexeiz, Вы писали:

A>Т.е. как конкретно? Ты ещё не выразил своего мнения. Милости просим.


я тоже когда-то думал, что С++ — это отличный язык высокого уровня, на на котором я решаю свои задачи легко и просто.
вот только потом я понял, что ЭТО — совсем не легко и не просто.
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.