Re[31]: Java vs C# vs C++
От: Evgeny.Panasyuk Россия  
Дата: 03.10.15 20:39
Оценка:
Здравствуйте, Serginio1, Вы писали:

EP>>Если нужно вызвать метод с произвольным именем (method) и произвольным количеством аргументов (a1, a2, ...), без всякого предварительного описания — то можно например вот так:

EP>>
EP>>Dynamic x = ...;

EP>>x.call("method", a1, a2, ...);
EP>>// or
EP>>x("method", a1, a2, ...);
EP>>// or
EP>>x > "method"_(a1, a2, ...);
EP>>
А если заранее описать список возможных имён методов, то можно и так:

EP>>
EP>>x.method(a1, a2, ...)
EP>>

S> Но согласись все равно убожество. Читать такой код неудобно.

Немного непривычно — да, возможно. Но не убожество точно. Тем более перечислив имена один раз получаем x.method(a1, a2, ...)
Да и ты разве про это изначально говорил?

S>На C# Сделать прокси легко. Вот например как обернуть в Idispatch любой объект .Net

S>http://infostart.ru/public/238584/

Использовать C++ из Python/Java/C# тоже легко — смотри SWIG. Или например Boost.Python.

S> Кстати про инлайн

S>http://stackoverflow.com/questions/23374815/creating-inline-functions-and-macros
S>http://aakinshin.net/ru/blog/dotnet/inlining-and-starg/

Инлайнинг обычного вызова не особо интересно. Покажи инлайнинг например для замыкания внутри ФВП.
Отредактировано 03.10.2015 20:42 Evgeny.Panasyuk . Предыдущая версия . Еще …
Отредактировано 03.10.2015 20:40 Evgeny.Panasyuk . Предыдущая версия .
Re[32]: Java vs C# vs C++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 03.10.15 20:42
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

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


EP>>>Приехали, у меня не было ни одного примера на векторизацию. Я даже явно сказал, что я в своём тезисе векторизацию не учитываю, ибо это удар ниже пояса.

EP>>>А примеры по ссылкам которые я приводил, там и исходный код, и сгенерированный и т.д. и т.п. Например вот тут
Автор: Evgeny.Panasyuk
Дата: 27.09.15
.

S>> Сколько многократные. Результаты сравнения пожалуйста. Максимум там в 2 раза.

EP>* В два раза это только один пример, и то там C++ внутри JS.

EP>* Был пример про замыкание
Автор: Evgeny.Panasyuk
Дата: 23.12.14
— там разница больше чем 10x.

EP>* Приводил несколько примеров показывающих что даёт замена на ссылочную структуру (которые дефолтные в управляемых средах) — там было 80x и 200x.

S>>Нашел http://rsdn.ru/forum/flame.comp/6069138.1
Автор: greenpci
Дата: 05.06.15


EP>Здесь в C++ варианте лямбда, ФВП и итераторы, а в C# варианте обычный рукопашный цикл

Угу при этом Complex свой вместо https://msdn.microsoft.com/ru-ru/library/system.numerics.complex(v=vs.110).aspx


S>>Зато сказать многократные это красиво. Я об этом тебе давным давно говорил и это было извесно лет 11 еще на видби.


EP>Хочешь отрицать реальность, не хочешь видеть примеры? Твоё право, но мне уже надоедает по несколько раз приводить одни и те же примеры.

Так не вижу тестов то.

EP>>>В какой из стратегий сбор мусора это "просто сдвиг указателя конца кучи на начало"?

EP>>>Здесь сбор мусора это именно то что называют GC в C# и Java, то есть не надо сюда приплетать регионы.
S>> Старшие поколения не используются для анализа. Используются только изменения если изменений не было, значит нет достижимых объектов, значит можно передвинуть указатель кучи на начало.

EP>Указатель какой именно кучи на начало? Какого поколения?

Нулевого.


EP>Разных GC и их настроек тоже зоопарк, а также целый зоопарк всяких off heap решений, возникших не от праздного интереса.

Каких именно. Я никаких настроек GC не трогаю.

EP>Причём тут конкуренция? Глобально задача у каждого программиста заработать денег (не считая for fun и т.п.), себе лично, а не конкурировать с кем-то. Ты же в это русло переводишь


Ну у тебя совсем плохо с головой, раз ты мешаешь программистов и водителей в одну кучу.
Напомню тебе, что в 90 х основными программистами были С и С++. К ним добавлялись фокспрошники дибейсники бейсики и паскалиты дельфисты.
Ни Java C# ну и конечно 1C не было и в помине. По мере доступности компьютеров нужны были специалисты коих не хватало как для бухгалтерских задач, так и с ростом интернета писателей сайтов итд. Стало понятно, что С++ сложен, а нужны были программисты сейчас в том числе студенты и тд. Стали появляться программы типа 1С, ПХП, ну и Java C#. Кстати многие С++ доказывавших на этом форуме с пеной у рта каков крутой С++ в итоге перешли на C#, Немерле итд.
Многие из них не ездят на машине.


