Особенности языка mql5, тонкости и приёмы работы - страница 154

 
Roman:

Java хоть и транслируется в байт-код, но он имеет свою виртуальную машину выполнения (JVM).
Так же язык является строго типизированным, в отличие от других языков с интерпретатором.
Скорее всего строгая типизация и JVM, тому причина быстрого выполнения и передачи инструкций оборудованию.  
Не спроста американские торговые терминалы пишут на Java. Чикагская биржа CME Group, официально предоставляет терминал который написан на Java.
Как то один программист мне говорил, что язык Java имеет корни из телекоммуникационной сферы.
А сфера телекоммуникации, изначально требует скорости обработки и передачи данных.
Да и компания Oracle имеет своё сообщество по разработке данного языка.
То есть язык жив, и дорабатывается сообществом Oracle.

Кстати бренд Quik и язык LUA, был так же разработан американцами.
Но в мохнатые 90-ые удачно слит(продан) в РФ.
Ещё в те годы, амеры уже понимали, что у LUA нет будущего развития.
И удачно спихнули его в РФ, где только начал формироваться биржевой рынок, после развала союза. 

Igor Makanu:

там модель как в .Net - исходник компилируется в байт-код, это будет еще интерпретатором , а при распаковке байт-кода на конкретном ПК будет уже сгенерирован нативный код под виртуальное окружение в котором он будет исполняться, т.е. это уже скомпилированный код будет

https://habr.com/ru/post/107585/

про Java гуглом "Java компилятор или интерпретатор" - будут похожие статьи

Спасибо. 
Да я в принципе в курсе всего этого, но просто не ожидал увидеть такой большой разницы между Java и MQL5 (в три раза в пользу Java):

Возможно, графика не лучшая тема для сравнения. Но там одна математика.

Файлы:
gravity.zip  3 kb
 
Vict:

А не возникал вопрос - сколько уходит время на старт? сколько памяти отожрала и сколько потоков запустила JVM для компиляции байт кода? Запустил монстра, который "на лету" скомпилировал hello world, в итоге и там, и там натив. Вот только у Си монстра нет. А про питон


Ну нормально - покупать многоядерный числодробилки с вагоном озу и говорить, что моя джава/шарп/... очень круты в этом тесте, а про общую нагрузку промолчим. Никогда им Си не догнать. Прогресс, взять тетрис из 80х, переписать на шарпе, и гонять столь же быстро, как и раньше, но 60 ядерном ЦПУ)).

ЗЫ: сродни тому, как в Эльбрусах два потока занимаются лишь трансляцией из x86 инструкций. Перевоз Белазом бандероли.

Си и Java не даром два равноценных лидера в рейтинге языков программирования.

Возможно Вы в чем-то и правы, но все же, кажется Вы отстали от жизни. 
Признаться, я тоже недавно только осознал, насколько сильно я отстал от жизни, когда начал учиться на программиста. 
Думал что знаю много, но с установлением новых нейронных связей, моя самооценка резко рухнула.

 
Nikolai Semko:

Спасибо. 
Да я в принципе в курсе всего этого, но просто не ожидал увидеть такой большой разницы между Java и MQL5 (в три раза в пользу Java):

Возможно, графика не лучшая тема для сравнения. Но там одна математика.

а чего Вы ожидали от MQL5? контекст устройства (Device context) Вы же не можете получить? вот и рисуете через программную эмуляцию на чартах



Alexey Navoykov:
Кстати, что касается шарпа, то для него мелкомягкие вроде сделали возможность прямой компиляции в нативный код.  Я пока не пробовал, но по идее должно быть круто.

люблю Хабр, в особенности за комментарии https://habr.com/ru/company/microsoft/blog/265889/

https://docs.microsoft.com/ru-ru/dotnet/framework/net-native/

 
Igor Makanu:

а чего Вы ожидали от MQL5? контекст устройства (Device context) Вы же не можете получить? вот и рисуете через программную эмуляцию на чартах


не думаю, что так обстоят дела.

Думаю, что контекст привязывается при выполнении 

ObjectCreate(chart_id,name,OBJ_BITMAP_LABEL,subwin,0,0)
 
Nikolai Semko:

Си и Java не даром два равноценных лидера в рейтинге языков программирования.

Возможно Вы в чем-то и правы, но все же, кажется Вы отстали от жизни. 
Признаться, я тоже недавно только осознал, насколько сильно я отстал от жизни, когда начал учиться на программиста. 
Думал что знаю много, но с установлением новых нейронных связей, моя самооценка резко рухнула.

Возможно. Вон шарп двигает майкрософт, свой windows store (вот и о компиляции в натив вспомнили), это модно в конце концов. Нужно делать как стадо.

 
Igor Makanu:

там модель как в .Net - исходник компилируется в байт-код, это будет еще интерпретатором , а при распаковке байт-кода на конкретном ПК будет уже сгенерирован нативный код под виртуальное окружение в котором он будет исполняться, т.е. это уже скомпилированный код будет

https://habr.com/ru/post/107585/


про Java гуглом "Java компилятор или интерпретатор" - будут похожие статьи

блин, Игорь эта статья 2010 года. За 9 лет очень много чего изменилось.

 
Nikolai Semko:

блин, Игорь эта статья 2010 года. За 9 лет очень много чего изменилось.

кто ж спорит, что все меняется, вон компиляторов от Борланда уже и не видно, а 10 лет назад в рунете все на них сидели )))

я про принципы, Java никогда не интересовался, ну разве на 4пда когда были телефоны на Яве

но принцип работы, что .Net, что Java  были похожи, именно докомпиляцией в момент выполнения и обеспечивалась переносимость между платформами, т.е. говорить что Java   это интерпретатор - это не верно

 
Igor Makanu:

кто ж спорит, что все меняется, вон компиляторов от Борланда уже и не видно, а 10 лет назад в рунете все на них сидели )))

я про принципы, Java никогда не интересовался, ну разве на 4пда когда были телефоны на Яве

но принцип работы, что .Net, что Java  были похожи, именно докомпиляцией в момент выполнения и обеспечивалась переносимость между платформами, т.е. говорить что Java   это интерпретатор - это не верно

Да такое ощущение, что такие понятия как интерпретатор  и компилятор диффундировали друг в друга.
 
Nikolai Semko:

Спасибо. 
Да я в принципе в курсе всего этого, но просто не ожидал увидеть такой большой разницы между Java и MQL5 (в три раза в пользу Java):

Возможно, графика не лучшая тема для сравнения. Но там одна математика.

немного ввел в заблуждение. В MQL коде на каждом кадре вызывал очень дорогую функцию ChartChanged(). Без нее выйгрыш Java будет не в 3, а в 2 раза.

А если использовать этот MQL код, который делает тоже самое (тоже 8 центов гравитации) , только без массивов, то Java и MQL5 сравняются по скорости.


Давно заметил, что MQL5 не дружит с доступом к массивам. Доступ к элементу массиву непропорцианально дорогой. По-моему разработчикам есть над чем поработать. 

Файлы:
Swirl.mq5  12 kb
 

Нашел интересное исследование двухлетней давности по сравнению эффективности различных языков 

https://greenlab.di.uminho.pt/wp-content/uploads/2017/09/paperSLE.pdf