Здравствуйте, 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? Файлы не закрывались при исключениях, и т.п.
Здравствуйте, 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) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, alexeiz, Вы писали:
A>>И в любом случае уровень языка C++ не меньше чем у C#. Главное опять же выбор абстракций. WH>А ты не думал что на C# тоже можно абстракциясми поиграть?
Я играл. Я знаю этот язык достаточно хорошо.
В том, что возможности C++ гораздо богаче, чем у C#, меня никто не переубедит. Я описал тебе причины, почему некоторые люди думают, что это не так. Для меня богатство возможностей очевидно. Даже если в C# можно найти более или менее эквивалентные пути, меня это мало интересует. Зачем пытаться искать эквиваленты в языке с меньшими возможностями, для тех вещей, которые на C++ выражаются легко и естественно? Я предпочитаю язык, на котором мои мысли будут выражены легко и естественно.
... WH>ЗЫ Кстати можешь посмотреть историю моих сообщений... я некоторое время назад сам С++ защищал... Вот только чем больше я думаю об управляемых языках и операционках тем перспективы С++ с моей точки зрения все мение радужные.
Я не защищаю C++. Я не думаю, что C++ в этом нуждается. Я просто выражаю своё мнение.
Здравствуйте, 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) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Если говорить только о языке то я даже соглашусь. Вот только тут играет роль не только язык, а C# особенно C#2 не такой уж и бедный язык. Но и платформа .NET!
Вот это и моё мнение. Использовать C# имеет смысл ради доступа к библиотеке .NET. Другой вопрос насколько она важна для тех или иных целей, и насколько ради доступа к библиотеке ты согласен поменять стиль программирования, перейти на другие идиомы и т.д.
>И вот тут и начинается очень интересная история... Рантайм .NET'а позволяет легко делать такие вещи которые на С++ превращаются в огромную гору шаблонов и макросов которые очень не просто отладить... даже не смотря на то что я на этом не одну собаку съел.
Приведи примеры. Хотя нетрудно догадаться. Сериализация, reflection? Вообщем, всё, что строится на reflection'е?
WH>А когда надо писать просто код то тут C# с качественной IDE которая для С++ вобще не реализуема рулит просто не по детски.
Трудно представить, что IDE имеет решающее значение.
WH>Кстати для .NET кроме C# существует еще и Nemerle, а этот язык С++ вобще уделывает как котенка.
Абсолютно другой язык, не имеющий ни к C# ни к C++ никакого отношения. Зачем ты его здесь привёл?
Здравствуйте, 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) А. Эйнштейн
Здравствуйте, alexeiz, Вы писали:
A>Вот это и моё мнение. Использовать C# имеет смысл ради доступа к библиотеке .NET. Другой вопрос насколько она важна для тех или иных целей, и насколько ради доступа к библиотеке ты согласен поменять стиль программирования, перейти на другие идиомы и т.д.
Видиш ли, я не верю, что ты действительно 3 года программировал на C#. За такой срок можно оценить повышение производительности.
Бессмысленно пытаться найти одно приемущество C# или дотнета. Каждое отдельное приемущество не столь существнно. Приемущество получается в свете того комулятивного эффекта который получается в итоге. Важно все. И типобезопасность языка, и поддержка IDE, и полнота/непротиворичивость библиотеки, и простата реализации идиом/паттернов, и выразительность конструкций, и возможности рефакторинга, и дизайнеры (классов, компонентов, форм). В общем, важно все. Все вместе дает нехилое упрощение работы. В итоге ты можешь делать больше, решать более сложные задачи и тратить на все это меньшее время.
Вот только, чтобы все это получить нужно избавиться от фобий и принять другие подходы! На C# нельзя программировать как на С++! Это свой мир, своя идеология. В C# больше дотнета, чем собственно языка.
Кстати после того, как изучишь эту идеологию, то и на С++ станешь писать по другому. Начнешь понимать весь вред кулхакерских решений выжимающих пару тактов процессора иди делающих код чуть короче, но при этом нарушающих принципы безопасности и надежности.
A>Абсолютно другой язык, не имеющий ни к C# ни к C++ никакого отношения. Зачем ты его здесь привёл?
Вообще-то Нэмерл явно создавался как развитие C#. Это можно сказать такой идеальный C#. C# в который хорошо интегрированы функциональная парадигма и парадигма метапрограммирования. Так что совершенно ясно причем тут он.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Начнешь понимать весь вред кулхакерских решений выжимающих пару тактов процессора иди делающих код чуть короче, но при этом нарушающих принципы безопасности и надежности.
Этот вред всегда был понятен. Для этого вовсе не нужно было переключаться на другие языки.
И вообще, складывается впечатление, что ты поносишь C++ из-за своего печального опыта программирования на C++, который, видимо, изобиловал подобными кулхакерскими решениями. Но, видишь ли, есть программисты, у которых подобного печального опыта нет. Вероятно, alexeiz как раз пример. И я так же.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, VladD2, Вы писали:
VD>>Начнешь понимать весь вред кулхакерских решений выжимающих пару тактов процессора иди делающих код чуть короче, но при этом нарушающих принципы безопасности и надежности.
E>Этот вред всегда был понятен.
Кому как. Тут недвано пример демонстрировался кем-то как он лихо "юзает" повторную инициализации объектов.
E> Для этого вовсе не нужно было переключаться на другие языки.
Очень, знаете ли, способствует.
E>И вообще, складывается впечатление, что ты поносишь C++ из-за своего печального опыта программирования на C++
Кто тебе сказал о том, что у меня был какой-то печальный опыт? Просто у меня был разный опыт и я делаю осознный выбор. У тебя же опыт был однобокий и ты тем неменее пыташся годать о моем опыте.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>Но, видишь ли, есть программисты, у которых подобного печального опыта нет. Вероятно, alexeiz как раз пример. И я так же.
Наверно, эти программисты просто никогда не работали над большими проектами на плюсах. В команде от десяти человек и больше, объемом от n*10 человеко-лет.
Или я неправильно угадал?
Здравствуйте, 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#. Причём он ещё в экпериментальной стадии. Я бы сказал, что он здесь пока не к месту.
Здравствуйте, Дарней, Вы писали:
Д>Здравствуйте, eao197, Вы писали:
E>>Но, видишь ли, есть программисты, у которых подобного печального опыта нет. Вероятно, alexeiz как раз пример. И я так же.
Д>Наверно, эти программисты просто никогда не работали над большими проектами на плюсах. В команде от десяти человек и больше, объемом от n*10 человеко-лет. Д>Или я неправильно угадал?
Здравствуйте, Дарней, Вы писали:
Д>Наверно, эти программисты просто никогда не работали над большими проектами на плюсах. В команде от десяти человек и больше, объемом от n*10 человеко-лет. Д>Или я неправильно угадал?
Угадал правильно.
Был другой опыт. Небольшие команды, средние проекты с временем жизни в несколько лет. На каждого разработчика в результате по 150-200т. строк кода (за год где-то по 50-60т. строк). В таких условиях кулхакерские приемы валят проекты напрочь.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
VladD2 wrote: > VD>>Начнешь понимать весь вред кулхакерских решений выжимающих пару > тактов процессора иди делающих код чуть короче, но при этом нарушающих > принципы безопасности и надежности. > E>Этот вред всегда был понятен. > Кому как. Тут недвано пример демонстрировался кем-то как он лихо "юзает" > повторную инициализации объектов.
И что? Замечательный трюк, позволяющий сэкономить ресурсы. У меня
используется в моей библиотеке контейнеров, которая тщательно
протестирована.
Для обычных объектов такой трюк почти никогда не нужен.
> E> Для этого вовсе не нужно было переключаться на другие языки. > Очень, знаете ли, способствует.
Например, я сейчас пишу на Java и Python. Тем не менее С++ мне все равно
очень нравится.
Здравствуйте, alexeiz, Вы писали:
Д>>я раньше тоже думал в точности, как ты A>Т.е. как конкретно? Ты ещё не выразил своего мнения. Милости просим.
Ну примерно так: С++ крут! С++ мега крут! Нет ничего круче С++! Если правильно использовать С++ то все эти новомодные финтифлюшки тапа .NET'а просто ерунда!
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, alexeiz, Вы писали:
A>Т.е. как конкретно? Ты ещё не выразил своего мнения. Милости просим.
я тоже когда-то думал, что С++ — это отличный язык высокого уровня, на на котором я решаю свои задачи легко и просто.
вот только потом я понял, что ЭТО — совсем не легко и не просто.