S>> В Net он по сути используется везде и с огромным удовольствием. Сначала был скептицизм, который года через 2 пропалю


EP>Конкретно где везде? Для каких задач?

Там где есть коллекции, для доступа к БД
EP>>>И что? Схема же есть где-то?
EP>>>Или хочешь сказать, что до запуска программы там неизвестно что, и программы реализуют ИИ чтобы понять что делать чтобы решить задачу?
S>> Есть, но её нужно реализовать вручную. А ведь лень. в C# есть динамики.

S>>Кстати Linq то ленивый и его можно склеивать итд и получать типизированные данные


EP>Опиши в двух словах что конкретно имеешь в виду.

Я же тебе ссылочку давал http://infostart.ru/public/402433/ там куча ссылок. В двух словах тяжело объяснять.

Так же в Linq можно склеивать запросы, накладывая новые ограничения. Это связано с ленивостью запросов



// Этот запрос получает значения периодического реквизита с ID 9697 в порядке убывания даты, времени, и строки документа



            var query = from Константа in бд.ТаблицаКонстанты

                        where Константа.ID == 9697

                        orderby Константа.DATE descending, Константа.TIME descending, Константа.DOCID descending, Константа.ROW_ID descending

                        select Константа;





// Используем query в другом запросе добавив к на нему условия на элемент владелец и дату равную или меньше значение реквизита элемента справочника. В итоге получаем последнее значение и дату периодического элемента на дату заданную в реквизите элемента справочника.




            var query2 = (from спр in бд.Спр_ДляПериодических

                          selectnew

                          {

                              Наименование = спр.Наименование,

                              ДатаСпр = спр.ДатаСпр,

                              Периодические = (from прериод in query.Where(х => х.OBJID == спр.ID && х.DATE <= спр.ДатаСпр).Take(1)

                                               select  new

                                               {

                                                   Значение = прериод.VALUE,

                                                   Дата = прериод.DATE

 

                                               }).FirstOrDefault()

 

                          }

                             );






Например, можно также и расширять условия
http://www.albahari.com/nutshell/predicatebuilder.aspx
https://github.com/scottksmith95/LINQKit

Можно, например, написать условие по OR
Можно написать обобщенную функцию



  public  IQueryable<TEntity> НайтиПоВхождениюВНаименование<TEntity>(paramsstring[] keywords) where TEntity : СправочникПредок

        {

            var predicate = PredicateBuilder.False<TEntity>();

 

            foreach (string keyword in keywords)

            {

                string temp = keyword;

                predicate = predicate.Or(p => p.Наименование.Contains(temp));

            }

            returnthis.Set<TEntity>().AsExpandable().Where(predicate);

        }






И использовать



var бд = Константы1С.ГлобальныйКонтекст.БД;

 

            var запрос = бд.НайтиПоВхождениюВНаименование<Справочник.Номенклатура>("Linq", "Наше", "Все").Select(товар => товар.Наименование);

 

            foreach (varтоварinзапрос)

            {

 

                Console.WriteLine("{0} ", товар);

 

            }


Генерируется следующий запрос


SELECT

    [Extent1].[DESCR] AS [DESCR]

    FROM [dbo].[SC84] AS [Extent1]

 

    WHERE ([Extent1].[DESCR] LIKE @p__linq__0 ESCAPE N'~') 

          OR([Extent1].[DESCR] LIKE @p__linq__1 ESCAPE N'~') 

          OR([Extent1].[DESCR] LIKE @p__linq__2 ESCAPE N'~')
и солнце б утром не вставало, когда бы не было меня
Re[32]: Java vs C# vs C++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 03.10.15 20:51
Оценка: :)
Здравствуйте, Evgeny.Panasyuk, Вы писали:

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



EP>Немного непривычно — да, возможно. Но не убожество точно. Тем более перечислив имена один раз получаем x.method(a1, a2, ...)

EP>Да и ты разве про это изначально говорил?

S>>На C# Сделать прокси легко. Вот например как обернуть в Idispatch любой объект .Net

S>>http://infostart.ru/public/238584/

EP>Использовать C++ из Python/Java/C# тоже легко — смотри SWIG. Или например Boost.Python.

В С# только статические методы и то с шаманством. А из 1С вообще никак.
S>> Кстати про инлайн
S>>http://stackoverflow.com/questions/23374815/creating-inline-functions-and-macros
S>>http://aakinshin.net/ru/blog/dotnet/inlining-and-starg/

EP>Инлайнинг обычного вызова не особо интересно. Покажи инлайнинг например для замыкания внутри ФВП.


