От охлаждения к восстановлению. Что ждет экономику России в 2026 году?
Главное: Российской экономике удалось избежать рецессии в 2025 году Рубль, вопреки прогнозам, демонстрирует крепость, но в 2026 году ожидается его ослабление Базовый сценарий...
Займер поздравляет с Новым годом 🍊
Дорогие друзья, Поздравляем вас с наступающим Новым годом!🎄 Уходящий год был для нас, как и для многих, непростым: нам пришлось работать в условиях высокой ключевой ставки и растущего...
«Озон Фармацевтика» поздравляет с наступающим Новым годом!
Дорогие партнёры, инвесторы, коллеги! Сердечно поздравляю вас с наступающим Новым годом! Этот праздник — время подведения итогов и построения новых планов. Это момент, когда мы...
*Джон Голт*, не язык нужно учить, а рабочие стратегии искать.
Программируют пусть программисты.
Вам нужен минимум языка и максимум математики.
Если же Вам интересен HFT и прямой выход на биржу, то здесь однозначно имеет смысл учить c#. Так как все биржевые библиотеки преимущественно адаптированны под него. Да и без работы в дальнейшем не останетесь так как многим брокерам требуется именно спецы со знанием с#(так сложилось именно в российской брокерской индустрии).
Для максимальной экономии денежных средств советую обратить внимание на сайт там выкладывают крутые курсы по различным языкам программирования абсолютно бесплатно.
В целом вектор развития я вижу следующий:
1.Изучение синтаксиса С#
2.Основы ООП
3.Структуры данных (коллекции, массивы и т.п.) и многопоточность
4.Пилишь первое приложение:
Как вариант простой робот с использованием сторонних библиотек и
прямое подключение к серверу брокеру например через библиотеку Алор Atentis
5. Далее изучить GIT, но и какие-нибудь популярные фреймворки+работа хотя бы с одной базой данных (например MySQL), но это уже чисто для трудоустройства.
Советую почитать ещу мой пост:https://smart-lab.ru/blog/496838.php/
Только в Алоре сейчас три вакансии весит на эти позиции.
Если интересно. Я за вакансиями в нашей сфере слежу с 2015 года. Распределение примерно такое по требуемым специалистам:
— если западная контора, то обязательно java
— если трудиться на РФ, то Cи
— если дата аналист, то питон/R.
Шарп требовался один раз БКС'у под статистический арбитраж. И постоянно требуется Банку Санкт Петербург в отдел алго.
А Алору шарп нужен для околобиржевых целей.
C++
C#
Где его можно использовать сейчас?
сейчас для озвученных Вами сегментов ВЕЗДЕ используется КОДОГЕНЕРАЦИЯ.
И программы пишутся в лучшем случае на языках более высокого уровня с последующей выгрузкой исполняемого кода на ЛЮБОМ языке для ЛЮБОЙ платформы, в худшем используются кросс-средства.
Только очень «гордые птички» пишут все на С, не зная современных технологий программирования.
для Linuх лучше использовать Java.
Для использования С++ необходим достаточный опыт программирования.
на треклятом Западе раньше (до 2008-10 гг.) Java + Oracle являлся корпоративным стандартом. Хотя там очень много профессиональных «Плюсовых» — «Крестовых» команд было. А где-то с 2005-7гг начали уже появляться серьезные проекты на .Net. Сейчас не знаю как там, не отслеживаю.
А если отвечать конкретно на ваш вопрос: например в MT5 можно кодить читая у Страуструпа только общее описание базовых конструкций языка. Совершенно не обязательно при этом очень уж глубоко изучать стандартную библиотеку, что по сути и есть самое сложное в освоении С++ и самое большое отличие от нейтив Си.
надо брать и начинать программировать
на чем угодно
хоть на php для начала
Изучить азы? Так они хорошо изучаются на любом языке.
Dmitryy, =) недавно делал отдельный пост. Как раз про расчет дельты.
"Куда в опционах пропадают деньги?"
А декомпилляция библиотек — это уже знаете как называется? =) Ну, Вы поняли.
Расскажу чисто на отвлечься. У меня дочь растет, мы ее развиваем по методе раннего развития. Сейчас у нее очень сильно развито мышление, логика и все сопутствующее.
Начинаю подумывать, что если собеседование с психологом подтвердит, то начну ее готовить к программированию. Но не классическому, а уже к робототехнике, уверен за этим будущее. Поэтому выберу простой Си для начала.
я на себе понял, что человек должен заниматься любимым делом. Так пусть он занимается этим с детства уже.
Андрей К, C — не простой.
Вот «простой» код на C:
void (*f(void (*(*const f)(void))(void)))(void) { return f(); }И что он делает?
Что это вообще такое?
Ну, ведь, просто же должно быть ответить на этот вопрос, C же простой.![]()
Ну, хорошо, добавим ещё одну функцию, которая пользуется первой:
void (*f(void (*(*const f)(void))(void)))(void) { return f(); } void ff(void (*(*const ff[])(void))(void)) { while (*ff) { f(*ff++)(); } }Что тут происходит?![]()
А, ведь, всё тот же «простой Си».![]()
Вот тут «простенькая» программка, которая компилируется и запускается online, выводит результаты. Можно поредактировать и поэкспериментировать.
Программка на «простом Си»...![]()
Питон не понимаю — я программист старой школы (очень старой).
Андрей К, лет 30 назад ещё можно было знать «всё» программирование. Сейчас — жёсткая специализация.
В робототехнике также специализироваться нужно уже сейчас, не говоря о том, что будет через 20 лет.
У более стандартных бирж обычно более изощрённые протоколы передачи информации.
Если через Quik, то можно начать с Lua (QLua), а потом попробовать C# — на C# написана неплохая обёртка QuikSharp.
Дроч на перформанс оставьте задротам. Иначе быстро выгорите, занимаясь не пойми чем, вместо апробации разных торговых гипотез.
В противовес любому из классических языков, можно параллельно смотреть на функциональные языки, так как там все иначе :).
Java тоже не плохо, и с ним же яваскрипт фреймворки для веба..
p.s. ежели взращивать программиста с молоду и не для роботов… то понимание как работает железо, память и т.д. на низком уровне просто необходимо в независимости от языка :).
попробуйте курсеру или датакэмп…
Все остально, сказанное о более грубоком понимании работы процессора, памяти, шин передачи данных, вам может и не надо ), время сейчас очень дорого, и сосредоточится именно на вашей цели куда более важно, нежели пространно изучать программирование.
> плюсы вы изучили через асм?
Зря смеётесь. Это как раз самый правильный подход. Сначала Асм, а потом С/С++. Когда понимаешь, что там происходит под капотом, вообще никаких проблем не испытываешь с пониманием нюансов языка. А вот те, кто не знает асма очень часто попадают в разные проблемы на этих языках.
Вы ошиблись:Исполняется машинный код на процессоре, а не «асм исполняется процессором» (хотя может понятия асм у нас разные), откомпилированный код будет хоть на С/С++/Java/Python одинаковый в «теории», сам не проверял.
> Исполняется машинный код на процессоре, а не «асм исполняется процессором»
Нет никакой ошибки. Отображение между асмом и машинным кодом практически биективное. Т.е. говоря проще Асм этот тот же машинный код, просто в более простом для понимания человеку виде. Когда я активно занимался реверсингом, в ряде случаев мне даже дизассмеблера не было нужно, чтобы понять, что делает программа))
«Практически» было написано потому, что интел по какой-то причине сделала возможность разного кодирования одинаковых инструкций, плюс некоторые битовые поля были описаны как неиспользуемые, игнорируемые или зарезервированные. В принципе, если не быть дотошным или не лезть в конспирологию зачем это было сделано, то можно считать биекцию точной.
2. По мере необходимости добавляем постепенно С# для Windows Приложений, и Java для Linux. Они похожи, так как С# изначально содран с Java
3. Предыдущих 2-х пунктов вполне достаточно.
Но если хочется «погорячее» изучите еще С++.
Здесь Вы с лихвой получите большой опыт и огромное удовольствие от борьбы с Memory Leak, а все Ваше время будет тратится на «поиск пропавших указателей». Но зато Вы будете себя чувствовать крутым специалистом.
4. Но языки это всего лишь пол-дела. Изучайте технологии программирования, фрейморки, платформы, паттерны проектирования. Одного языка недостаточно.
5. Желаю успеха.
Но вы однозначны правы, что в С++ не надо лезть без чёткого понимания, зачем это надо. Язык действительно сложный.
мягко скажем «неконкурентное» время разработки проектов,
и далее, maintance и support больших распределенных проектов сводят на нет все прелести этого языка.
Сейчас в погоне за скоростью разработки (что, кстати, часто сопровождается низким качеством даже не проработки — банального продумывания кода) дошли до того, что даже простой интерфейс (сраный интерфейс!!!) начинает заметно тормозить. Пример — качалка котировок Гидра из S#. Что уж говорить про тормознутость основной бизнес-логики...
В результате продукт собираем на коленке из говна и палок быстро, но вот только пользоваться им нельзя/проблемно. Ближайший исторический (и уже почти вымерший — вот странно?) аналог — дельфи, хоть там не столько с производительностью проблемы были, а с косячностью стандартных библиотек, но суть проблемы та же.
Делфи умер после покупки его Майкрософтом. Майкрософт его купил как конкурента и похоронил после шестой версии. Отличная среда, прижившаяся в СНГ.
qbasic & excel
причём excel развитие basic
а вообще я запатентовал алгоритм
позволяющий быстро изучать 20 разделов
любого языка программирования и изучил цэ-диез
С отличный язык, но если вы не знаете, зачем он вам нужен — выберите альтернативы, на которых получение результата быстрее.
Современный С++ — прекрасный язык (и всегда был им). Думаю, что самый мощный и эффективный из существующих; на нём можно делать вообще всё, что поддерживает процессорная архитектура. Но, во первых, правильный путь его изучения — с ассемблера, а, во вторых, — его гибкость и мощность имеет дорогую цену — он очень сложен и труден. Нет, если использовать «С с классами» это ещё куда ни шло, но это детский сад, пол процента силы плюсов.
Я так или иначе использую его уже больше 20 лет, но только сейчас начинаю понимать, почему Страуструпп (изобретатель и по прежнему активный развиватель С++) говорил: «я постоянно узнаю что-то новое об этом языке и его возможностях». Для новичка это означает нетленное «верёвка достаточной длинны, чтобы выстрелить себе в ногу».
Хотя, если понимать что там к чему, то можно, например, написать бэктестер, который будет работать на полтора десятичных порядка быстрее уже и так векторного (а значит очень быстрого) бэктестера AmiBroker ;)
зы: из перечисленных вариантов ещё не лезьте в паскаль/дельфи — мертворожденные изначально и, к счастью, уже почти вымершие языки.
Питон — самое то для новичка. Может ещё С#.
Java — только если очень надо безусловная кросплатформенность.
А вообще — решайте свою задачу. Язык — всего лишь инструмент, один из многих. Не надо на нём циклиться, решение задачи — первично.
Да языка мало, главное научиться формулировать задачу и перенести на алгоритмы, которые уже реализовывать на конкретном языке прогр., можете посоветуйте книжки где учат задачу разбить на алгоритмы. Книжка про фундаментальные алгоритмы на С++ (Роберт Седжвик) есть с примерами сортировки, поиска, алгоритмы на графах.
Я тоже, как и Вы в начале нулевых в ВУЗе учился, тоже не программер по основной специальности.
Про алгоритмы… Скажем так… Если интересует алгоритмика в своего рода классическом понимании (сферического коня в вакууме — моё оценочное суждение), то это наверное в сторону знаменитого трёхтомника «искусство программирования» Дональда нашего Кнута. Считается едва ли не классическим трудом, миллион переизданий и я не слышал ни одного плохого слова от тех, кто её таки осилил. Но… У меня, например, этот трёхтомник занимает уже лет 17 почётное место на полке, но за всё это время он мне так ни разу и не понадобился. Наверное зря, но как-то пока потребности не было.
Реально крайне помогло в практической работе две вещи — 1) желание и интерес докапывать до причин проблем и неэффективностией реализованных алгоритмов, и 2) изучение шаблонов проектирования и самое главное — причин, которые стояли за изобретением этих шаблонов. Потому что правильно применять можно только понимая, зачем оно нужно. Конкретных книг не подскажу. То, что я читал — уже давно не купить, да и описание с первого взгляда устарело, хотя суть не поменялась. За новыми книгами не слежу...
Вообще — начать можно и с википедии (скорее английской) и самое главное — practice-practice-practice.
Ещё запомнилась «Принципы работы с требованиями к программному обеспечению. Унифицированный подход», Дин Леффингуэлл, Дон Уидриг, 2002, ИД «Вильямс» — это не про алгоритмы, но про то, как понять, какую систему вообще нужно создать. Тоже, собственно, важнейшая часть дела. Описанные методы сейчас уже в лоб могут считаться малость устаревшими, но суть 100% актуальна и применима. Сейчас стали чётче понимать, что ничего наперёд полностью и точно спроектировать невозможно, надо двигаться гораздо меньшими итерациями. Но в любом случае, нужно понимать/разработать генеральный план и внутри итераций — почти всё то же самое…
Автор, надо всё таки разделить: «для написания роботов» или для «пригодился по жизни»?
Если тебя интересует только алготорговля то бери специализированные среды типа TSLab. А если ты хочешь стать программёром и работать кодером на компашку, то это совсем другая тема.
дисклеймер: я очень давно в этой теме и могу ошибаться, выдавая то, что отлично работает для уже что-то знающего, за то, что сработает у новичка.
Я вообще сомневаюсь, что можно научиться делать что-то сложное, если только читать книги и смотреть, как это делают другие (даже если они при этом всё прекрасно объясняют).
Лучше берите новую задачу, или старую для нового решения, и ищите и пробуйте, как бы её наиболее правильно и эффективно решить на нужном языке. Разбирайтесь в деталях, пытайтесь использовать ранее неизвестные вещи, кажущиеся подходящими и полезными (сначала из хороших библиотек, типа STL, boost, ну и далее что найдёте). Смотрите, как другие люди решали похожие или другие задачи (есть куча хороших опен-сорсных проектов на любой вкус), попробуйте разобраться, почему они это делали именно так, а не иначе...
Собственно по нюансам языка есть отличные родные документации, ещё больше написанного энтузиастами. Просто гуглите...
Но сначала лучше подумайте, а точно ли вам С++ нужен)))
В любом случае, Learning by doing, — иначе, мне кажется, это не работает…
Хорошо, что делает следующая программа?
#include <cstdlib> #include <iostream> int main() { return [f{[](auto... args) { ((std::cout << "args: ") << ... << (std::to_string(args) + ", ")) << "sum: " << (0 + ... + args) << ", num: " << sizeof...(args) << std::endl; return EXIT_SUCCESS; }}] { return f(7, 3, f()); }(); }Ну, ведь, C++ же несложный?То, что она что-то делает, убедиться, а также поэкспериментировать можно здесь.
johnsson08,
Не понял, чо за наезд :)
Недаром многие научные проекты, начиная с 90-х годов, пишут на Паскале. Так что в своей нише он сидит, и что-то никак не сковырнут его.
Хотя, скажу честно, я уже все больше предпочитаю C#. Они чем то похожи.
Если писать торговых роботов, то надо выбирать по следующим критериям:
— наличие доступа к рыночному окружению (у MQL5 огромная функциональность доступа к рыночному окружению и сделкам)
— полный контроль за позициями и историей сделок (в MQL5 есть полный контроль)
— подписная модель на рыночные события (у MQL5 множество OnXXXX событий)
— готовая библиотека индикаторов, включая кастомные (у MQL5 тысячи индикаторов)
— готовые опенсорсные библиотеки готового торгового кода (у MQL5 около 13 000 торговых програм лежат в кодобазе открыто)
— наличие мощного мультисимвольного потикового тестера торговых стратегий (у MQL5 такой, включая мультиядерность и удаленных агентов тестирования)
— наличие документации (у MQL5 на огромная документация на 10 языках)
— скорость вычислений (у MQL5 чуть отстает от C++, но часто обгоняет на чистой математике)
— защищенность языка, чтобы нельзя было написать трояна и можно было распространять защищенные скомпилированные файлы (только у MQL5)
— наличие большого сообщества разработчиков (у MQL5 есть)
Писать на языках общего применения торговых роботов неэффективно. 95% времени уйдет на построение инфраструктурных велосипедов. Причем получится реализовать самый мизер рыночного окружения.
А собственно на роботов не останется ресурсов. Это не говоря уже о тестере.
На MQL5 можно сконцентрироваться в 100% случаев на собственно алгоритмах роботов и не тратить ресурсы на велосипеды.
> скорость вычислений (у MQL5 чуть отстает от C++, но часто обгоняет на чистой математике)
Ахинея, а точнее осознанное введение в заблуждение. Потому что используйте в коде на С++ ту же оптимизированную математическую библиотеку, что использует mql и тогда сравнение будет корректным. И, конечно, не в пользу mql. Но тогда не получится красиво соврать, правда?
зы: вполне возможно, что с нормальным современным компилятором в каких-то случаях и этого не потребуется, т.к. нынешние оптимизаторы стали творить настоящие чудеса.
MQL5 — это оптимизирующий 64 битный С++ компилятор, который генерирует нативный код.
Вот пример доказательства обгона по сравнению с MSVC++ 2017: MQL5 смог вычисление двух корней из разных выражений свести в одну ассемблерную инструкцию.
По ссылке есть все технические выкладки. И код одинаковый с asm результатами.
MSVC при всём моём огромном уважении к MS и любви к Visual Studio, как компилятор, к сожалению, никогда не был ни самым стандартным, ни самым эффективным. Те же с-lang, gcc или интелевый компилер в среднем куда как лучше по каждому из этих параметров.
Я готов поверить, что у вас отличные программисты. И даже готов поверить, что они всё пишут сами, а не берут из опенсорсных C-Lang/LLVM или gcc. Но ведь компилеры С++ делают тоже мягко говоря не глупые люди и числом их гораздо больше, чем ваших. И делают они это гораздо «давнее». Всё вместе это подсказывает, что всё таки сильно скорее всего в общем случае результат будет другой. Подчеркну — это не умаляет достоинств ваших разработчиков и mql как (быстрого) языка. Просто мне как человеку трилиарды раз видевшему и разбиравшему подробности булшитов вроде "<your-name-here> делает более быстрый код, чем С++!!!" и ваше утверждение кажется, мягко говоря, несколько сомнительным. Взять одного из самых слабых соперников, побить его в одном синтетическом тесте, и объявить это победой над всем родом — ну, как-то, глаз режет, согласитесь.
Но реальность такова — внутри MQL5 находится С++ компилятор, который на равных и иногда чуть быстрее других С++ компиляторов (MSVC).
Я привел лишь один хорошо описанный факт. Потестируйте сами. Трейдеры давно все уже проверили и признали, что скорость у MQL5 потрясающая для торговых систем.
Но если вернуться к исходному вопросу, то там 10 важных пунктов. А вы среагировали лишь на один, да и то лишь представили свои теоретические ощущения, а не факты.
Мы свой первый язык MQL выпустили в 2001 году, потом потратили 18 лет на развитие компилятов MQL -> MQL2 -> MQL4 -> MQL5.
MQL4/MQL5 (под именем MQL4, так как составители считают его одиним языком) недавно входили в Top 50 самых известных языков программирования по TIOBE Index.
Сейчас ниже Top 50:
Приёмы ведения вами дискуссии (ad hominem, ad populum, ad antiquitatem, ad ignorantiam, подмена тезиса и некоторые ещё) эффективно блокируют желание говорить что-то ещё.
зы: и кроме этого, кое-что существенное сказанное вами вызывает желание держаться от mql подальше.
К тому же приходится жить с вашей не удобной системой и кучей багов. К другому брокеру уже не уйдешь, особенно если у брокера нет вашего поделия.
Если не в жизни, то после неё точно пригодится…
Нужно подключаться к дисклозер, поиском искать новости по компаниям и в тексте (заголовке) новости ключевые слова. И мигать об этом в трее или там на почту слать. :-)
П.С. Писал на С++ в свое время — не хватило ума. :-) Три дня ушло на программу хелло ворлд. :-) Написал тогда с грехом пополам почтового клиента, ухайдокал месяца 2 в совокупности. Потом сборщик разной лажи с сайтов в базу данных делал (забыл сколько времени, но тоже не быстро). С++ он для профи. Маршаллинг все дела. :-)
Не знаю какие сейчас есть языки. Раньше мелкие поделки делал на паскале, дельфи, бейсике, ассемблере, shell, awk,php, sql, basic. Именно мелкие, т.е. бытовуху или что-то поправить.
В общем дайте, плиз, совет, под мою задачу в какую сторону лучше копать. :-)
Java — не просто язык, это целый огромный конгламерат инструментов фреймвоков технологий и т.п. и т.д. куда порог вхождения очень и очень высокий и с бухты барахты не прокатит.
Есть шикарный курс на эту тему всего лишь 14 часов. Бесплатно.
https://coursehunters.net/course/selenium-webdriver-java-dlya-nachinayushchih
ruby.bastardsbook.com/chapters/html-parsing/
В питоне всё это делается легко, парсить сайт, искать ключевики. Т.е. реально все ингредиенты есть, просто нужно их состыковать. Программка будет на страницу кода.
CalendarCountryById
Получает описание страны по её идентификатору
CalendarEventById
Получает описание события по его идентификатору
CalendarValueById
Получает описание значения события по его идентификатору
CalendarCountries
Получает массив описаний стран, доступных в Календаре
CalendarEventByCountry
Получает массив описаний всех событий, доступных в Календаре, по указанному коду страны
CalendarEventByCurrency
Получает массив описаний всех событий, доступных в Календаре, по указанной валюте
CalendarValueHistoryByEvent
Получает массив значений по всем событиям на заданном диапазоне времени по идентификатору события
CalendarValueHistory
Получает массив значений по всем событиям на заданном диапазоне времени с фильтром по стране и/или валюте
CalendarValueLastByEvent
Получает массив значений события по его ID c момента состояния базы Календаря с заданным change_id
CalendarValueLast
Получает массив значений по всем событиям с фильтрацией по стране и/или валюте с момента состояния базы Календаря с заданным change_id
Календарь является штатным фидом в любом MetaTrader 5:
Scala (!)
Что то программировать ?
Наверно что то полезное или мозги размять ?
Если что то полезное то в одиночку или с кем-то ?
… и еще куча вопросов.
Вообще Scala рулит, потому что несмотря на некторые изъяны переходить на что то другое уже не хочется.
Наиболее универсальный язык в задачах работы с непотоковыми данными (обработка данных в таблицах) — Python, а точнее Python+pandas+numpy+scipy… сила питона в наборе библиотек для работы с данными. С ним уже никто не сравнится (в некоторых местах «ничья» только с R, мой прогноз — Python его съест со временем). Наборы библиотек для C++,Java, и тем более C# не сравнимы. Эта инфраструктура ближе всего к задачам поиска зависимостей и исследованию для трейдинга.
Python подходит для исполнения торговых роботов, но там уже последовательные потоки данных, с ними он справится — но не для HFT, только для данных относительно медленных. Для потоков используются быстрые языки C++,Java,C#.
Исследовать данные на C# или Java на порядок (порядки) сложнее чем на Python. Ещё сложнее на C++. Многословные языки с типизацией. В C# и Java легче чем на C++, так как компилятор берёт на себя некоторые заботы (типа проблем работы с памятью).
Если язык нужен абстрактно, для хорошей базы, C# первым языком не учите. Корни у него слишком проприетарные, это не универсально. Учите C++ (сложно) или Java (легче).
Начинать изучать программирование с относительно редких языков — не рекомендую. Обойдите стороной Golang,haskell,scala ,MQL и пр,
Да, ну и ещё всё забываю приплюсоваться к главной мысли, которую тут высказали пока всего лишь пара человек
— если интересен трейдинг в первую очередь, то надо и вкладываться в исследования и поиск торговых идей в первую очередь. Это прежде всего понимание рынка. Навыки прогерства тут достаточны ровно в том объёме, чтобы понимать, можно л алгоритмизировать это понимание или нет. Для исследований — это питон или (хуже, местами сильно, но активно девелопится и местами имеет крутейшие пакеты) R. Я предпочитаю проприетарный Матлаб. Залез на него ещё до питона и уже не могу слезть, очень уж удобен и быстр)
— если первично прогерство, то начать можно с питона и дальше после минимального понимания процесса в тот язык, что рулит в целевой сфере.
Например, я в основном пользуюсь таким набором: ASP.NET + C# + MSSQL + DevExpress + SSRS.
Из того, что можно использовать более менее это Delphi в связке с си++ для прикручивания разных библиотек и часть кода можно вынести в си++. Но все писать на си++ затея не самая радужная, т. к. в си++ все приходится делать ручками. В си++ мало что есть из коробки в отличие от Delphi/Lazarus и важный код получается быстрым и эффективным.
Ко всему прочему возможности по бесшовному связыванию модулей из разных языков программирования просто огромные.
Александр, в чем проблема "обойти 3 миллиона объектов"? Ни в чем. И при обходе коллекции сборщик мусора вообще никак не используется. Потому что объекты не создаются и не уничтожаются.
Нет, наверное, можно написать настолько криворуко, применить неадекватные типы данных и коллекций (то есть задаться целью написать говнокод) — тогда можно искуственно создать псевдопроблемную ситуацию.
Но тут как в анекдоте:
Подходит джуниор к сеньору и спрашивает: «Почему работает неправильно? Где ошибка?»
Сеньор посмотрел и отвечает: «Ошибка в ДНК».
Александр, это Вам надо «писать тесты и смотреть». Про разные поколения объектов почитайте на досуге.
ПС А если Вам нужны микросекунды, тогда вообще другой разговор. И да, сишарп не подойдет. И даже асм не подойдет. Недавно был интересный пост как человек на FPGA торгует. Вот это — подойдет.
А по с++ погуглите перформанс тесты, их уже больше множество
florent.clairambault.fr/stupid-cpp-vs-charp-performance-comparison/
professorweb.ru/my/csharp/optimization/level3/3_9.php
В идеале все сводится к ручной сборке и большому кол-ву памяти.
Александр, если вы хотите в ручную то используйте offheap. а эти решения делают реальный параллельный GC без задержек на кучах большого объема, ценой некоторого замедления работы с объектами.
1. Есть 2 вида памяти: управляемая и не управляемая. Всегда надо знать, где лежит объект. Для неуправляемой памяти надо еще чистить в ручном режиме.
2. Есть маршалинг. Он свое тоже берет в виде копирования там, где его можно не делать.
3. Не всегда заметны утечки памяти. Слабые ссылки ни кто не отменял. Но об этом тоже нужно помнить.
4. Есть сборщик мусора.
Со с# выстрелить себе в ногу можно очень легко, а вот заметить это бывает достаточно сложно. Для большинства задач с# хватает. Но есть задачи специфические и их лучше решать на си++ или Delphi.
В си++ конечно другие проблемы.
Чтобы в Delphi отследить утечку памяти нужно установить одну переменную и утечки будут всегда видны. А в других языках мне надо с другими инструментами просиживать, чтобы узнать, что я что-то не чищу.
Работаю более 10 лет с C#, и когда мне понадобилось посчитать кое-какую статистику по российскому рынку, я его и ногой не тронул. Проще было взять JavaScript, через REST вытащить с API мос. биржи данные и сделать несколько циклов. Ни тебе парсеров, ни приведение данных, зачем C#?
Вообще NodeJS крайне удобная штука, потому-что очень мощное сообщество и всё делается на коленке из консоли.
Родил сейчас код на VBA под excel (собирался года 3), получил удовольствие. Давно код не писал. Страшно вспомнить сколько лет. :-)
Но для для тестирования стратегий с большим числом параметров и на длинных историях котировок незаменим C++AMP в Microsoft Visual Studio. Он использует графический процессор видеокарты ПК. На моём десктопе от 2012 г ускорение в 33 раза. Правда, каждый уровень ветвления if замедляет в 1.7 раза. Но это самый удобный способ получить супер-компьютер у себя дома.
johnsson08, javascript и lua весьма похожи — динамическая типизация + прототипное программирование, только в одном {/}, в другом do/end наверно это имелось в виду.