Здравствуйте, BioUnit, Вы писали:
BU>А что значит "система с GUI"?
Например, Visual Studio.
BU>И чем GUI так отличается от других областей применения?
Когда делаешь GUI на C++ очень быстро проявляется весь букет "венерических заболеваний" этого языка. Модульность, расширяемость, простота — становятся недостижимыми качествами системы.
BU>И ещё, приводи примеры кривизны и как она вылезает, только не такой бред, который ты запостил в другой ветке. Желательно ещё и с примерами на других менее кривых по-твоему языках. BU>Думаю, видя конкретные примеры, можно будет показать, что это не кривизна С++ вылезает, а чего-то другого.
Например, при создании GUI просто жизненно необходима такая абстракция, как указатель на метод объекта (делегаты), подобный тому, что есть в .NET, в Delphi и в C++Builder. Как организовать это в С++? Почему в нем указатели на методы сделаны так глупо?
d Bratik пишет:
> BU>А что значит "система с GUI"? > Например, Visual Studio.
Написана на С++...
> BU>И чем GUI так отличается от других областей применения? > Когда делаешь GUI на C++ очень быстро проявляется весь букет > "венерических заболеваний" этого языка. Модульность, расширяемость, > простота — становятся недостижимыми качествами системы.
Да. У меня, например, сейчас как раз пишется модульная, расширяемая (но
не простая, естественно) система с GUI. С встроенной поддержкой VBA. На С++.
> BU>И ещё, приводи примеры кривизны и как она вылезает, только не такой > бред, который ты запостил в другой ветке. Желательно ещё и с примерами > на других менее кривых по-твоему языках. > BU>Думаю, видя конкретные примеры, можно будет показать, что это не > кривизна С++ вылезает, а чего-то другого. > Например, при создании GUI просто жизненно необходима такая > абстракция, как указатель на метод объекта (делегаты)
С каких пор она стала жизненно необходима?
> подобный тому, что есть в .NET, в Delphi и в C++Builder. Как > организовать это в С++?
Здравствуйте, d Bratik, Вы писали:
DB>Здравствуйте, BioUnit, Вы писали:
BU>>А что значит "система с GUI"?
DB>Например, Visual Studio.
Visual Studio — это "полный набор инструментов для создания как настольных прикладных систем, так и корпоративных веб-приложений". Что-то слова "система" я тут не встретил.
DB>Когда делаешь GUI на C++ очень быстро проявляется весь букет "венерических заболеваний" этого языка. Модульность, расширяемость, простота — становятся недостижимыми качествами системы.
Да? Я занимаюсь разработкой уже порядочное время и что-то "букета" такого не встречал. Трудности, конечно есть, но они как-то не совсем зависят от языка. А про модульность и т.п., может просто маловато практики в анализе и дизайне? Вот только язык тут не при чем.
BU>>И ещё, приводи примеры кривизны и как она вылезает, только не такой бред, который ты запостил в другой ветке. Желательно ещё и с примерами на других менее кривых по-твоему языках. BU>>Думаю, видя конкретные примеры, можно будет показать, что это не кривизна С++ вылезает, а чего-то другого.
DB>Например, при создании GUI просто жизненно необходима такая абстракция, как указатель на метод объекта (делегаты), подобный тому, что есть в .NET, в Delphi и в C++Builder. Как организовать это в С++? Почему в нем указатели на методы сделаны так глупо?
Реализаций делегатов можно привести множество, загляни хотя бы в Boost.
Хотя честно говоря, я не вижу в этом "жизненной необходимости".
Опять же нет конкретных примеров кривизны.
Кроме того тебе не кажется странным отделять C++Builder и C++ ? Ты считаешь, что это разные языки?
В этом случае ты наивно ошибаешься, т.к. одно из них вообще языком не является, так же как .NET и Delphi...
Исходя из этого могу предположить, что твоя компетенция просто не позволяет тебе реально судить о С++, как о языке программирования, если ты сравниваешь его со средами разработки. Это все равно, что судить о русском языке по песням группы "Фабрика".
Давайте я аргументирую свою точку зрения, почему С++ — язык достаточно "кривой", и почему для очень широкого круга задач лучше использовать другие языки.
Итак, я последнюю неделю на работе программировал систему подготовки 3D моделей для проекта Trans-Force ( www.trans-force.com ). На С++ я программирую год. За неделю я потратил свое время впустую на следующие вещи:
1) Функции Maya API пишут свои сообщения в std::cout и std::cerr. Мне потребовалось перехватить их. Чтобы понять, как это сделать, учитывая то, что разные версии Maya используют разные версии run-time, потребовалось около 6 часов.
2) 1,5 часа ушло на поиск ошибки
#pragma pack ( push, 1 )
#pragma pack ( pop, 1 )
3) 1 час ушел на то, чтобы понять, что у меня в двух разных C++-модулях имеются различные структуры с одинаковым именем.
4) 2 часа ушло на поиски утечек COM-интерфейсов.
Уже получилось больше рабочего дня.
Также мне пришлось потратить дополнительное время на обертки над интерфейсами экспортируемых функций из dll, потому что меня огранивает невозможность передать из dll-и в dll типов, которые перераспределяют память.
А сколько лишнего времени у меня ушло на создание GUI на WTL — слов нет (по сравнению с Windows Forms). MFC нельзя использовать, потому что некоторая программа, которая будет использовать мои dll, тоже использует MFC, но с другим run-time.
Учитывая то, что я программирую на работе не 8 часов в день, а меньше, то "кривизна" C++ или моих рук мне обошлась где-то в половину рабочего времени.
Если бы все компоненты, с которыми мне пришлось иметь дело, были написаны например на C#, моя производительность была бы существенно выше.
Dirichlet пишет:
> Давайте я аргументирую свою точку зрения, почему С++ — язык достаточно > "кривой", и почему для очень широкого круга задач лучше использовать > другие языки. > [большой skip]
Можно вопрос? А где здесь хоть один недостаток _ЯЗЫКА_ С++, а не
сторонних библиотек?
> Если бы все компоненты, с которыми мне пришлось иметь дело, были > написаны например на C#, моя производительность была бы существенно выше.
С хорошими библиотеками на С++ она тоже была бы выше...
C>Можно вопрос? А где здесь хоть один недостаток _ЯЗЫКА_ С++, а не C>сторонних библиотек?
C>С хорошими библиотеками на С++ она тоже была бы выше...
Я программирую на С++. Передо мной стоят вполне конкретные задачи. Я программирую не на абстрактном С++, а на вполне конкретном компиляторе. Я вынужден использовать библиотеки, написанные на С++.
Для меня нет разницы, недостатки это языка, библиотек или компилятора. После того как выбран язык программирования С++, мы выбираем лучший для наших целей компилятор и лучшие для наших целей библиотеки. Если мы сталкиваемся с проблемами, то значит наш первоначальный выбор языка был неверен.
Dirichlet пишет:
> C>Можно вопрос? А где здесь хоть один недостаток _ЯЗЫКА_ С++, а не > C>сторонних библиотек? > C>С хорошими библиотеками на С++ она тоже была бы выше... > Я программирую на С++. Передо мной стоят вполне конкретные задачи. Я > программирую не на абстрактном С++, а на вполне конкретном > компиляторе. Я вынужден использовать библиотеки, написанные на С++.
Ну вот и надо говорить: "Библиотека xxx на для компилятора yyy — полный
АЦТОЙ!".
> Для меня нет разницы, недостатки это языка, библиотек или компилятора.
Твои проблемы.... А разница есть.
> После того как выбран язык программирования С++, мы выбираем лучший > для наших целей компилятор и лучшие для наших целей библиотеки.
А как вы узнаете, что эти библиотеки и компилятор — лучшие?
> Если мы сталкиваемся с проблемами, то значит наш первоначальный выбор > языка был неверен.
Ага, а С# магически разрешает сразу все проблемы. И все библиотеки для
C# тоже абсолютно всегда правильны, безглючны и совместимы со всем
остальным еще не написанным софтом...
Здравствуйте, Cyberax, Вы писали:
>> Для меня нет разницы, недостатки это языка, библиотек или компилятора. C>Твои проблемы.... А разница есть.
Меня интересует конечный результат. А именно набор программ, помогающий нам эффективно работать с моделями. Какая разница, что мне мешает быстрее добиться результата — язык, библиотеки или компилятор?
>> После того как выбран язык программирования С++, мы выбираем лучший >> для наших целей компилятор и лучшие для наших целей библиотеки. C>А как вы узнаете, что эти библиотеки и компилятор — лучшие?
В компании, где я работаю, есть много достаточно квалифицированных людей, чтобы осознанно сделать выбор.
C>Ага, а С# магически разрешает сразу все проблемы. И все библиотеки для C>C# тоже абсолютно всегда правильны, безглючны и совместимы со всем C>остальным еще не написанным софтом...
В отделе, где я работаю, есть опыт разработки отдельных компонент на С#. Поэтому я могу сравнивать.
Если интересует вопрос, почему же я не программирую на С#, то потому, что стоимость перевода моих компонент на С# достаточно высокая.
Дело в том, что код, который будет писаться другими людьми и будет взаимодействовать с моим кодом, тоже должен будет писаться на C#. А такого количества знающих C# людей у нас в отделе пока нет.
Dirichlet пишет:
>>> Для меня нет разницы, недостатки это языка, библиотек или компилятора. > C>Твои проблемы.... А разница есть. > Меня интересует конечный результат. А именно набор программ, > помогающий нам эффективно работать с моделями. Какая разница, что мне > мешает быстрее добиться результата — язык, библиотеки или компилятор?
Большая. То что тебе мешают определенные глюки библиотек — твои личные
проблемы, и обсуждать их надо с разработчиками либ или
специализированных форумах.
А вот недостатки языка программирования влияют на всех.
>>> После того как выбран язык программирования С++, мы выбираем лучший >>> для наших целей компилятор и лучшие для наших целей библиотеки. > C>А как вы узнаете, что эти библиотеки и компилятор — лучшие? > В компании, где я работаю, есть много достаточно квалифицированных > людей, чтобы осознанно сделать выбор.
А есть из чего выбирать?
> C>Ага, а С# магически разрешает сразу все проблемы. И все библиотеки для > C>C# тоже абсолютно всегда правильны, безглючны и совместимы со всем > C>остальным еще не написанным софтом... > В отделе, где я работаю, есть опыт разработки отдельных компонент на > С#. Поэтому я могу сравнивать.
Работающие с теми же программами, и выполняющие ту же работу?
> Если интересует вопрос, почему же я не программирую на С#, то потому, > что стоимость перевода моих компонент на С# достаточно высокая. > Дело в том, что код, который будет писаться другими людьми и будет > взаимодействовать с моим кодом, тоже должен будет писаться на C#. А > такого количества знающих C# людей у нас в отделе пока нет.
И что, люди знающие С++ не могут без проблем перейти на C#? Странно.
Здравствуйте, csvb, Вы писали:
C>Кто ж его любит ... C>С C++ как с Microsoft или как с проституткой (кому как удобнее): C>никто не любит, но многие используют.
Здравствуйте, Dirichlet, Вы писали:
>>> Для меня нет разницы, недостатки это языка, библиотек или компилятора. C>>Твои проблемы.... А разница есть.
D>Меня интересует конечный результат. А именно набор программ, помогающий нам эффективно работать с моделями. Какая разница, что мне мешает быстрее добиться результата — язык, библиотеки или компилятор?
Да вся разница как раз в том, что Вы не чувствуете разницы...