Если ты хочешь скорость, то зачем же тебе замыкания? Замыкания это класс который генерится при компиляции.
Если мне нужна скорость, то я сам создам класс и помечу функцию для инлайна. А то видители Dynamic не убожество, а класс это уже фи подавай им замыкания.
Я буду выбирать, то что считаю нужным. Но в большинстве случаев я выбеоу замыкания наплевав на производительнось. Инлайнинг это еще и раздувание кода.
и солнце б утром не вставало, когда бы не было меня
Отредактировано 03.10.2015 20:58 Serginio1 . Предыдущая версия .
Re[27]: Java vs C# vs C++
От: alex_public  
Дата: 03.10.15 20:55
Оценка:
Здравствуйте, Serginio1, Вы писали:

EP>>Как раз таки проблема в языках, об этом и речь. Высокоуровневый C++ быстрый отнюдь не только потому что для него оптимизаторы лучше, а во многом потому что в самом языке есть бесплатные, или практически бесплатные абстракции и высокоуровневые инструменты.

S> В C# еще больше. Посмотри на тот же Code First и Linq. Я без слез не могу смотреть на код С++ которые через COM вызывают 1С работая с Idispatch.

А какая связь между Linq и COM? ))) И в чём смысл вообще сравнивать языковую конструкцию и некую технологию, вообще не зависящую от языка? )
Re[11]: Java vs C# vs C++
От: alex_public  
Дата: 03.10.15 20:58
Оценка:
Здравствуйте, Ikemefula, Вы писали:

_>>Ну и ещё не забываем про то, что у главных компиляторов C++ в данным момент мощнейшие в мире оптимизаторы.

I>Только что сам сказал 'язык ни при чем,платформа при чем' и теперь оказывыется, что язык таки наше всё ?

Не язык, а оптимизаторы в конкретных компиляторах для него. ) Ну и как раз было указано, что это совсем не "наше всё", а где-то двукратное увеличение быстродействия (из суммарного десятикратного).

I>Определись. ПОчему не видно никаких чудес у С/С++ на платформе джава или дотнет ?


Потому что там этих оптимизаторов просто нет. )
Re[28]: Java vs C# vs C++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 03.10.15 21:01
Оценка:
Здравствуйте, alex_public, Вы писали:

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


EP>>>Как раз таки проблема в языках, об этом и речь. Высокоуровневый C++ быстрый отнюдь не только потому что для него оптимизаторы лучше, а во многом потому что в самом языке есть бесплатные, или практически бесплатные абстракции и высокоуровневые инструменты.

S>> В C# еще больше. Посмотри на тот же Code First и Linq. Я без слез не могу смотреть на код С++ которые через COM вызывают 1С работая с Idispatch.

_>А какая связь между Linq и COM? ))) И в чём смысл вообще сравнивать языковую конструкцию и некую технологию, вообще не зависящую от языка? )

Он говорил про абстракции. А связь между линк и ком это создание прокси
и солнце б утром не вставало, когда бы не было меня
Re[29]: Java vs C# vs C++
От: alex_public  
Дата: 03.10.15 21:13
Оценка: +2
Здравствуйте, Serginio1, Вы писали:

_>>А причём тут TypeScript и .Net? )

S> Как это причем? TypeScript в ASP.NET MVC

То, что TypeScript можно применять вместо с .net (как впрочем и C++ и Python) совершенно не делает .net необходимым для использования TypeScript.

_>>Он там везде — на нём написаны: сервер (nginx), интерпретатор скриптов (Python), база данных (PostgreSQL/MySQL/SQlite).

S> То есть в итоге то ты пишешь на питоне, а не на С++. Мы уже про это говорили, что ниша С++ там где нужна скорость. А там где скорость разработки ты же сам используешь питон.

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

Я вот могу ещё один очень известный пример привести на похожую тему. Питон сейчас очень популярен в научной среде. Причём не только для написания скриптов (что логично), но и для сложных и тяжёлых вычислений. Казалось бы нонсенс, но секрет раскрывается просто — для таких дел используются специальные библиотеки (типа numpy), которые написаны опять же на C/C++. В итоге получаем сочетания максимального быстрого написания кода с одновременной неплохой производительностью.

_>>Во многих местах нет возможности выбрать технологию, как раз потому что аналоги слишком жирные/медленные. )))

S> Ну и какова емкость этой ниши?

Так ниша то не одна, а таких много разных. ) В итоге язык C по разным рейтингам уже много лет держится на одном уровне популярности с Java. А если добавить к нему ещё C++, то является самым популярным с большим отрывом.

S> Я не против С++. Я про то, что он не универсален, как тут пытаются заявить. И что скорость в большинстве случаев не является главным критерием, даже во времена когда память в 64 КБ была естественным делом. Помню писал на паскале на ДВК 2 и время компиляции было полчаса. В то же время на Бейсике пусть и с огромными тормозами, но не было задержек с компиляцией. И большинство использовало бейсик


