Здравствуйте, alex_public, Вы писали: _>Хы, так C# уступает по мощи даже C++, не говоря уже о D. )))
Мощь в чем? В реализованном и написаном коде? Ну да, только это не мощь а обширность и зрелость языка.
Шарп более выразительный за счет своих интерфейсов.
Здравствуйте, alex_public, Вы писали:
_>Хы, так C# уступает по мощи даже C++, не говоря уже о D. )))
Что значит "уступает в мощи"? Вот, например, где в С++ есть линк?..
С некоторой точки зрения мощь вообще вредна, так как требует квалифицированных усилий по управлению собой...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, -n1l-, Вы писали:
N>Здравствуйте, alex_public, Вы писали: _>>Хы, так C# уступает по мощи даже C++, не говоря уже о D. )))
N>Мощь в чем? В реализованном и написаном коде? Ну да, только это не мощь а обширность и зрелость языка. N>Шарп более выразительный за счет своих интерфейсов.
А чем шарповские интерфейсы выразительнее с++нутых абстрактных классов?
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, alex_public, Вы писали:
_>>Хы, так C# уступает по мощи даже C++, не говоря уже о D. )))
E>Что значит "уступает в мощи"? Вот, например, где в С++ есть линк?..
Вроде появился с 11ым стандартом.
Здравствуйте, alex_public, Вы писали:
E>>То есть, если ты выбираешь из D и C++, и склоняешься с D, то не ясно, почему не к C#?
_>Хы, так C# уступает по мощи даже C++, не говоря уже о D. )))
Здравствуйте, -n1l-, Вы писали:
N>Здравствуйте, Erop, Вы писали:
E>>Здравствуйте, alex_public, Вы писали:
_>>>Хы, так C# уступает по мощи даже C++, не говоря уже о D. )))
E>>Что значит "уступает в мощи"? Вот, например, где в С++ есть линк?.. N>Вроде появился с 11ым стандартом.
MS так затаскал слово LINQ, что сейчас фиг поймешь что оно означает.
Что ты имеешь в виду? Сразу могу сказать, линк2sql в плюсах нет.
Здравствуйте, -n1l-, Вы писали:
N>Мощь в чем? В реализованном и написаном коде? Ну да, только это не мощь а обширность и зрелость языка. N>Шарп более выразительный за счет своих интерфейсов.
Не, я про другое. Про быстродействие кода то и обсуждать нечего — это давно известный факт. Но C++ (и тем более D) намного мощнее и при написание кода, за счёт своих средств метапрограммирования. На C# просто не реализуемы подобные вещи. Вообще. И соответственно все модные фичи из C# повторяются на C++ (и тем более D) с помощью этих методов. Единственное преимущество C# в том, что там все эти модности есть уже из коробки, а в C++ их надо искать в сторонних библиотеках... Но на мой взгляд это мелкое преимущество не покрывает указанных недостатков.
Здравствуйте, Erop, Вы писали:
E>С некоторой точки зрения мощь вообще вредна, так как требует квалифицированных усилий по управлению собой...
Ну да, согласен, есть такой момент... Собственно именно поэтому я никогда и не говорю чего-то типа "C# не нужен" (а вот как раз его фанаты частенько грешат подобным здесь). В своей родной нише "внутрикорпоративного ПО, созданного низкоквалифицированными программистами, Java и C# безусловно лучшие. Они позволяют неайтишным корпорациям особо не напрягаться по поиску крутых профи в свои IT отделы, которые для них являются лишь вспомогательными. Плюс благодаря единообразию в этих языках получается ещё гарантированная взаимозаменяемость таких сотрудников. Но с точки зрения профи из айтишной компании это всё конечно очень печально выглядит. )))
Здравствуйте, alex_public, Вы писали:
_>Не, я про другое. Про быстродействие кода то и обсуждать нечего — это давно известный факт. Но C++ (и тем более D) намного мощнее и при написание кода, за счёт своих средств метапрограммирования. На C# просто не реализуемы подобные вещи. Вообще.
Слишком категорично
Принципиально — реализуемы, достаточно поглядеть на nemerle. Если нужно ужесейчас — есть постшарп. Ну, или ждём рослин.
Здравствуйте, Sinix, Вы писали:
S>Слишком категорично S>Принципиально — реализуемы, достаточно поглядеть на nemerle. Если нужно ужесейчас — есть постшарп. Ну, или ждём рослин.
Да, nemerle — это как раз приблизительно то, о чём я говорил. Только вот это уже другой язык, а не C#. )))
Здравствуйте, alex_public, Вы писали:
_>На C# просто не реализуемы подобные вещи. Вообще. И соответственно все модные фичи из C# повторяются на C++ (и тем более D) с помощью этих методов. Единственное преимущество C# в том, что там все эти модности есть уже из коробки, а в C++ их надо искать в сторонних библиотеках... Но на мой взгляд это мелкое преимущество не покрывает указанных недостатков.
Ну чё, давай ты покажешь нам GC, линк2скуль, йелд там всякий с делегатами на плюсах
Чё за библиотеку посмотреть надо?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Ну чё, давай ты покажешь нам GC, линк2скуль, йелд там всякий с делегатами на плюсах
E>Чё за библиотеку посмотреть надо?
, но могу кратко повторить по этим конкретным пунктам:
1. yield.
— для начала он вообще не нужен в C++, т.к. тут применяется совсем другая техника (а именно итераторы), которая намного эффективнее и удобнее чем yield.
— если всё же зачем-то (например если это C# программист, которого заставили поработать на C++) очень хочется использовать именно yield, то он тривиально реализуется в несколько строчек с помощью библиотеки Boost.Coroutine. Могу сразу же заметить, что близкие к этому async/await из C# так же реализуются с помощью Boost.Coroutine в несколько строчек. Подробные примеры уже были на форуме.
2. linq
— для начала он вообще не нужен в C++, т.к. для подобных задач тут есть инструмент (Boost.Range) действующий по другим принципам, но такой же удобный и при этом более эффективный.
— если всё же зачем-то очень хочется использовать именно linq-подобный стиль написания, то соответствующие библиотеки тоже есть на C++. И даже не одна. Например вот http://habrahabr.ru/post/142632/ пример написания подобного. И как я и говорил выше, написано C# программистом, перешедшим к C++ и не пожелавшим сменить стиль.
3. GC
— для начала данная тактика работы с памятью вообще не нужна в C++, т.к. не является оптимальной ни при каких сценариях. Собственно единственный сценарий, при котором GC обходит по эффективности обычную кучу C++, это когда нам требуется выделять и удалять огромное количество мелких объектов с похожим временем жизни. Но для таких целей есть и ещё более эффективное средство, а именно выделение памяти на пуле. Соответственно мы берём аллокатор из Boost.Pool и используем его в любых контейнерах из стандартной библиотеки или просто вручную.
— если всё же зачем-то хочется иметь такую странную вещь в C++, то опять же существует множество различных реализаций. Наверное самая классическая вот http://www.hpl.hp.com/personal/Hans_Boehm/gc/.
Здравствуйте, alex_public, Вы писали:
E>>Ну чё, давай ты покажешь нам GC, линк2скуль, йелд там всякий с делегатами на плюсах
_>2. linq
Я просил таки 2sql, а не просто интервалы... и с делегатами там что у нас?..
_>- для начала он вообще не нужен в C++, т.к. тут применяется совсем другая техника (а именно итераторы), которая намного эффективнее и удобнее чем yield.
_>- для начала он вообще не нужен в C++, т.к. для подобных задач тут есть инструмент (Boost.Range) действующий по другим принципам, но такой же удобный и при этом более эффективный.
_>3. GC
_>- для начала данная тактика работы с памятью вообще не нужна в C++, т.к. не является оптимальной ни при каких сценариях. Собственно единственный сценарий, при котором GC обходит по эффективности обычную кучу C++, это когда нам требуется выделять и удалять огромное количество мелких объектов с похожим временем жизни. Но для таких целей есть и ещё более эффективное средство, а именно выделение памяти на пуле. Соответственно мы берём аллокатор из Boost.Pool и используем его в любых контейнерах из стандартной библиотеки или просто вручную.
Ну, если ты думаешь, что сказал что-то новое, то нет. Анекдот про то, что сегодня потребности в колбасе нет, придумали ещё при Ильиче...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, alex_public, Вы писали:
_>>На C# просто не реализуемы подобные вещи. Вообще. И соответственно все модные фичи из C# повторяются на C++ (и тем более D) с помощью этих методов. Единственное преимущество C# в том, что там все эти модности есть уже из коробки, а в C++ их надо искать в сторонних библиотеках... Но на мой взгляд это мелкое преимущество не покрывает указанных недостатков.
E>Ну чё, давай ты покажешь нам GC, линк2скуль, йелд там всякий с делегатами на плюсах
E>Чё за библиотеку посмотреть надо?
Ты еще не понял, что это или не нужно или элементарно делается с помощью буста
Теперь все ждут C++14 когда еще больше фишек буста войдет в STL\язык.
А спрашивать надо на самом деле не про языковые фишки, а про прикладные вещи:
1) Как сделать веб-приложение на C++, которое работает на обычном IIS?
2) Как сделать базоморду на C++ (разместить грид на форме).
3) Как написать одно приложение на С++ сразу для трех мобильных платформ (по аналогии http://xamarin.com/)
Я вот изучаю современный C++, он совсем не похож на тот С++, который я изучал 10 лет назад.
Это мощный функциональный (!) язык, с выводом типов, с офигенными шаблонам, автоматическим управлением памятью (!) и высокой эффективностью. Но вот все примеры, которые я на нем вижу — консольные приложения.
Где веб и мобилки? Где работа с данным и веб-сервисы? Где асинхронный IO, который не требует слишком интрузивного буста или ацккого кода?
А когда я нахожу примеры, которые взаимодействуют с внешним миром, то это или буст, или голый С. Вся красота и мощЪ языка куда-то улетучивается.
Здравствуйте, Erop, Вы писали:
E>Я просил таки 2sql, а не просто интервалы... и с делегатами там что у нас?..
А что не так с делегатами? ) Они были в языке давным давно. А с появлением лямбд в C++11 вообще стало всё удобно. Разве что синтаксис несколько сомнительный у них... Но по удобству никаких минусов не вижу.
E>Ну, если ты думаешь, что сказал что-то новое, то нет. Анекдот про то, что сегодня потребности в колбасе нет, придумали ещё при Ильиче...
Эммм, какой-то странный вывод. Разве то, что я сказал что эти вещи не нужны, отменяет тот факт (который я тоже показал), что они без проблем реализованы в разных библиотеках и т.п? Ведь спор то был что в C++ эти фичи C# нереализуемы — я показал что делается без проблем. А то, что при этом в C++ есть механизмы лучше и поэтому нет смысла использовать данные реализации, никак не отменяет факта их существования.
Кстати, раз уж у нас пошло подобное сравнение и я подробно ответил на вопрос со своей стороны... Может теперь продемонстрируешь например аналог Boost.Spirit на C#? )
Здравствуйте, gandjustas, Вы писали:
G>Ты еще не понял, что это или не нужно или элементарно делается с помощью буста G>Теперь все ждут C++14 когда еще больше фишек буста войдет в STL\язык.
Вот уж кому явно не идут шуточки по этой теме, так это тебе. Последний раз, как видел тебя в подобной дискуссии, ты выкинул очаровательный возглас "Давай, детка, сделай это на C++" (http://www.rsdn.ru/forum/philosophy/5208679
), а после того, как тебе показали код, делающий именно требуемое, позорно по тихому слился из дискуссии, даже не признав свою ошибку. Бедный Ikemefula за тебя там отдувался как мог.
Здравствуйте, alex_public, Вы писали:
_>Здравствуйте, gandjustas, Вы писали:
G>>Ты еще не понял, что это или не нужно или элементарно делается с помощью буста G>>Теперь все ждут C++14 когда еще больше фишек буста войдет в STL\язык.
_>Вот уж кому явно не идут шуточки по этой теме, так это тебе. Последний раз, как видел тебя в подобной дискуссии, ты выкинул очаровательный возглас "Давай, детка, сделай это на C++" (http://www.rsdn.ru/forum/philosophy/5208679
), а после того, как тебе показали код, делающий именно требуемое, позорно по тихому слился из дискуссии, даже не признав свою ошибку. Бедный Ikemefula за тебя там отдувался как мог.
Перечитал, но так и не увидел полный код. Не было его тогда, нет и сейчас.
То что там писали про async в бусте, то это не более, чем аналог yield в C#. До полноценного async, как в C# ему очень далеко. Теоретически можно сделать, но начинаются проблемы с детерминированным освобождением памяти.
Ты сам разберись в вопросе, а то будут тебя бустом пугать, а ты и будешь не понимать шутки.
Здравствуйте, alex_public, Вы писали:
_>Здравствуйте, gandjustas, Вы писали:
G>>Ты еще не понял, что это или не нужно или элементарно делается с помощью буста G>>Теперь все ждут C++14 когда еще больше фишек буста войдет в STL\язык.
_>Вот уж кому явно не идут шуточки по этой теме, так это тебе. Последний раз, как видел тебя в подобной дискуссии, ты выкинул очаровательный возглас "Давай, детка, сделай это на C++" (http://www.rsdn.ru/forum/philosophy/5208679
), а после того, как тебе показали код, делающий именно требуемое, позорно по тихому слился из дискуссии, даже не признав свою ошибку. Бедный Ikemefula за тебя там отдувался как мог.
Сорри, чувак. Это ты всех пытаешься бустом запугать.
Так вот я тебе скажу — буст в плане async и IO умеет максимум 30% от того, что умеет C#.