Здравствуйте, alex_public, Вы писали:
_>Так ниша то не одна, а таких много разных. ) В итоге язык C по разным рейтингам уже много лет держится на одном уровне популярности с Java. А если добавить к нему ещё C++, то является самым популярным с большим отрывом.
Не будет у него никакого отрыва. не ясно как ты считаешь популярность. Ты наверное смотришь рейтинги навроде тиобе или какой мусор.
Смотреть нужно по вакансиям. Если си и сиплюс занимают в сумме больше, чем джава или шарп, это ничего не значит. В общей массе это будет около 20%, всё остальн
Вот скажем, java, .net, python, ruby, php, javascript вместе взятые это около 500 тыс вакансий на glassdoor `united states`.
С++ выдает ажно 370 тыс, но это за счет того, что выборке оказывается практически весь дотнет и обжектив-си. С учетом того, что дотнета реально около 120 тыс, то у сиплюса выходит всего 250 тыс и то это грязные результат
И до кучи — самый популярный язык с большим отрывом, это, внимание, JavaScript — его знают и постоянно применяют примерно 90% разработчиков, даже если в вакансиях это не указано.
Вобщем суммарно выходит так, что доля unmanaged только растет. Собственно ничего неудивительного здесь нет.
Здравствуйте, Ikemefula, Вы писали:
PM>>Если что, тема называется "Java vs C# vs C++" а не "Java vs Some other JVM lang" или "C# vs Another CLR lang"
I>Если про сравнение языков, надо сравнивать java c c++ в её JVM, иначе получится сравнение платформ.
Я могу утверждать в том же ключе — надо сравнивать C++ с Java без JVM, иначе получится сравнение платформ.
Реальность же такова, что Java без JVM не существует. И когда JVM приносит больше проблем, чем преимуществ адекватные разработчики это понимают (см. новость про ScyllaDB) а любители единственно правильного инструмента героически преодолевают трудности (LMAX)
PM>>Придёт native машинный код и будет поплевывать на малышей в песочницах свысока.
I>Это неинтересно. Практика показывает, что натив никогда никуда не приходит, кроме тех областей, в которых он сидел еще в 80х. Более того, у этого самого натива подсократилась ниша.
Вам уже во втрой раз неинтересно. Зачем же вы меняете тему дискуссии голословными утверждениями, игнорируя неудобные вопросы?
Здравствуйте, PM, Вы писали:
I>>Если про сравнение языков, надо сравнивать java c c++ в её JVM, иначе получится сравнение платформ.
PM>Я могу утверждать в том же ключе — надо сравнивать C++ с Java без JVM, иначе получится сравнение платформ.
Именно. Только джава и шарп тот же не содежат определенных вещей, которые обязательны для натива. Они полностью полагаются на джыт, интероп и прочие 'плюшки'.
Здравствуйте, Serginio1, Вы писали:
EP>>Для коллекций в C++ есть например алгоритмы, итераторы, Boost.Range. Причём по-возможности Boost.Range сохраняет категорию, то есть transformed может вернуть random-access. S> На ваши итераторы без слез смотреть тяжело. Linq это функциональщина с ленивым выполнением при этом построена на расширениях. Приведи аналог того что я тебе показал. Ведь линк можно применять не только кколекциям но и БД или ODATA http://infostart.ru/public/403524/
Да, и всё это является бледным подобием нормальных решений в C++ (или скажем в D). Причём не потому что Linq делали идиоты, а просто потому что C# не позволяет большего. Для настоящих умных решений требуется наличие элементов метапрограммирования в языке.
EP>>Это реализуется и в C++, причём с генерацией текста запроса во время компиляции. Подробнейшим образом обсуждалось вот в этой теме
. S> Генерация текста это далеко от того что называется Linq. В Linq вообще отсутствует понятие текста. S>Да и мне, что все 32 страницы просматривать? Я тебе на реальные страницы показываю со значениями тестов
Там речь шла про Linq2SQL (и аналоги из других языков), где как раз происходит генерация текстовых запросов.
Здравствуйте, alex_public, Вы писали:
_>Здравствуйте, Serginio1, Вы писали:
EP>>>Для коллекций в C++ есть например алгоритмы, итераторы, Boost.Range. Причём по-возможности Boost.Range сохраняет категорию, то есть transformed может вернуть random-access. S>> На ваши итераторы без слез смотреть тяжело. Linq это функциональщина с ленивым выполнением при этом построена на расширениях. Приведи аналог того что я тебе показал. Ведь линк можно применять не только кколекциям но и БД или ODATA http://infostart.ru/public/403524/
_>Да, и всё это является бледным подобием нормальных решений в C++ (или скажем в D). Причём не потому что Linq делали идиоты, а просто потому что C# не позволяет большего. Для настоящих умных решений требуется наличие элементов метапрограммирования в языке.
Тогда вам нужен Немерле, а он как известно на Нет
EP>>>Это реализуется и в C++, причём с генерацией текста запроса во время компиляции. Подробнейшим образом обсуждалось вот в этой теме
. S>> Генерация текста это далеко от того что называется Linq. В Linq вообще отсутствует понятие текста. S>>Да и мне, что все 32 страницы просматривать? Я тебе на реальные страницы показываю со значениями тестов
_>Там речь шла про Linq2SQL (и аналоги из других языков), где как раз происходит генерация текстовых запросов.
И я говорю, про Линк для ЕФ или ОДАТА или коллекций. Там абстрагируешься от того, во что в итоге преобразуется Линк. А еще блин метапрограммисты.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
_>>То, что TypeScript можно применять вместо с .net (как впрочем и C++ и Python) совершенно не делает .net необходимым для использования TypeScript. S>Но нужна среда для отладки и генерации TypeScript в JS. Я отлаживаю одновременно и серверный код и TypeScript.
Для динамических языков IDE в любом случае весьма слабые и не имеют особых преимуществ перед обычными мощными редакторами.
S>А вы его уже начали применять в Питоне? Гугл смотрю тоже подсуетились. Мне TS очень нравится, кучу JQuery библиотек типизировали. Хейлсберг молодец.
Т.к. я в целом любитель статической типизации, то мы естественно пробовали использовать TypeScript в наших делах, почти сразу после его появления. Но как-то не пошло. В том смысле, что не чувствовалось никаких практических бонусов от применения. Видимо вследствие того, что у нас слишком небольшие объёмы JS кода. Возможно на больших проектах смысл появился бы.
S> Но так было и раньше. Просто есть разница. Библиотеку написали 2 программиста С++ а используют тысячи Питонистов. Я никогда не заявлял, что C++ не нужен. S>Я говорил, что у него своя ниша.
А что, тут кто-то с этим спорил? )
_>>Так ниша то не одна, а таких много разных. ) В итоге язык C по разным рейтингам уже много лет держится на одном уровне популярности с Java. А если добавить к нему ещё C++, то является самым популярным с большим отрывом. S> Ну при этом количество программистов на 1С, PHP и прочие не учитываются. Я уже приводил статистику по России, где твои выкладки далеки от реальности
PHP уступает и C/C++ и Java (про 1C я вообще молчу — это вообще исключительно наше локальное развлечение). Надо просто понимать масштабы деятельности соответствующих языков. К примеру за каждым современным бытовым устройством, автомобилем, промышленными устройствами автоматизации и т.п. стоит команда программистов на C. Уже только этого одного, даже без учёта классического мира ПК, хватило бы для топовых мест в рейтингах. )))
Здравствуйте, Serginio1, Вы писали:
_>>Ну вот Linq ещё тянет на языковую абстракцию. А причём тут COM вообще? ) И что ещё за прокси в linq? ) S> Ну ты в Code First описал класс со свойствами и типами полей. При выполнении компилятор строит Dynamic прокси поверх него, для того что бы добавить свойства для доступа к базе навигационных свойств итд. S>https://msdn.microsoft.com/ru-ru/data/jj592886.aspx S> Там такая ситуация если не было приведения к какому то типу, то ты работаешь с прокси например при работе с неопределенном типом. И для сравнения с типом нужно пользоваться GetType().BaseType()
Насколько я понял, Code First — это всего лишь какая-то библиотечка ORM. Какое это имеет отношение к абстракциям языка? ) Подобное можно ввести в виде библиотеки в большинстве современных языков. Кстати, как раз вопрос различных ORM (а так же их эффективности) и обсуждался в темке, на которую кинул ссылку Евгений. И судя по ней, к Entity Framework с большим сомнением относятся даже любители C#. )))
S> При COM тоже строится прокси и работать с ними можно через dynamic. Это тоже абстракция
COM — это вообще внеязыковая технология. Если же обсуждать некие обёртки вокруг неё в конкретных языках, служащие для облегчения работы с ним, то таких библиотек опять же может быть множество. Кстати, какой конкретно аспект COM интересует? Создание своих объектов/интерфейсов. Или использование чужих?
Здравствуйте, alex_public, Вы писали:
_>PHP уступает и C/C++ и Java (про 1C я вообще молчу — это вообще исключительно наше локальное развлечение).
Ужос, неужели только в России надо обновлять софт под изменение законодательства ?
Открой для себя ERP и прочие SAP и тд. Языки большей частью менеджед или экзотика навроде абапа.
>Надо просто понимать масштабы деятельности соответствующих языков. К примеру за каждым современным бытовым устройством, автомобилем, промышленными устройствами автоматизации и т.п. стоит команда программистов на C. Уже только этого одного, даже без учёта классического мира ПК, хватило бы для топовых мест в рейтингах. )))
Это мягко говоря, заблуждение. На все бытовые устройства будет хорошо если десяток вендоров софта и там далеко не факт, что будет целиком С++.
С автомобилями ровно то же. Кроме того, по известным мене проектам там необязательно С++, а часто более низкоуровневый язык, чтото среднее между фортраном и ассемблером. Но есть, кстати говоря, и Джава.
EP>>>>Здесь в C++ варианте лямбда, ФВП и итераторы, а в C# варианте обычный рукопашный цикл S>>> Угу при этом Complex свой вместо https://msdn.microsoft.com/ru-ru/library/system.numerics.complex(v=vs.110).aspx EP>>И что? Уже вроде обсудили что это лишь для демонстрации. Вместо Complex там мог быть любой другой тип. S> А ну да взять, что то тормозное а потом говорить про тормоза.
А при чём тут тормозное? На C++ и C# были подобные реализации
S>Возми из другого int.
не устроил? Чем не устроил пример про замену структуры на класс? S> Я не вижу результатов теста.
1. Про замыкание результаты в первом сообщении темы — ввод замыкания на C# дал десятикратное замедление и гигабайты аллокаций. На C++ результат идентичен ручному коду. Или ты хочешь сказать что C# без замыканий мог обогнать C++? — не, несерьёзно.
2. По поводу замены структуры на класс — я уже ссылку приводил.
EP>>Ты не учитываешь например указатели на стэке. Предполагаю что ситуация в которой в нулевом поколении не выжил никто — маловероятна. S> Она как раз самая, что вероятная, особенно в серверных вариантах.
Приведи статистику.
S>Мало того, за кучей может следить GC в отдельном потоке.
Точно — конкурентная гадость, которая скорей всего не lock-free.
S>>> Ну у тебя совсем плохо с головой, раз ты мешаешь программистов и водителей в одну кучу. EP>>А у тебя нормально? Вклиниваешься в сугубо технический спор, и начинаешь петь пространные капитанские песни про целесообразность, общую стоимость, травить байки про всёвбазуупиреается, PHP'шников, при этом мешаешь в одну кучу программистов продуктовых компаний и 1С-ников S> Ну ты же поешь, про то что на C++ можно делать все.
Где? Это враньё.
Ты не знаешь C++, и делаешь предположения что там нет какой-то фичи, хотя она есть, или что там нужно писать жутко уродливый код, хотя и это не так.
Я и отвечаю — мол то-то и то-то реализуется. Из этого не следует что на нём можно всё.
Есть реальные пробелы, но ты их не указываешь
S>Я тебе говорю, что у него есть своя ниша и эта ниша давно не так как было в 90х.
Очередное кантианство, с которым никто и не собирался спорить. Зачем это капитанство в технические теме — не ясно.
EP>>Дальше что? Ты так и не сказал свой основной тезис. Тебе не нужен C++ — ну и замечательно S> Наконец то!
Ты ради этого развёл флуд? Чтобы намекнуть что лично тебе, для твоих задач C++ не нужен?
А — Адекватность
EP>>Для коллекций в C++ есть например алгоритмы, итераторы, Boost.Range. Причём по-возможности Boost.Range сохраняет категорию, то есть transformed может вернуть random-access. S> На ваши итераторы без слез смотреть тяжело.
Ты просто не умеешь их готовить.
S>Linq это функциональщина с ленивым выполнением
Смотри Boost.Range, если не понятно — спрашивай. Там как раз декларативность с ленивостью
S>при этом построена на расширениях.
Для этого расширения не нужны.
S>Приведи аналог того что я тебе показал.
Ты показывал что-то про коллекции?
Вот пример Boost.Range для коллекций:
values | filtered(_1 > 5) | transformed(_1 * 111)
причём на выходе можно получить bidirectional range.
Покажи аналог LINQ — сравним выразительность.
S>>>// Этот запрос получает значения периодического реквизита с ID 9697 в порядке убывания даты, времени, и строки документа S>>>... S>>>Генерируется следующий запрос EP>>Это реализуется и в C++, причём с генерацией текста запроса во время компиляции. Подробнейшим образом обсуждалось вот в этой теме
Здравствуйте, alex_public, Вы писали:
_>Здравствуйте, Serginio1, Вы писали:
_>>>То, что TypeScript можно применять вместо с .net (как впрочем и C++ и Python) совершенно не делает .net необходимым для использования TypeScript. S>>Но нужна среда для отладки и генерации TypeScript в JS. Я отлаживаю одновременно и серверный код и TypeScript.
_>Для динамических языков IDE в любом случае весьма слабые и не имеют особых преимуществ перед обычными мощными редакторами.
Значит ты VS не пробовал S>>А вы его уже начали применять в Питоне? Гугл смотрю тоже подсуетились. Мне TS очень нравится, кучу JQuery библиотек типизировали. Хейлсберг молодец.
_>Т.к. я в целом любитель статической типизации, то мы естественно пробовали использовать TypeScript в наших делах, почти сразу после его появления. Но как-то не пошло. В том смысле, что не чувствовалось никаких практических бонусов от применения. Видимо вследствие того, что у нас слишком небольшие объёмы JS кода. Возможно на больших проектах смысл появился бы.
А вот я работая с 1С где интеллисенсе очень убогий это сразу чувствую. Смысл в подсказках плюс выявления синтаксических ошибок еще на этапе кодирования.
Кстати возможно у него будет применение не только в браузерах.
Кстати есть и транслятор из C# в JS http://habrahabr.ru/company/enterra/blog/252079/
К счастью для него, счастливое будущее уже практически наступило. Есть такой проект, который называется DuoCode. Он умеет транслировать C#-код в JavaScript. Пока он в состоянии beta, но у него уже весьма неплохо получается: поддерживаются нововведения C# 6.0, Generic-типы, Reflection, структуры и LINQ, а отлаживать итоговый JavaScript можно на исходном C#.
S>> Но так было и раньше. Просто есть разница. Библиотеку написали 2 программиста С++ а используют тысячи Питонистов. Я никогда не заявлял, что C++ не нужен. S>>Я говорил, что у него своя ниша.
_>А что, тут кто-то с этим спорил? )
_>>>Так ниша то не одна, а таких много разных. ) В итоге язык C по разным рейтингам уже много лет держится на одном уровне популярности с Java. А если добавить к нему ещё C++, то является самым популярным с большим отрывом. S>> Ну при этом количество программистов на 1С, PHP и прочие не учитываются. Я уже приводил статистику по России, где твои выкладки далеки от реальности
_>PHP уступает и C/C++ и Java (про 1C я вообще молчу — это вообще исключительно наше локальное развлечение). Надо просто понимать масштабы деятельности соответствующих языков. К примеру за каждым современным бытовым устройством, автомобилем, промышленными устройствами автоматизации и т.п. стоит команда программистов на C. Уже только этого одного, даже без учёта классического мира ПК, хватило бы для топовых мест в рейтингах. )))
А почти на каждом произвотстве, торговле есть программист 1С. Да и форумы 1С кие полны народу. RSDN сдулся.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, alex_public, Вы писали:
_>Здравствуйте, Serginio1, Вы писали:
_>>>Ну вот Linq ещё тянет на языковую абстракцию. А причём тут COM вообще? ) И что ещё за прокси в linq? ) S>> Ну ты в Code First описал класс со свойствами и типами полей. При выполнении компилятор строит Dynamic прокси поверх него, для того что бы добавить свойства для доступа к базе навигационных свойств итд. S>>https://msdn.microsoft.com/ru-ru/data/jj592886.aspx S>> Там такая ситуация если не было приведения к какому то типу, то ты работаешь с прокси например при работе с неопределенном типом. И для сравнения с типом нужно пользоваться GetType().BaseType()
_>Насколько я понял, Code First — это всего лишь какая-то библиотечка ORM. Какое это имеет отношение к абстракциям языка? ) Подобное можно ввести в виде библиотеки в большинстве современных языков. Кстати, как раз вопрос различных ORM (а так же их эффективности) и обсуждался в темке, на которую кинул ссылку Евгений. И судя по ней, к Entity Framework с большим сомнением относятся даже любители C#. )))
Это не библиотечка. Она входит в состав Entity Framework для отображения модели на БД. http://infostart.ru/public/393228/
А это ни что иное как абстракция. По ней генерятся прокси классы, миграция итд.
S>> При COM тоже строится прокси и работать с ними можно через dynamic. Это тоже абстракция
_>COM — это вообще внеязыковая технология. Если же обсуждать некие обёртки вокруг неё в конкретных языках, служащие для облегчения работы с ним, то таких библиотек опять же может быть множество. Кстати, какой конкретно аспект COM интересует? Создание своих объектов/интерфейсов. Или использование чужих?
COM в Net это совсем другое, так как идет скрещивание ужа с колючей проволокой.
Меня не интересует. Я знаю. А в 1С там голый IDispatch без tld и ITypeInfo. В С# разруливается через dynamic
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S>Где предпочтительнее использовать C++, а где C#,Java и другие языки. S>1. С++ реально заточен под скорость.
Это всего лишь одна из областей, где C/C++ имеют огромное преимущество. Я бы скорее перечислил эти области так:
— тяжёлые вычисления (быстродействие здесь существенно, т.к. экономит время — деньги).
— реалтайм системы и близкие к ним (тут на самом деле много чего есть, от высоконагруженных серверов до тяжёлых 3D игр или CAD систем).
— системы с ограниченными ресурсами (я уже приводил примеры здесь). Это огромная область, причём постоянно растущая (а сейчас вообще в центре моды).
— системный код (работа с железом и т.п.). Никто же не пишет драйверы на Питоне, хотя там во многих случаях не требуется ни быстродействия ни ограниченности в ресурсах.
— реально кроссплатформенный код. К примеру единственная в данный момент полноценно кроссплатформенная GUI библиотека (Qt) написана на C++.
— метапрограммирование в мейнстрим языке.
Причём перечисленное — это не то где можно применять C++, а где его именно что выгоднее других применять. А можно практически везде, но в других областях могут быть удобнее другие решения.
S>Кстати а как там со скоростью компиляции и отладки? А то до недавнего времени многие программировали в блокноте
Ээээ что? ) Какой ещё блокнот? )))
S>2. Уровень сложности в С++ значительно превышает противопоставляемые ему языки
Это да.
S>3. Во многих случаях рулят динамические языки.
Да, есть области где динамика безусловно удобнее. Те же скрипты скажем.
S>C# достаточно простой язык сочетающий в себе как статическую типизацию, так и динамическую. Есть зачатки функциональщины.
Какая ещё динамическая типизация в C#? )))
S>Кроме самого языка огромную роль играет еще и VS в которую встроено для поддержки различных технологий, что приводит к удобству программирования и отладки
Для Java и C++ это всё тоже в наличие) Причём к тому же ещё и кроссплатформенное.
S>Выявим те отрасли где применим C++, а где C# и почему. S> Пока разговор свелся к тому, что у С# проблемы с инлайном и векторизацией. S>Теперь зададимся вопросом, а какова доля в приложении таких недостатков?
Это всё уже давно обсуждалось на этом форуме. Главные преимущества Java и C# хорошо известны — эти языки позволяют достаточно безопасно использовать не особо квалифицированных программистов, что является крайне удобным для большинства не IT компаний (так называемый enterprise, но только своими силами, а не через заказ у профильных компаний).
EP>1. Про замыкание результаты в первом сообщении темы — ввод замыкания на C# дал десятикратное замедление и гигабайты аллокаций. На C++ результат идентичен ручному коду. Или ты хочешь сказать что C# без замыканий мог обогнать C++? — не, несерьёзно.
Так дай конкретную ссылку. Я не ленюсь и даю людям информацию. А когда говорят об гигабайты аллокаций это вообще сумасшедший сценарий и неправильный выбор алгоритма. EP>2. По поводу замены структуры на класс — я уже ссылку приводил.
EP>>>Ты не учитываешь например указатели на стэке. Предполагаю что ситуация в которой в нулевом поколении не выжил никто — маловероятна. S>> Она как раз самая, что вероятная, особенно в серверных вариантах.
EP>Приведи статистику.
Почитай статей огромное количетво.
S>>Мало того, за кучей может следить GC в отдельном потоке.
EP>Точно — конкурентная гадость, которая скорей всего не lock-free.
Я давно не интересовался. Меня GC давно не беспокоит. Только вызываю его при работе с ком.
S>>>> Ну у тебя совсем плохо с головой, раз ты мешаешь программистов и водителей в одну кучу. EP>>>А у тебя нормально? Вклиниваешься в сугубо технический спор, и начинаешь петь пространные капитанские песни про целесообразность, общую стоимость, травить байки про всёвбазуупиреается, PHP'шников, при этом мешаешь в одну кучу программистов продуктовых компаний и 1С-ников S>> Ну ты же поешь, про то что на C++ можно делать все.
EP>Где? Это враньё. EP>Ты не знаешь C++, и делаешь предположения что там нет какой-то фичи, хотя она есть, или что там нужно писать жутко уродливый код, хотя и это не так. EP>Я и отвечаю — мол то-то и то-то реализуется. Из этого не следует что на нём можно всё. EP>Есть реальные пробелы, но ты их не указываешь
Ну так почему столько программистов 1С программирующих на чудовищно медленном интерпретаторе. Значит скорость бизнес слоя в итоге не важна.
Нужна скорость SQL
S>>Я тебе говорю, что у него есть своя ниша и эта ниша давно не так как было в 90х.
EP>Очередное кантианство, с которым никто и не собирался спорить. Зачем это капитанство в технические теме — не ясно.
EP>>>Дальше что? Ты так и не сказал свой основной тезис. Тебе не нужен C++ — ну и замечательно S>> Наконец то!
EP>Ты ради этого развёл флуд? Чтобы намекнуть что лично тебе, для твоих задач C++ не нужен? EP>А — Адекватность
Я тебе специально стишок привел. Мамы разные нужны, мамы разные важны. Понадобится мне C++ поверь применю и его. Блюя, но применю. EP>>>Для коллекций в C++ есть например алгоритмы, итераторы, Boost.Range. Причём по-возможности Boost.Range сохраняет категорию, то есть transformed может вернуть random-access. S>> На ваши итераторы без слез смотреть тяжело.
EP>Ты просто не умеешь их готовить.
Мне линк больше нравится или Хаскель
S>>Linq это функциональщина с ленивым выполнением
EP>Смотри Boost.Range, если не понятно — спрашивай. Там как раз декларативность с ленивостью
S>>при этом построена на расширениях.
EP>Для этого расширения не нужны.
S>>Приведи аналог того что я тебе показал.
EP>Ты показывал что-то про коллекции? EP>Вот пример Boost.Range для коллекций: EP>
S>>>>// Этот запрос получает значения периодического реквизита с ID 9697 в порядке убывания даты, времени, и строки документа S>>>>... S>>>>Генерируется следующий запрос EP>>>Это реализуется и в C++, причём с генерацией текста запроса во время компиляции. Подробнейшим образом обсуждалось вот в этой теме
. S>> Генерация текста это далеко от того что называется Linq. В Linq вообще отсутствует понятие текста.
EP>В результате генерируется текст запроса, так понятнее
В итоге мне наплевать, вто что трансформирутся Linq запрос.
S>>Да и мне, что все 32 страницы просматривать?
EP>Если интересна тема — смотри, там много разного. Конкретный пример на тему — sqlpp11.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S>Давай что бы закончить дискуссию сделаем выводы. S>Где предпочтительнее использовать C++, а где C#,Java и другие языки. S>1. С++ реально заточен под скорость.
Да, и не только.
S>Кстати а как там со скоростью компиляции
Скорость компиляции медленнее чем у других mainstream языков.
S>и отладки?
А что с отладкой? Тот же Edit and Continue был уже давно.
S>А то до недавнего времени многие программировали в блокноте
В каком блокноте?
S>2. Уровень сложности в С++ значительно превышает противопоставляемые ему языки
Сам язык сложнее безусловно. Но из этого не следует для старта нужно знать всю эту сложность.
S>3. Во многих случаях рулят динамические языки.
Это спорный тезис.
S>Выявим те отрасли где применим C++, а где C# и почему.
Не, у тебя это не получится — ты банально не знаешь C++, и судишь по нему на основе стародавней мифологии.
S> Пока разговор свелся к тому, что у С# проблемы с инлайном и векторизацией.
Это же передёргивание, я уже несколько раз сказал что векторизацию не учитываю, так сказать даю фору. И проблемы не только с инлайном — я уже их перечислял, но ты опять игнорируешь.
S>Теперь зададимся вопросом, а какова доля в приложении таких недостатков?
Здравствуйте, Ikemefula, Вы писали:
_>>Потому что там этих оптимизаторов просто нет. ) I>Именно. Осталось объяснить, что же это за заговор такой — такой распрекрасный язык, раза в два даст прибавки к производительности а оптимизаторов — нет.
Не знаю про C++ для JVM (я про такое даже никогда не слышал), а скажем версия C++ для .net — это не C++, а какая-то хрень убогая. ))) Причём опять же не потому, что авторы идиоты, а потому что физически невозможно создать нормальный C++ под clr.
Здравствуйте, alex_public, Вы писали:
_>Причём опять же не потому, что авторы идиоты, а потому что физически невозможно создать нормальный C++ под clr.
Здравствуйте, Ikemefula, Вы писали:
_>>Так ниша то не одна, а таких много разных. ) В итоге язык C по разным рейтингам уже много лет держится на одном уровне популярности с Java. А если добавить к нему ещё C++, то является самым популярным с большим отрывом. I>Не будет у него никакого отрыва. не ясно как ты считаешь популярность. Ты наверное смотришь рейтинги навроде тиобе или какой мусор. I>Смотреть нужно по вакансиям. Если си и сиплюс занимают в сумме больше, чем джава или шарп, это ничего не значит. В общей массе это будет около 20%, всё остальн I>Вот скажем, java, .net, python, ruby, php, javascript вместе взятые это около 500 тыс вакансий на glassdoor `united states`. I>С++ выдает ажно 370 тыс, но это за счет того, что выборке оказывается практически весь дотнет и обжектив-си. С учетом того, что дотнета реально около 120 тыс, то у сиплюса выходит всего 250 тыс и то это грязные результат
Ну и? ) Ты по сути подтверждаешь мои слова. Да, и если что, можно быть лидером рынка и с 5% от него — всё зависит от расклада по остальным участникам. )))
I>И до кучи — самый популярный язык с большим отрывом, это, внимание, JavaScript — его знают и постоянно применяют примерно 90% разработчиков, даже если в вакансиях это не указано.
JS держится на неплохом уровне только из-за принуждения к его использованию в браузерах.
I>Вобщем суммарно выходит так, что доля unmanaged только растет. Собственно ничего неудивительного здесь нет.
Ты видимо хотел сказать "managed"? ) Ну и как бы с этим никто и не спорит. Тем более, что самое интенсивное развитие в последнее десятилетие было со стороны веб'а. Хотя сейчас ситуация понемногу начинает меняться... )
Здравствуйте, Ikemefula, Вы писали:
I>>>Сравнивать нужно с С++ под JVM, что бы все были в равных условиях. EP>>А я что предлагаю? Не, ну действительно "буквы не читай, сообщения пиши" EP>>
EP>>>Можем сделать тест: пишем примерно одинаковый код с небольшими абстракциями на Java и на C++.
EP>>>C++ перегоняем в Java по следующей схеме: C++ -> JavaScript через Emscripten -> Java механически вручную, без принципиальных изменений.
EP>>>Согласен?
I>Джаваскрипт что ли стал уже сиплюсплюсом или что ?
Если не понял схему, сразу бы вопрос задал.
Поясняю. Нормального компилятора C++ -> JVM я не знаю, ты его тоже не привёл. Для сравнения я предлагаю перевести C++ в Java по следующей схеме:
1. Компилируем C++ в JavaScript, с помощью Emscripten.
2. Из получившегося JavaScript кода выдираем релевантные куски, механически переводим их в Java код без принципиальных изменений и делаем необходимый мини-обвяз (на замену тому которые был в JavaScript коде).
Схема ясна?
_>Какая ещё динамическая типизация в C#? )))
ключевое слово dynamic S>>Кроме самого языка огромную роль играет еще и VS в которую встроено для поддержки различных технологий, что приводит к удобству программирования и отладки
_>Для Java и C++ это всё тоже в наличие) Причём к тому же ещё и кроссплатформенное.
S>>Выявим те отрасли где применим C++, а где C# и почему. S>> Пока разговор свелся к тому, что у С# проблемы с инлайном и векторизацией. S>>Теперь зададимся вопросом, а какова доля в приложении таких недостатков?
_>Это всё уже давно обсуждалось на этом форуме. Главные преимущества Java и C# хорошо известны — эти языки позволяют достаточно безопасно использовать не особо квалифицированных программистов, что является крайне удобным для большинства не IT компаний (так называемый enterprise, но только своими силами, а не через заказ у профильных компаний).
То есть скорость разработки и инструментов не важны?
А вот представь, что я программирую на нескольких языках. Мне нужно найти примеры для решения огромного круга задач. Совместить их с 1С.
Для C# я нахожу все быстро и применяю.
Для большинства задач скорости выше крыши. Те недостатки которые есть не являются критическими, а в основных реалиях код на C# генерит тот же машинный код, что и C++.
А вот для многих и C# и Java тоже оочень сложны.
S>>Выявим те отрасли где применим C++, а где C# и почему.
EP>Не, у тебя это не получится — ты банально не знаешь C++, и судишь по нему на основе стародавней мифологии.
Ну ты же знаешь все. Так что можешь и ответить на этот вопрос. S>> Пока разговор свелся к тому, что у С# проблемы с инлайном и векторизацией.
EP>Это же передёргивание, я уже несколько раз сказал что векторизацию не учитываю, так сказать даю фору. И проблемы не только с инлайном — я уже их перечислял, но ты опять игнорируешь.
S>>Теперь зададимся вопросом, а какова доля в приложении таких недостатков?
EP>В каком приложении?
Вооооо. Наконец то. А то сферический конь.
Еще раз задам вопрос
Выявим те отрасли где применим C++, а где C# и почему.
и солнце б утром не вставало, когда бы не было меня