Скорость является главным критерием в ряде ниш. Но это действительно не единственный критерий, по которому выбирают C/C++. В других нишах его выбирают за другие преимущества. Ну а в некоторых нишах (типа тех же скриптов например) не выбирают вовсе. )))
Re[29]: Java vs C# vs C++
От: alex_public  
Дата: 03.10.15 21:15
Оценка:
Здравствуйте, Serginio1, Вы писали:

_>>А какая связь между Linq и COM? ))) И в чём смысл вообще сравнивать языковую конструкцию и некую технологию, вообще не зависящую от языка? )

S> Он говорил про абстракции. А связь между линк и ком это создание прокси

Ну вот Linq ещё тянет на языковую абстракцию. А причём тут COM вообще? ) И что ещё за прокси в linq? )
Re[33]: Java vs C# vs C++
От: Evgeny.Panasyuk Россия  
Дата: 03.10.15 21:23
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>>>Нашел http://rsdn.ru/forum/flame.comp/6069138.1
Автор: greenpci
Дата: 05.06.15

EP>>Здесь в C++ варианте лямбда, ФВП и итераторы, а в C# варианте обычный рукопашный цикл
S> Угу при этом Complex свой вместо https://msdn.microsoft.com/ru-ru/library/system.numerics.complex(v=vs.110).aspx

И что? Уже вроде обсудили что это лишь для демонстрации. Вместо Complex там мог быть любой другой тип.

S>>>Зато сказать многократные это красиво. Я об этом тебе давным давно говорил и это было извесно лет 11 еще на видби.


EP>>Хочешь отрицать реальность, не хочешь видеть примеры? Твоё право, но мне уже надоедает по несколько раз приводить одни и те же примеры.

S>Так не вижу тестов то.

Чем пример про замыкание
Автор: Evgeny.Panasyuk
Дата: 23.12.14
не устроил? Чем не устроил пример про замену структуры на класс?

EP>>>>В какой из стратегий сбор мусора это "просто сдвиг указателя конца кучи на начало"?

EP>>>>Здесь сбор мусора это именно то что называют GC в C# и Java, то есть не надо сюда приплетать регионы.
S>>> Старшие поколения не используются для анализа. Используются только изменения если изменений не было, значит нет достижимых объектов, значит можно передвинуть указатель кучи на начало.
EP>>Указатель какой именно кучи на начало? Какого поколения?
S>Нулевого.

Ты не учитываешь например указатели на стэке. Предполагаю что ситуация в которой в нулевом поколении не выжил никто — маловероятна.

EP>>Причём тут конкуренция? Глобально задача у каждого программиста заработать денег (не считая for fun и т.п.), себе лично, а не конкурировать с кем-то. Ты же в это русло переводишь

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

А у тебя нормально? Вклиниваешься в сугубо технический спор, и начинаешь петь пространные капитанские песни про целесообразность, общую стоимость, травить байки про всёвбазуупиреается, PHP'шников, при этом мешаешь в одну кучу программистов продуктовых компаний и 1С-ников

S>Напомню тебе, что в 90 х основными программистами были С и С++. К ним добавлялись фокспрошники дибейсники бейсики и паскалиты дельфисты.

S>Ни Java C# ну и конечно 1C не было и в помине. По мере доступности компьютеров нужны были специалисты коих не хватало как для бухгалтерских задач, так и с ростом интернета писателей сайтов итд. Стало понятно, что С++ сложен, а нужны были программисты сейчас в том числе студенты и тд. Стали появляться программы типа 1С, ПХП, ну и Java C#. Кстати многие С++ доказывавших на этом форуме с пеной у рта каков крутой С++ в итоге перешли на C#, Немерле итд.
S>Многие из них не ездят на машине.

Дальше что? Ты так и не сказал свой основной тезис. Тебе не нужен C++ — ну и замечательно

S>>> В Net он по сути используется везде и с огромным удовольствием. Сначала был скептицизм, который года через 2 пропалю

EP>>Конкретно где везде? Для каких задач?
S> Там где есть коллекции

Для коллекций в C++ есть например алгоритмы, итераторы, Boost.Range. Причём по-возможности Boost.Range сохраняет категорию, то есть transformed может вернуть random-access.

EP>>>>И что? Схема же есть где-то?

EP>>>>Или хочешь сказать, что до запуска программы там неизвестно что, и программы реализуют ИИ чтобы понять что делать чтобы решить задачу?
S>>> Есть, но её нужно реализовать вручную. А ведь лень. в C# есть динамики.
S>>>Кстати Linq то ленивый и его можно склеивать итд и получать типизированные данные
EP>>Опиши в двух словах что конкретно имеешь в виду.
S> Я же тебе ссылочку давал http://infostart.ru/public/402433/ там куча ссылок. В двух словах тяжело объяснять.
S>Так же в Linq можно склеивать запросы, накладывая новые ограничения. Это связано с ленивостью запросов

Ленивость (в том числе и compile-time), Expression Templates, их склейка, и типизация всего этого есть и в C++. Я поэтому и уточняю.

S>// Этот запрос получает значения периодического реквизита с ID 9697 в порядке убывания даты, времени, и строки документа

S>...
S>Генерируется следующий запрос

Это реализуется и в C++, причём с генерацией текста запроса во время компиляции. Подробнейшим образом обсуждалось вот в этой теме
Автор: gandjustas
Дата: 13.04.15
.
Re[30]: Java vs C# vs C++
От: Evgeny.Panasyuk Россия  
Дата: 03.10.15 21:24
Оценка:
Здравствуйте, alex_public, Вы писали:

_>>>А какая связь между Linq и COM? ))) И в чём смысл вообще сравнивать языковую конструкцию и некую технологию, вообще не зависящую от языка? )

S>> Он говорил про абстракции. А связь между линк и ком это создание прокси
_>Ну вот Linq ещё тянет на языковую абстракцию.

Причём разговор был не просто про абстракции, а про бесплатные
Re[33]: Java vs C# vs C++
От: Evgeny.Panasyuk Россия  
Дата: 03.10.15 21:37
Оценка:
Здравствуйте, Serginio1, Вы писали:

EP>>Использовать C++ из Python/Java/C# тоже легко — смотри SWIG. Или например Boost.Python.

S> В С# только статические методы и то с шаманством.

Тоже не читатель? SWIG.

S>>> Кстати про инлайн

S>>>http://stackoverflow.com/questions/23374815/creating-inline-functions-and-macros
S>>>http://aakinshin.net/ru/blog/dotnet/inlining-and-starg/
EP>>Инлайнинг обычного вызова не особо интересно. Покажи инлайнинг например для замыкания внутри ФВП.
S> Если ты хочешь скорость, то зачем же тебе замыкания?

Странная логика, а почему я должен от них отказываться? Мне удобно с ними, как и с кучей других возможностей

S>Замыкания это класс который генерится при компиляции.

S>Если мне нужна скорость, то я сам создам класс и помечу функцию для инлайна.

А на C++ можно просто использовать в "быстром" коде те же самые замыкания которые были и "медленном" коде, представляешь?

S>А то видители Dynamic не убожество, а класс это уже фи подавай им замыкания.


Там дело не только в классе — тебе и ФВП придётся переписывать

S>Я буду выбирать, то что считаю нужным.


Конечно, основываясь на знаниях о тормознутости замыканий.

S>Но в большинстве случаев я выбеоу замыкания наплевав на производительнось.


Действительно — замыкания удобны
Re[13]: Java vs C# vs C+
От: PM  
Дата: 03.10.15 21:52
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Где ты видишь, что я пишу "управляемые среды выиграют у нативных" ?

I>Написано прямо противоположное: "Джава и шарп рвут всё на ____своих____ платформах."

Вообще то это не прямо противоположное, эти утверждения логически не связаны.

I>Так что да, буквы не читай.


Художественно режем цитаты, меняя контекст? Давайте я вам помогу восстановить его:



PM>> Только тролль или эльф может утверждать, что программы в управляемых средах будут выигрывать у native. Сказкам про победную поступь JIT исполнилось уже 20 лет
PM>> Ну а кто там в песочнице быстрее между собой Java или Scala, C# или Nemerle это как то выходит за пределы темы



Если что, тема называется "Java vs C# vs C++" а не "Java vs Some other JVM lang" или "C# vs Another CLR lang"

Прошу прощения, если отсылку к троллям или эльфам вы приняли на свой счёт. Я всего лишь утверждал что неважно, кто кого в управляемой песочнице порвёт. Придёт native машинный код и будет поплевывать на малышей в песочницах свысока.

Кстати, вы так и не ответили, какой компилятор C++ для JVM вы имели ввиду и какова его область применения. Раз вы про это упомянули, то наверно можете рассказать больше подробностей. Хоть это и отход от основной темы, мне стало любопытно кому это могло понадобиться для практических целей.
Re[31]: Java vs C# vs C++
От: PM  
Дата: 03.10.15 23:24
Оценка: +2
Здравствуйте, Serginio1, Вы писали:

S>>> С голым Idispatch без библиотеки типов? В C# для этого есть dynamic.


PM>>Ну dynamic ведь тоже не по волшебству работает. Какие сложности получать у IDispatch нужную информацию и вызывать Invoke? В 2007 это не было проблемой: http://www.codeproject.com/Articles/19962/Driving-Microsoft-Word-using-VOLE


S> Но убожество даже в этом виде.


Таки вам шашечки или ехать? И библиотеки типов совсем-совсем нет?

S> Ничего по волшебству не работает. Однако в Бейсик,Delphi 1С и наконец в C# очень удобно работать с голым Idispatch. При этом удобно переводить с одного языка в другой http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=614821&amp;amp;threadtype=0&amp;amp;print=1&amp;amp;partt614821=1


S>Согласен, что сделать прокси не проблема. Сам их пишу, но почти все С++ работающих с 1С что я видел работают в рукопашную. Это кстати о квалификации.


Ну, судя по той теме человек явно новичок, и не только в C++

В принципе понятно, что динамические языки смотрятся выигрышнее в таких сценариях. Также ясно, что C# помогает среда исполнения. Как это работает в Delphi я уже не помню, помню только что компилятор там делал неявный AddRef/Release для COM-интерфейсов, видимо IDispatch как-то тоже поддерживается.

Думаю, что обрести желаемый уровень неубожества C++ кода поможет кодогерация — из заданого IDispatch можно добыть всю информацию о типе и на её основе сгенерировать класс на C++

Однако если разработчики 1С не отдают .tlb со своим продуктом, и прикладные C++ программисты предпочитают есть кактус IDispatch, то значит всех всё устраивает
Re[34]: Java vs C# vs C++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 04.10.15 05:25
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

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


S>>>>Нашел http://rsdn.ru/forum/flame.comp/6069138.1
Автор: greenpci
Дата: 05.06.15

EP>>>Здесь в C++ варианте лямбда, ФВП и итераторы, а в C# варианте обычный рукопашный цикл
S>> Угу при этом Complex свой вместо https://msdn.microsoft.com/ru-ru/library/system.numerics.complex(v=vs.110).aspx

EP>И что? Уже вроде обсудили что это лишь для демонстрации. Вместо Complex там мог быть любой другой тип.

А ну да взять, что то тормозное а потом говорить про тормоза. Возми из другого int.

S>>>>Зато сказать многократные это красиво. Я об этом тебе давным давно говорил и это было извесно лет 11 еще на видби.


EP>>>Хочешь отрицать реальность, не хочешь видеть примеры? Твоё право, но мне уже надоедает по несколько раз приводить одни и те же примеры.

S>>Так не вижу тестов то.

EP>Чем пример про замыкание
Автор: Evgeny.Panasyuk
Дата: 23.12.14
не устроил? Чем не устроил пример про замену структуры на класс?

Я не вижу результатов теста.

EP>>>>>В какой из стратегий сбор мусора это "просто сдвиг указателя конца кучи на начало"?

EP>>>>>Здесь сбор мусора это именно то что называют GC в C# и Java, то есть не надо сюда приплетать регионы.
S>>>> Старшие поколения не используются для анализа. Используются только изменения если изменений не было, значит нет достижимых объектов, значит можно передвинуть указатель кучи на начало.
EP>>>Указатель какой именно кучи на начало? Какого поколения?
S>>Нулевого.

EP>Ты не учитываешь например указатели на стэке. Предполагаю что ситуация в которой в нулевом поколении не выжил никто — маловероятна.

Она как раз самая, что вероятная, особенно в серверных вариантах. Мало того, за кучей может следить GC в отдельном потоке.

EP>>>Причём тут конкуренция? Глобально задача у каждого программиста заработать денег (не считая for fun и т.п.), себе лично, а не конкурировать с кем-то. Ты же в это русло переводишь

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

EP>А у тебя нормально? Вклиниваешься в сугубо технический спор, и начинаешь петь пространные капитанские песни про целесообразность, общую стоимость, травить байки про всёвбазуупиреается, PHP'шников, при этом мешаешь в одну кучу программистов продуктовых компаний и 1С-ников


Ну ты же поешь, про то что на C++ можно делать все. Я тебе говорю, что у него есть своя ниша и эта ниша давно не так как было в 90х.

S>>Напомню тебе, что в 90 х основными программистами были С и С++. К ним добавлялись фокспрошники дибейсники бейсики и паскалиты дельфисты.

S>>Ни Java C# ну и конечно 1C не было и в помине. По мере доступности компьютеров нужны были специалисты коих не хватало как для бухгалтерских задач, так и с ростом интернета писателей сайтов итд. Стало понятно, что С++ сложен, а нужны были программисты сейчас в том числе студенты и тд. Стали появляться программы типа 1С, ПХП, ну и Java C#. Кстати многие С++ доказывавших на этом форуме с пеной у рта каков крутой С++ в итоге перешли на C#, Немерле итд.
S>>Многие из них не ездят на машине.

EP>Дальше что? Ты так и не сказал свой основной тезис. Тебе не нужен C++ — ну и замечательно

Наконец то!

S>>>> В Net он по сути используется везде и с огромным удовольствием. Сначала был скептицизм, который года через 2 пропалю

EP>>>Конкретно где везде? Для каких задач?
S>> Там где есть коллекции

EP>Для коллекций в C++ есть например алгоритмы, итераторы, Boost.Range. Причём по-возможности Boost.Range сохраняет категорию, то есть transformed может вернуть random-access.

На ваши итераторы без слез смотреть тяжело. Linq это функциональщина с ленивым выполнением при этом построена на расширениях. Приведи аналог того что я тебе показал. Ведь линк можно применять не только кколекциям но и БД или ODATA http://infostart.ru/public/403524/

EP>>>>>И что? Схема же есть где-то?

EP>>>>>Или хочешь сказать, что до запуска программы там неизвестно что, и программы реализуют ИИ чтобы понять что делать чтобы решить задачу?
S>>>> Есть, но её нужно реализовать вручную. А ведь лень. в C# есть динамики.
S>>>>Кстати Linq то ленивый и его можно склеивать итд и получать типизированные данные
EP>>>Опиши в двух словах что конкретно имеешь в виду.
S>> Я же тебе ссылочку давал http://infostart.ru/public/402433/ там куча ссылок. В двух словах тяжело объяснять.
S>>Так же в Linq можно склеивать запросы, накладывая новые ограничения. Это связано с ленивостью запросов

EP>Ленивость (в том числе и compile-time), Expression Templates, их склейка, и типизация всего этого есть и в C++. Я поэтому и уточняю.


S>>// Этот запрос получает значения периодического реквизита с ID 9697 в порядке убывания даты, времени, и строки документа

S>>...
S>>Генерируется следующий запрос

EP>Это реализуется и в C++, причём с генерацией текста запроса во время компиляции. Подробнейшим образом обсуждалось вот в этой теме
Автор: gandjustas
Дата: 13.04.15
.


Генерация текста это далеко от того что называется Linq. В Linq вообще отсутствует понятие текста.
Да и мне, что все 32 страницы просматривать? Я тебе на реальные страницы показываю со значениями тестов
и солнце б утром не вставало, когда бы не было меня
Re[30]: Java vs C# vs C++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 04.10.15 05:36
Оценка:
Здравствуйте, alex_public, Вы писали:

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


_>>>А причём тут TypeScript и .Net? )

S>> Как это причем? TypeScript в ASP.NET MVC

_>То, что TypeScript можно применять вместо с .net (как впрочем и C++ и Python) совершенно не делает .net необходимым для использования TypeScript.

Но нужна среда для отладки и генерации TypeScript в JS. Я отлаживаю одновременно и серверный код и TypeScript.

А вы его уже начали применять в Питоне? Гугл смотрю тоже подсуетились. Мне TS очень нравится, кучу JQuery библиотек типизировали. Хейлсберг молодец.
Кстати общее у них то что их создал один человек!

_>>>Он там везде — на нём написаны: сервер (nginx), интерпретатор скриптов (Python), база данных (PostgreSQL/MySQL/SQlite).

S>> То есть в итоге то ты пишешь на питоне, а не на С++. Мы уже про это говорили, что ниша С++ там где нужна скорость. А там где скорость разработки ты же сам используешь питон.

_>Просто питоновский код в такой задаче не занят никакими серьёзными вещами, а банально играет роль системного клея между блоками кода (кстати, написанными на C/C++), исполняющими основную работу.

То есть питон для этих задач удобнее. Так же можно сказать и о любом языке.
_>Я вот могу ещё один очень известный пример привести на похожую тему. Питон сейчас очень популярен в научной среде. Причём не только для написания скриптов (что логично), но и для сложных и тяжёлых вычислений. Казалось бы нонсенс, но секрет раскрывается просто — для таких дел используются специальные библиотеки (типа numpy), которые написаны опять же на C/C++. В итоге получаем сочетания максимального быстрого написания кода с одновременной неплохой производительностью.

Но так было и раньше. Просто есть разница. Библиотеку написали 2 программиста С++ а используют тысячи Питонистов. Я никогда не заявлял, что C++ не нужен.
Я говорил, что у него своя ниша.

_>>>Во многих местах нет возможности выбрать технологию, как раз потому что аналоги слишком жирные/медленные. )))

S>> Ну и какова емкость этой ниши?

_>Так ниша то не одна, а таких много разных. ) В итоге язык C по разным рейтингам уже много лет держится на одном уровне популярности с Java. А если добавить к нему ещё C++, то является самым популярным с большим отрывом.

Ну при этом количество программистов на 1С, PHP и прочие не учитываются. Я уже приводил статистику по России, где твои выкладки далеки от реальности

S>> Я не против С++. Я про то, что он не универсален, как тут пытаются заявить. И что скорость в большинстве случаев не является главным критерием, даже во времена когда память в 64 КБ была естественным делом. Помню писал на паскале на ДВК 2 и время компиляции было полчаса. В то же время на Бейсике пусть и с огромными тормозами, но не было задержек с компиляцией. И большинство использовало бейсик


_>Скорость является главным критерием в ряде ниш. Но это действительно не единственный критерий, по которому выбирают C/C++. В других нишах его выбирают за другие преимущества. Ну а в некоторых нишах (типа тех же скриптов например) не выбирают вовсе. )))
и солнце б утром не вставало, когда бы не было меня
Отредактировано 04.10.2015 6:02 Serginio1 . Предыдущая версия .
Re[30]: Java vs C# vs C++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 04.10.15 05:41
Оценка:
Здравствуйте, alex_public, Вы писали:

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


_>>>А какая связь между Linq и COM? ))) И в чём смысл вообще сравнивать языковую конструкцию и некую технологию, вообще не зависящую от языка? )

S>> Он говорил про абстракции. А связь между линк и ком это создание прокси

_>Ну вот Linq ещё тянет на языковую абстракцию. А причём тут COM вообще? ) И что ещё за прокси в linq? )

Ну ты в Code First описал класс со свойствами и типами полей. При выполнении компилятор строит Dynamic прокси поверх него, для того что бы добавить свойства для доступа к базе навигационных свойств итд.

https://msdn.microsoft.com/ru-ru/data/jj592886.aspx

Там такая ситуация если не было приведения к какому то типу, то ты работаешь с прокси например при работе с неопределенном типом. И для сравнения с типом нужно пользоваться GetType().BaseType()

При COM тоже строится прокси и работать с ними можно через dynamic. Это тоже абстракция
и солнце б утром не вставало, когда бы не было меня
Отредактировано 04.10.2015 5:55 Serginio1 . Предыдущая версия .
Re[34]: Java vs C# vs C++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 04.10.15 06:39
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:
Давай что бы закончить дискуссию сделаем выводы.
Где предпочтительнее использовать C++, а где C#,Java и другие языки.
1. С++ реально заточен под скорость. Кстати а как там со скоростью компиляции и отладки? А то до недавнего времени многие программировали в блокноте
2. Уровень сложности в С++ значительно превышает противопоставляемые ему языки
3. Во многих случаях рулят динамические языки.

C# достаточно простой язык сочетающий в себе как статическую типизацию, так и динамическую. Есть зачатки функциональщины.
Кроме самого языка огромную роль играет еще и VS в которую встроено для поддержки различных технологий, что приводит к удобству программирования и отладки

То есть кроме скорости нужны еще и RAD радости. Например в .Net введены атрибуты, по которым в закулисье компилятор генерит прокси классы, сериализаторы итд.

Выявим те отрасли где применим C++, а где C# и почему.
Пока разговор свелся к тому, что у С# проблемы с инлайном и векторизацией.
Теперь зададимся вопросом, а какова доля в приложении таких недостатков?
и солнце б утром не вставало, когда бы не было меня
Re[12]: Java vs C# vs C++
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 04.10.15 06:54
Оценка:
Здравствуйте, alex_public, Вы писали:

I>>Определись. ПОчему не видно никаких чудес у С/С++ на платформе джава или дотнет ?


_>Потому что там этих оптимизаторов просто нет. )


Именно. Осталось объяснить, что же это за заговор такой — такой распрекрасный язык, раза в два даст прибавки к производительности а оптимизаторов — нет.
Re[14]: Java vs C# vs C+
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 04.10.15 06:57
Оценка:
Здравствуйте, PM, Вы писали:

PM>Если что, тема называется "Java vs C# vs C++" а не "Java vs Some other JVM lang" или "C# vs Another CLR lang"


Если про сравнение языков, надо сравнивать java c c++ в её JVM, иначе получится сравнение платформ.

PM>Придёт native машинный код и будет поплевывать на малышей в песочницах свысока.


Это неинтересно. Практика показывает, что натив никогда никуда не приходит, кроме тех областей, в которых он сидел еще в 80х. Более того, у этого самого натива подсократилась ниша.
Re[18]: Java vs C# vs C++
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 04.10.15 07:03
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

I>>Сравнивать нужно с С++ под JVM, что бы все были в равных условиях.


EP>А я что предлагаю? Не, ну действительно "буквы не читай, сообщения пиши"

EP>

EP>>Можем сделать тест: пишем примерно одинаковый код с небольшими абстракциями на Java и на C++.
EP>>C++ перегоняем в Java по следующей схеме: C++ -> JavaScript через Emscripten -> Java механически вручную, без принципиальных изменений.
EP>>Согласен?


Джаваскрипт что ли стал уже сиплюсплюсом или что ?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.