*Джон Голт*
*Джон Голт* Ответы на вопросы
13 марта 2019, 10:50

Какой язык программирования учить?

Какой язык программирования учить?
193 Комментария
    • Инвестор
      13 марта 2019, 11:05
      *Джон Голт*, C# — не прогадаешь.
    • Тарас Громницкий
      13 марта 2019, 13:46

      *Джон Голт*, не язык нужно учить, а рабочие стратегии искать.

      Программируют пусть программисты.

      Вам нужен минимум языка и максимум математики.

    • ANTI_Finsov
      13 марта 2019, 17:27
      *Джон Голт*, в целом для автоматизации торговли не требуется знания  языков программирования. ПО представленное на рынке позволяет писать внутредневные стратегии с использованием скриптовых языков (в Tradingview это PineScript, в TSLAB-встроенный визуальный редактор).
      Если же Вам интересен HFT  и прямой выход на биржу, то здесь однозначно имеет смысл учить c#. Так как все  биржевые библиотеки преимущественно адаптированны под него. Да и без работы в дальнейшем не останетесь так как многим брокерам требуется именно спецы со знанием с#(так сложилось именно в российской брокерской индустрии).
      Для максимальной экономии денежных средств советую обратить внимание на  сайт там выкладывают крутые курсы по различным языкам программирования абсолютно бесплатно.
      В целом вектор развития я вижу следующий:
      1.Изучение синтаксиса С#
      2.Основы ООП
      3.Структуры данных (коллекции, массивы и т.п.) и многопоточность
      4.Пилишь первое приложение: 
      Как вариант простой робот с использованием сторонних библиотек и 
      прямое подключение к серверу брокеру например через библиотеку Алор Atentis
      5. Далее изучить GIT, но и какие-нибудь популярные фреймворки+работа хотя бы с одной базой данных (например MySQL), но это уже чисто для трудоустройства.
      Советую почитать ещу мой пост:https://smart-lab.ru/blog/496838.php/
      • Андрей К
        13 марта 2019, 17:30
        ANTI_Finsov, 
        имеет смысл учить c#. Так как все  биржевые библиотеки преимущественно адаптированны под него.
        на РФ ни одна библиотека, сделанной биржей, не адаптирована под c# =)
        • ANTI_Finsov
          13 марта 2019, 17:37
          Андрей К, я имею ввиду внутренние библиотеки брокеров все на си шарп пишутся: Альфа Алор и т.о. Знаю не понаслышке. Что касается прямого выхода на биржу минуя брокера это уже отдельная тема. Но я считаю если чувак хочет создавать роботов и потом трудоустроится с#  то, что надо.
          Только в Алоре сейчас три вакансии весит на эти позиции.
          • Андрей К
            13 марта 2019, 17:52
            ANTI_Finsov, 
            Только в Алоре сейчас три вакансии

            Если интересно. Я за вакансиями в нашей сфере слежу с 2015 года. Распределение примерно такое по требуемым специалистам:
              — если западная контора, то обязательно java
              — если трудиться на РФ, то Cи
              — если дата аналист, то питон/R.

            Шарп требовался один раз БКС'у под статистический арбитраж. И постоянно требуется Банку Санкт Петербург в отдел алго.

            А Алору шарп нужен для околобиржевых целей.

  • Антон Денисков (Fry)
    13 марта 2019, 11:05
    C
    C++
    C#
      • Антон Денисков (Fry)
        13 марта 2019, 19:39
        *Джон Голт*, ещё спецы по датамайнингу и статистике говорят, что очень помогает R, но меня дико ломает в нём разбираться. Так что и советовать не могу. Но его так хвалят, так хвалят =/
    • _sg_
      13 марта 2019, 12:25
      Fry (Антон), интересно, а зачем Вам сейчас С ?
      Где его можно использовать сейчас?
      • CloseToAlgoTrading
        13 марта 2019, 12:28
        _sg_, :) вся автопромышленность на С, медецинское оборудование… Системы управления чем не попадя… все на C. C++ если у вас там вдруг QNX или Linux запустился. 
        • _sg_
          13 марта 2019, 12:50
          Denis,
          сейчас для озвученных Вами сегментов  ВЕЗДЕ используется КОДОГЕНЕРАЦИЯ. 
          И программы пишутся в лучшем случае на языках более высокого уровня с последующей выгрузкой исполняемого кода на ЛЮБОМ языке для ЛЮБОЙ платформы, в худшем используются  кросс-средства.
          Только очень «гордые птички» пишут все на С, не зная современных технологий программирования. 
          • CloseToAlgoTrading
            13 марта 2019, 13:31
            _sg_, не буду с Вами спорить, Вам конечно виднее. %)
          • gluhov
            13 марта 2019, 20:32
            _sg_, если бы так. Даже джваву не везде можно запустить. Вернее запустить можно но например интерфейс отрисовать уже нельзя
          • chizhan
            14 марта 2019, 05:25
            _sg_, кодогенерация это тоже самое что машинный перевод, безалкогольное пиво или резиновая женщина. Код должен быть ровно такой, какой он задумывался программистом. 
      • Андрей К
        13 марта 2019, 12:44
        _sg_, 
        Где его можно использовать сейчас?
        Там где линукс. А линукс проник глубоко уже =)
        • _sg_
          13 марта 2019, 12:56
          Андрей К,
          для Linuх лучше использовать Java.
          Для использования С++ необходим достаточный опыт программирования.
          • Андрей К
            13 марта 2019, 13:04
            _sg_, 
            для Linuх лучше использовать Java.
            для desktop приложений наверное?
            • _sg_
              14 марта 2019, 09:40
              Андрей К, 
              на треклятом Западе раньше (до 2008-10 гг.) Java + Oracle  являлся корпоративным стандартом. Хотя там очень много профессиональных «Плюсовых» — «Крестовых» команд было. А где-то с 2005-7гг начали уже появляться серьезные проекты на .Net. Сейчас не знаю как там, не отслеживаю.
      • Антон Денисков (Fry)
        13 марта 2019, 19:33
        _sg_, затем, что многие вещи проще делать в процедурной парадигме и сегодня и завтра и всегда. Начинать осваивать программирование вообще целесообразно с ассемблера, не для того чтобы на нём писать программы, а для того чтобы понять природу абстрактных вещей в ЯВУ (ссылки, типы, ограничения и т.п.). Но я не предлагаю с асма начинать, просто потому что это довольно муторный и долгий путь получится, хотя сам именно так и двигался.

        А если отвечать конкретно на ваш вопрос: например в MT5 можно кодить читая у Страуструпа только общее описание базовых конструкций языка. Совершенно не обязательно при этом очень уж глубоко изучать стандартную библиотеку, что по сути и есть самое сложное в освоении С++ и самое большое отличие от нейтив Си.
  • Alexander
    13 марта 2019, 11:16
    английский
  • Тимофей Мартынов
    13 марта 2019, 11:19
    я бы так сказал: значения не имеет

    надо брать и начинать программировать

    на чем угодно

    хоть на php для начала


    • VladMih
      13 марта 2019, 11:21
      Тимофей Мартынов, в чем тайный смысл тратить время на то, что априори не пригодится?
      Изучить азы? Так они хорошо изучаются на любом языке.
      • netbook
        14 марта 2019, 08:48
        VladMih, code never lies
    • Oleg Only Algo
      13 марта 2019, 12:29
      Тимофей Мартынов, скажи честно, ты же сам сайт написал?
  • Andrey Z
    13 марта 2019, 11:22
    Я с понедельника Phyton начинаю изучать. Универсальный язык, вот только насчет роботов как он, пока не знаю.
    • Crogall
      13 марта 2019, 12:35
      Andrey Z, а по каким ресурсам начинаете изучать?
      • Andrey Z
        13 марта 2019, 19:16
        Иван Боженков, Ресурсов много. Я конкретно, с понедельника на платный 6ти месячный курс записался от Skillfactory. Это не реклама, сам не знаю насколько хороший курс, но программа курса понравилась. А так есть курсы на Coursera бесплатные (если сертификат не получать), есть еще сайт для программистов proglib.io там много хорошей информации.
  • ch5oh
    13 марта 2019, 11:32
    C#
    • Dmitryy
      14 марта 2019, 11:18
      ch5oh, а какие библиотеки используете?
      • ch5oh
        14 марта 2019, 11:50
        Dmitryy, для чего использую? Их как бы дофига. Только надо открыть глаза и спросить гугл.
        • Dmitryy
          14 марта 2019, 12:01
          ch5oh, в данном контексте, я имел ввиду фин рынки) Вы насколько я успел заметить опционщик, стало любопытно какими инструментами пользуетесь.
          • Андрей К
            14 марта 2019, 12:04
            Dmitryy, 
            Вы насколько я успел заметить опционщик, стало любопытно какими инструментами пользуетесь.
            можно скачать ТСЛАБ, установить, зайти в его директорию и посмотреть все Net библиотеки. Подозреваю ch5oh этим и пользуется =))
            • Dmitryy
              14 марта 2019, 12:07
              Андрей К, не уверен, я лично очень настороженно отношусь к таким инструментам, не факт, что они считают всех греков правильно :)
            • ch5oh
              14 марта 2019, 14:39
              Андрей К, пользуюсь TSLab, конечно.

              А декомпилляция библиотек — это уже знаете как называется? =) Ну, Вы поняли.
          • ch5oh
            14 марта 2019, 14:42
            Dmitryy, пользуюсь TSLab. Там вся опционная математика сделана как надо. Пригодных для торговли опционных бибилиотек не встречал в открытом доступе.
  • Андрей К
    13 марта 2019, 11:40

    Расскажу чисто на отвлечься.  У меня дочь растет, мы ее развиваем по методе раннего развития. Сейчас у нее очень сильно развито мышление, логика и все сопутствующее.

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

    • AlexeyTikhonov
      13 марта 2019, 11:44
      Андрей К, а сколько лет?
      • Андрей К
        13 марта 2019, 11:45
        AlexeyTikhonov, скоро 3
        • Михаил Prozz
          13 марта 2019, 11:50
          Андрей К, Вы что с ума сошли (3 года)-- не лишайте ребенка детства!!!
          • Андрей К
            13 марта 2019, 11:52
            Михаил Prozz, а я ее не заставляю =) у нас все в играх, ей самой вдоволь. Я для нее игры придумываю, чтобы цифры и буквы запоминать, ей весело.
            • Михаил Prozz
              13 марта 2019, 12:02
              Андрей К, Это правильно и хорошо, а про психологов забудьте(шарлатаны).
              • Андрей К
                13 марта 2019, 12:05
                Михаил Prozz, да у меня жена подсела еще до рождения. На канал психолога. Я относился скептически, только отстегивал на соответствующие игры для развития (ну что то типа кубики Никитина и тд)… а сейчас пару лет прошло и я понял, что все эти вложения окупили себя более чем. Ребенок развит на голову сильнее сверстников. Поэтому я морально уже созрел заплатить пятнашку на собеседование, чтобы выявить направление развитие ребенка 

                я на себе понял, что человек должен заниматься любимым делом. Так пусть он занимается этим с детства уже.
                • Михаил Prozz
                  13 марта 2019, 12:16
                  Андрей К, Направления развития будут определяться к 8-10 годам, а у девочек направление развития к 14-15 годам сведется сами знаете к чему.  Знакомые репетиторы по физике и математике удивляются — гениальные девочки после  летних каникул 9 класса кроме ногтей ресниц и платьев ни чем думать не могут. Это жизнь и это нормально.
    • Unworldly
      14 марта 2019, 02:18

      Поэтому выберу простой Си для начала.


      Андрей К, 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, выводит результаты. Можно поредактировать и поэкспериментировать.

      Программка на «простом Си»... 

      • Андрей К
        14 марта 2019, 09:59
        Unworldly, не, ну в робототехнике такие конструкции не нужны =)))
        • Turbo Pascal
          14 марта 2019, 10:18
          Андрей К, ну, за робототехнику не скажу, но нейросетки пишу на C#. Нормально.
          Питон не понимаю — я программист старой школы (очень старой).
          • Андрей К
            14 марта 2019, 10:44
            Turbo Pascal, 
            ну, за робототехнику не скажу, но нейросетки пишу 
            arduino, altera, xilinx — это немного про другое. То есть совсем про другое. Там кроме языка, нужно еще электронику чуть понимать.
          • ch5oh
            14 марта 2019, 10:55
            Turbo Pascal, питон — сакс. =)
        • Unworldly
          14 марта 2019, 23:54
          Unworldly, не, ну в робототехнике такие конструкции не нужны =)))

          Андрей К, лет 30 назад ещё можно было знать «всё» программирование. Сейчас — жёсткая специализация.

          В робототехнике также специализироваться нужно уже сейчас, не говоря о том, что будет через 20 лет.
          • Андрей К
            14 марта 2019, 23:57
            Unworldly, 
            В робототехнике также специализироваться нужно уже сейчас, не говоря о том, что будет через 20 лет.
            у меня дочери три года, у меня еще года 4 есть самому вникнуть =)) пока сам на ардуино балуюсь механизмами.
  • MetaQuotes Software
    13 марта 2019, 11:45
    MQL5
  • Watcher
    13 марта 2019, 11:53
    На каких биржах торговать собрались? У криптовалютных обычно RESTful и/или WebSocket API — тут разумно начать с Python, т.к. в языке много «батареек», в том числе (особенно) и для анализа данных.

    У более стандартных бирж обычно более изощрённые протоколы передачи информации.

    Если через Quik, то можно начать с Lua (QLua), а потом попробовать C# — на C# написана неплохая обёртка QuikSharp.

    Дроч на перформанс оставьте задротам. Иначе быстро выгорите, занимаясь не пойми чем, вместо апробации разных торговых гипотез.
  • Механик Рынка
    13 марта 2019, 12:12
    Русский
  • CloseToAlgoTrading
    13 марта 2019, 12:21
    Выскажусь по поводу языка программирования :). В современном мире я бы сказал, что си знать полезно что бы понимать базовые принципы работы и конечно же если профессионально работаете с любыми электродевайсами на низком уровне. А вот для роботов я бы взял c# или python. С питоном все куда проще, очень востребован в ML и дадасайнс.
    В противовес любому из классических языков, можно параллельно смотреть на функциональные языки, так как там все иначе :).
    Java тоже не плохо, и с ним же яваскрипт фреймворки для веба.. 
    p.s. ежели взращивать программиста с молоду и не для роботов… то понимание как работает железо, память и т.д. на низком уровне просто необходимо в независимости от языка :). 
    • Crogall
      13 марта 2019, 12:34
      Denis, так, может, вы, сударь, окажете любезность, добавив пару ссылок на хорошие самоучители.
      • CloseToAlgoTrading
        13 марта 2019, 13:38
        Иван Боженков, к сожаление я не имею ни малейшего понятия о самоучителях ), поищите в гугле.
        • Crogall
          13 марта 2019, 13:43
          Denis, Точно, а то я там не искал. Там же только введешь. Изучить язык… и сразу же для чайников ссылка. На держи, учись, дескать. )) Благодарю за дельную мысль.
          • CloseToAlgoTrading
            13 марта 2019, 13:53
            Иван Боженков, ну стоит понимать, что у всех разный уровен подготовки. Если мне надо что то реализовать на том языке котрый я не знаю, я просто ищу как это сделать.
            попробуйте курсеру или датакэмп…
    • Андрей К
      13 марта 2019, 12:47
      Denis, 
      то понимание как работает железо, память и т.д. на низком уровне просто необходимо в независимости от языка :). 
      и это наверняка точно не питон и не c# =)
      • CloseToAlgoTrading
        13 марта 2019, 13:36
        Андрей К, питон сейчас очень популярен во многих областях, но тут как говориться вам шашечки или ехать :). Роботов на питоне писать удобно, он прям очень подходит для анализа данных, там миллион пакетов, можно сосредоточится на реализации идеи, исследованиях, не заморачиваясь о какой то мелкой реализации какой нить функции. Поэтому я его и посоветовал. 
        Все остально, сказанное о более грубоком понимании работы процессора, памяти, шин передачи данных, вам может и не надо ), время сейчас очень дорого, и сосредоточится именно на вашей цели куда более важно, нежели пространно изучать программирование. 
        • Андрей К
          13 марта 2019, 13:52
          Denis, 
          Роботов на питоне писать удобно, он прям очень подходит для анализа данных, там миллион пакетов, можно сосредоточится на реализации идеи, исследованиях, не заморачиваясь о какой то мелкой реализации какой нить функции
          вот я теперь опять питонистам начал завидовать =))
    • Владимир Гончаров
      13 марта 2019, 14:41
      Denis, Ассембре очень помогает понимать как работают указатели и как работает память. Мне очень помог изучить С++ но дальше дело встало т.к. нет знания англ., а библиотеки и мануалы к функция С++ требуют англ. + непонимание зачем мне это надо.
      • Андрей К
        13 марта 2019, 14:53
        Владимир Гончаров, то есть плюсы вы изучили через асм? оригинальный подход =))
        • johnsson08
          13 марта 2019, 15:02
          Андрей К, 
          > плюсы вы изучили через асм?

          Зря смеётесь. Это как раз самый правильный подход. Сначала Асм, а потом С/С++. Когда понимаешь, что там происходит под капотом, вообще никаких проблем не испытываешь с пониманием нюансов языка. А вот те, кто не знает асма очень часто попадают в разные проблемы на этих языках.
          • Андрей К
            13 марта 2019, 15:07
            johnsson08, 
             Когда понимаешь, что там происходит под капотом, вообще никаких проблем не испытываешь 
            может, говоря «под капотом», вы имеете ввиду знание архитектуры компьютера и процессов, а не асм?
            • johnsson08
              13 марта 2019, 15:19
              Андрей К, и это тоже, но в первую очередь — собственно асм. Потому что именно посредством асма и ничего иного и осуществляется взаимодействие с архитектурой, процессором и всем остальным. Грубо говоря, Асм — это окно туда. И в конечном итоге именно асм исполняется процессором, а не С/С++/Java/Python и т.д.
              • Владимир Гончаров
                13 марта 2019, 15:26
                johnsson08, да но асм это все равно удобочитаемый для человека язык где все равно есть абстракция понятная человеку.
                Вы ошиблись:
                И в конечном итоге именно асм исполняется процессором, а не С/С++/Java/Python и т.д.
                Исполняется машинный код на процессоре, а не «асм исполняется процессором» (хотя может понятия асм у нас разные), откомпилированный код будет хоть на С/С++/Java/Python одинаковый в «теории», сам не проверял.
                • johnsson08
                  13 марта 2019, 15:33
                  Владимир Гончаров,

                  > Исполняется машинный код на процессоре, а не «асм исполняется процессором»

                  Нет никакой ошибки. Отображение между асмом и машинным кодом практически биективное. Т.е. говоря проще Асм этот тот же машинный код, просто в более простом для понимания человеку виде. Когда я активно занимался реверсингом, в ряде случаев мне даже дизассмеблера не было нужно, чтобы понять, что делает программа))

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

            • Владимир Гончаров
              13 марта 2019, 15:21
              Андрей К, я так понимаю логику работы программы Высокого уровня на языке Низкого уровня, т.е. один и тот же машинный код можно написать этими разными языками, но на языке низ. уровня можно отследить ошибки не видные на Высоком уровне. Встраивания в код высокого уровня, код на асб, отлаженный можно оптимизировать софт. + знание работы с памятью и т.д.
        • Владимир Гончаров
          13 марта 2019, 15:30
          Андрей К, я еще в учеб. заведении хотел его изучить, но он не дался с разу. И он помог при изучении С++
  • Иван Егоров
    13 марта 2019, 12:27
    учите программирование — а не язык. Если научитесь программировать, то сможете писать на любом языке. Язык это инструмент, нужно умение сначала.
  • _sg_
    13 марта 2019, 12:40
    1. Начинайте с простых вещей. Python — отличный выбор, не прогадаете точно.
    2. По мере необходимости добавляем постепенно С# для Windows Приложений, и Java для Linux. Они похожи, так как С# изначально содран с Java
    3. Предыдущих 2-х пунктов вполне достаточно.
    Но если хочется «погорячее» изучите еще С++.
    Здесь Вы с лихвой получите большой опыт и огромное удовольствие от борьбы с Memory Leak, а все Ваше время будет тратится на «поиск пропавших указателей». Но зато Вы будете себя чувствовать крутым специалистом.
    4. Но языки это всего лишь пол-дела. Изучайте технологии программирования, фрейморки, платформы, паттерны проектирования. Одного языка недостаточно.
    5. Желаю успеха.
    • johnsson08
      13 марта 2019, 14:08
      _sg_, если утечки памяти вы называете проблемой, то вы не знаете С++))
      Но вы однозначны правы, что в С++ не надо лезть без чёткого понимания, зачем это надо. Язык действительно сложный.
      • _sg_
        13 марта 2019, 14:37
        johnsson08, 
        мягко скажем «неконкурентное» время разработки проектов,
        и далее, maintance и support больших распределенных проектов сводят на нет все прелести этого языка.
        • johnsson08
          13 марта 2019, 14:50
          _sg_, Да, это имеет место быть. Но вот только проблема в том, что если надо, чтобы работало очень быстро, в общем случае альтернатив плюсам просто нет.

          Сейчас в погоне за скоростью разработки (что, кстати, часто сопровождается низким качеством даже не проработки — банального продумывания кода) дошли до того, что даже простой интерфейс (сраный интерфейс!!!) начинает заметно тормозить. Пример — качалка котировок Гидра из S#. Что уж говорить про тормознутость основной бизнес-логики...
          В результате продукт собираем на коленке из говна и палок быстро, но вот только пользоваться им нельзя/проблемно. Ближайший исторический (и уже почти вымерший — вот странно?) аналог — дельфи, хоть там не столько с производительностью проблемы были, а с косячностью стандартных библиотек, но суть проблемы та же.
          • Андрей К
            13 марта 2019, 14:55
            johnsson08,
            аналог — дельфи, хоть там не столько с производительностью проблемы были, а с косячностью стандартных библиотек,

             Делфи умер после покупки его Майкрософтом. Майкрософт его купил как конкурента и похоронил после шестой версии. Отличная среда, прижившаяся в СНГ.
            • johnsson08
              13 марта 2019, 14:59
              Андрей К, МС не причём. Дельфи был мертворожденный изначально… С таким качества стандартного кода и кодогенерации это вообще чудо, что он столько смог. Я не видел ни одного (ни одного!) продукта от простейших поделок до продуктов самого Борланда и смежных ему контор, которые бы не были бы тупо глючными…
    • Владимир Гончаров
      13 марта 2019, 14:32
      _sg_, во вот языка мало, нужно логику работы программы уметь писать в голове и знать ООП.
  • Delphi конечно же
  • Логарифм Интегралыч
    13 марта 2019, 13:26
    лично мне хватает исследовать большие данные

    qbasic & excel
    причём excel развитие basic

    а вообще я запатентовал алгоритм
    позволяющий быстро изучать 20 разделов
    любого языка программирования и изучил цэ-диез
  • johnsson08
    13 марта 2019, 14:21
    Не слушайте тех, кто советует С и тем более С++.

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

    Современный С++ — прекрасный язык (и всегда был им). Думаю, что самый мощный и эффективный из существующих; на нём можно делать вообще всё, что поддерживает процессорная архитектура. Но, во первых, правильный путь его изучения — с ассемблера, а, во вторых, — его гибкость и мощность имеет дорогую цену — он очень сложен и труден. Нет, если использовать «С с классами» это ещё куда ни шло, но это детский сад, пол процента силы плюсов.
    Я так или иначе использую его уже больше 20 лет, но только сейчас начинаю понимать, почему Страуструпп (изобретатель и по прежнему активный развиватель С++) говорил: «я постоянно узнаю что-то новое об этом языке и его возможностях». Для новичка это означает нетленное «верёвка достаточной длинны, чтобы выстрелить себе в ногу».
    Хотя, если понимать что там к чему, то можно, например, написать бэктестер, который будет работать на полтора десятичных порядка быстрее уже и так векторного (а значит очень быстрого) бэктестера AmiBroker ;)

    зы: из перечисленных вариантов ещё не лезьте в паскаль/дельфи — мертворожденные изначально и, к счастью, уже почти вымершие языки.
    Питон — самое то для новичка. Может ещё С#.
    Java — только если очень надо безусловная кросплатформенность.

    А вообще — решайте свою задачу. Язык — всего лишь инструмент, один из многих. Не надо на нём циклиться, решение задачи — первично.
    • Владимир Гончаров
      13 марта 2019, 14:55
      johnsson08, Так раньше в школах к которых были х486 только Паскалю учили, в учебном заведении тоже с Паскаля потом дельфи типа для написания БД, ну и давали С посмотреть, в 2000-х годах учился не на программиста, а на технаря, пришлось ассемблер самостоятельно изучать, а потом С и С++ т.к. это была не исполненная студенческая мечта.

      Да языка мало, главное научиться формулировать задачу и перенести на алгоритмы, которые уже реализовывать на конкретном языке прогр., можете посоветуйте книжки где учат задачу разбить на алгоритмы. Книжка про фундаментальные алгоритмы на С++ (Роберт Седжвик) есть с примерами сортировки, поиска, алгоритмы на графах. 
      • johnsson08
        13 марта 2019, 15:16
        Владимир Гончаров, да… считалось, что паскаль имеет какие-то волшебные качества, которые якобы помогают студенту что-то там лучше усвоить. Чушь это всё человеконенавистническая. От того, что студент вынужден писать begin вместо открывающейся скобки и end вместо закрывающей он лишь возненавидит идиотов-формализаторов, и только...

        Я тоже, как и Вы в начале нулевых в ВУЗе учился, тоже не программер по основной специальности.

        Про алгоритмы… Скажем так… Если интересует алгоритмика в своего рода классическом понимании (сферического коня в вакууме — моё оценочное суждение), то это наверное в сторону знаменитого трёхтомника «искусство программирования» Дональда нашего Кнута. Считается едва ли не классическим трудом, миллион переизданий и я не слышал ни одного плохого слова от тех, кто её таки осилил. Но… У меня, например, этот трёхтомник занимает уже лет 17 почётное место на полке, но за всё это время он мне так ни разу и не понадобился. Наверное зря, но как-то пока потребности не было.
        Реально крайне помогло в практической работе две вещи — 1) желание и интерес докапывать до причин проблем и неэффективностией реализованных алгоритмов, и 2) изучение шаблонов проектирования и самое главное — причин, которые стояли за изобретением этих шаблонов. Потому что правильно применять можно только понимая, зачем оно нужно. Конкретных книг не подскажу. То, что я читал — уже давно не купить, да и описание с первого взгляда устарело, хотя суть не поменялась. За новыми книгами не слежу...
        Вообще — начать можно и с википедии (скорее английской) и самое главное — practice-practice-practice.
        • Владимир Гончаров
          13 марта 2019, 15:49
          johnsson08, хоть название книг и авторов?
          • johnsson08
            13 марта 2019, 16:08
            Владимир Гончаров, ну, хорошей на то время была «Применение UML 2.0 и шаблонов проектирования / Введение в О-О анализ, проектирование и итеративную разработку» Крэг Ларман, 2007, ИД «Вильямс».
            Ещё запомнилась «Принципы работы с требованиями к программному обеспечению. Унифицированный подход», Дин Леффингуэлл, Дон Уидриг, 2002, ИД «Вильямс» — это не про алгоритмы, но про то, как понять, какую систему вообще нужно создать. Тоже, собственно, важнейшая часть дела. Описанные методы сейчас уже в лоб могут считаться малость устаревшими, но суть 100% актуальна и применима. Сейчас стали чётче понимать, что ничего наперёд полностью и точно спроектировать невозможно, надо двигаться гораздо меньшими итерациями. Но в любом случае, нужно понимать/разработать генеральный план и внутри итераций — почти всё то же самое…
    • tranquility
      13 марта 2019, 15:09
      johnsson08, с с классами — мощь! и длл сделать можно и логику хорошо прописать. Так что вполне себе хороший вариант. С с классами лучше чем с чистый.
      • johnsson08
        13 марта 2019, 15:22
        tranquility, да, согласен, чо уж. Но шаблоны — вот это реальный отрыв бошки. Там такие вещи можно делать, что просто ваще. Я иногда думаю, что не тот язык назвали BrainFuck))) Но когда понимаешь что там к чему — просто фантастика.
    • Kapeks
      13 марта 2019, 18:52
      johnsson08, всё правильно пишешь. так и есть.
      Автор, надо всё таки разделить: «для написания роботов» или для «пригодился по жизни»?
      Если тебя интересует только алготорговля то бери специализированные среды типа TSLab. А если ты хочешь стать программёром и работать кодером на компашку, то это совсем другая тема.
      • chizhan
        14 марта 2019, 05:32
        Kapeks, TSLab бабки стоит, а программирование с нуля хотя бы мозги развивает)
    • AAA
      13 марта 2019, 19:46
      johnsson08, может быть вы сможете порекомендовать толковую литературу или тематические ресурсы по изучению С++ ? 
      • johnsson08
        13 марта 2019, 20:07
        Ed Ward, не знаю...

        дисклеймер: я очень давно в этой теме и могу ошибаться, выдавая то, что отлично работает для уже что-то знающего, за то, что сработает у новичка.

        Я вообще сомневаюсь, что можно научиться делать что-то сложное, если только читать книги и смотреть, как это делают другие (даже если они при этом всё прекрасно объясняют).
        Лучше берите новую задачу, или старую для нового решения, и ищите и пробуйте, как бы её наиболее правильно и эффективно решить на нужном языке. Разбирайтесь в деталях, пытайтесь использовать ранее неизвестные вещи, кажущиеся подходящими и полезными (сначала из хороших библиотек, типа STL, boost, ну и далее что найдёте). Смотрите, как другие люди решали похожие или другие задачи (есть куча хороших опен-сорсных проектов на любой вкус), попробуйте разобраться, почему они это делали именно так, а не иначе...
        Собственно по нюансам языка есть отличные родные документации, ещё больше написанного энтузиастами. Просто гуглите...
        Но сначала лучше подумайте, а точно ли вам С++ нужен)))
        В любом случае, Learning by doing, — иначе, мне кажется, это не работает…
        • AAA
          14 марта 2019, 11:59
          johnsson08, Благодарю за развернутый ответ !)
    • Влад(и)Мир
      14 марта 2019, 05:11
      johnsson08, мертворожденный не может умереть через 30 лет. Они перерождается )
    • chizhan
      14 марта 2019, 05:17
      johnsson08, я бы не сказал, что С/C++ сложный. А вот громоздкий это да. И еще все сложней находить по нему готовый код(чтобы не изобретать велосипед), в основном весь гугл заполонили примеры на шарп, пайтон, джава.  
      • Unworldly
        15 марта 2019, 00:13
        chizhan, это C++ не сложный???
        Хорошо, что делает следующая программа? 

        #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++ же несложный? 

        То, что она что-то делает, убедиться, а также поэкспериментировать можно здесь.
        • chizhan
          15 марта 2019, 05:48
          Unworldly, есть такое) Тогда нужно уточнить: бывает сложным, когда разбираешь чужой код. 
    • Turbo Pascal
      14 марта 2019, 09:26

      johnsson08, 

      из перечисленных вариантов ещё не лезьте в паскаль/дельфи — мертворожденные изначально и, к счастью, уже почти вымершие языки.


      Не понял, чо за наезд :)
      • Александр
        14 марта 2019, 10:58
        Turbo Pascal, Delphi/Lazarus почему все убивают постоянно, как Кенни в Южном Парке. Но он все еще живой. Чем больше я изучаю других языков, например си++, с# тем больше нравится Delphi. Особенно это касается си и си++. Хотя Delphi есть свои проблемы, но возможности по связке различных технологий просто безграничны.
        • Андрей К
          14 марта 2019, 11:15
          Александр, а вы на какой версии делфей?
          • Александр
            14 марта 2019, 11:24
            Андрей К, Пока Delphi XE10.2.3, Rio — сыровата.
        • Turbo Pascal
          14 марта 2019, 11:15
          Александр, паскаль жесток и прямоуголен, как немецкий язык. Я не понимаю такие языки, как питон или пхп: вольная типизация и много двусмысленностей в коде. Паскаль этого не допустит.
          Недаром многие научные проекты, начиная с 90-х годов, пишут на Паскале. Так что в своей нише он сидит, и что-то никак не сковырнут его.

          Хотя, скажу честно, я уже все больше предпочитаю C#. Они чем то похожи.
    • Александр
      14 марта 2019, 10:27
      johnsson08, В си++ придется все делать ручкам, ножками и головой. В общем не все прекрасно в си++. К слову говоря это фиерический язык, порядок include меняешь и начинает все компилировать. К тому же не удобно.
  • MetaQuotes Software
    13 марта 2019, 16:09

    Если писать торговых роботов, то надо выбирать по следующим критериям:

      — наличие доступа к рыночному окружению (у MQL5 огромная функциональность доступа к рыночному окружению и сделкам)

      — полный контроль за позициями и историей сделок (в MQL5 есть полный контроль)

      — подписная модель на рыночные события (у MQL5 множество OnXXXX событий)

      — готовая библиотека индикаторов, включая кастомные (у MQL5 тысячи индикаторов)

      — готовые опенсорсные библиотеки готового торгового кода (у MQL5 около 13 000 торговых програм лежат в кодобазе открыто)

      — наличие мощного мультисимвольного потикового тестера торговых стратегий (у MQL5 такой, включая мультиядерность и удаленных агентов тестирования)

      — наличие документации (у MQL5 на огромная документация на 10 языках)

      — скорость вычислений (у MQL5 чуть отстает от C++, но часто обгоняет на чистой математике)
     
      — защищенность языка, чтобы нельзя было написать трояна и можно было распространять защищенные скомпилированные файлы (только у MQL5)

      — наличие большого сообщества разработчиков (у MQL5 есть)

    Писать на языках общего применения торговых роботов неэффективно. 95% времени уйдет на построение инфраструктурных велосипедов. Причем получится реализовать самый мизер рыночного окружения.

    А собственно на роботов не останется ресурсов. Это не говоря уже о тестере.

    На MQL5 можно сконцентрироваться в 100% случаев на собственно алгоритмах роботов и не тратить ресурсы на велосипеды.

    • johnsson08
      13 марта 2019, 16:21
      MetaQuotes Software, 

      > скорость вычислений (у MQL5 чуть отстает от C++, но часто обгоняет на чистой математике)

      Ахинея, а точнее осознанное введение в заблуждение. Потому что используйте в коде на С++ ту же оптимизированную математическую библиотеку, что использует mql и тогда сравнение будет корректным. И, конечно, не в пользу mql. Но тогда не получится красиво соврать, правда?

      зы: вполне возможно, что с нормальным современным компилятором в каких-то случаях и этого не потребуется, т.к. нынешние оптимизаторы стали творить настоящие чудеса.
      • MetaQuotes Software
        13 марта 2019, 16:36
        johnsson08, не ахинея.

        MQL5 — это оптимизирующий 64 битный С++ компилятор, который генерирует нативный код.

        Вот пример доказательства обгона по сравнению с MSVC++ 2017: MQL5 смог вычисление двух корней из разных выражений свести в одну ассемблерную инструкцию.

        По ссылке есть все технические выкладки. И код одинаковый с asm результатами.
        • johnsson08
          13 марта 2019, 17:00
          MetaQuotes Software, один единственный пример доказывает лишь только то, что в этом одном случае это так. Но не более.

          MSVC при всём моём огромном уважении к MS и любви к Visual Studio, как компилятор, к сожалению, никогда не был ни самым стандартным, ни самым эффективным. Те же с-lang, gcc или интелевый компилер в среднем куда как лучше по каждому из этих параметров.

          Я готов поверить, что у вас отличные программисты. И даже готов поверить, что они всё пишут сами, а не берут из опенсорсных C-Lang/LLVM или gcc. Но ведь компилеры С++ делают тоже мягко говоря не глупые люди и числом их гораздо больше, чем ваших. И делают они это гораздо «давнее». Всё вместе это подсказывает, что всё таки сильно скорее всего в общем случае результат будет другой. Подчеркну — это не умаляет достоинств ваших разработчиков и mql как (быстрого) языка. Просто мне как человеку трилиарды раз видевшему и разбиравшему подробности булшитов вроде "<your-name-here> делает более быстрый код, чем С++!!!" и ваше утверждение кажется, мягко говоря, несколько сомнительным. Взять одного из самых слабых соперников, побить его в одном синтетическом тесте, и объявить это победой над всем родом — ну, как-то, глаз режет, согласитесь.
          • MetaQuotes Software
            13 марта 2019, 17:05
            johnsson08, у вас позиция «просто не хочу верить».

            Но реальность такова — внутри MQL5 находится С++ компилятор, который на равных и иногда чуть быстрее других С++ компиляторов (MSVC).

            Я привел лишь один хорошо описанный факт. Потестируйте сами. Трейдеры давно все уже проверили и признали, что скорость у MQL5 потрясающая для торговых систем.

            Но если вернуться к исходному вопросу, то там 10 важных пунктов. А вы среагировали лишь на один, да и то лишь представили свои теоретические ощущения, а не факты.

            Мы свой первый язык MQL выпустили в 2001 году, потом потратили 18 лет на развитие компилятов MQL -> MQL2 -> MQL4 -> MQL5.

            MQL4/MQL5 (под именем MQL4, так как составители считают его одиним языком) недавно входили в Top 50 самых известных языков программирования по TIOBE Index.

            Сейчас ниже Top 50:
            The Next 50 Programming Languages

            The following list of languages denotes #51 to #100. Since the differences are relatively small, the programming languages are only listed (in alphabetical order).

            • 4th Dimension/4D, ABC, ActionScript, Alice, Apex, APL, Avenue, bc, Bourne shell, C shell, CL (OS/400), Clojure, Common Lisp, Crystal, cT, Elixir, Elm, Emacs Lisp, F#, Forth, Icon, IDL, Inform, Io, Korn shell, LiveCode, Maple, Mercury, Modula-2, Monkey, MQL4, MS-DOS batch, NATURAL, OpenCL, Oz, PostScript, Pure Data, Q, Ring, S, SPARK, SPSS, Standard ML, Stata, Tcl, Tex, TypeScript, Vala/Genie, VBScript, VHDL
            • johnsson08
              13 марта 2019, 17:42
              MetaQuotes Software, у меня нет ни времени, ни желания с вами (или кем либо ещё) спорить или что-то доказывать. Я попробовал объяснить в чём проблема — вы (сделали вид что) не поняли. Это не моя проблема — это ваша проблема. Думаю, читатели при наличии желания без проблем разберутся далее сами.

              Приёмы ведения вами дискуссии (ad hominem, ad populum, ad antiquitatem, ad ignorantiam, подмена тезиса и некоторые ещё) эффективно блокируют желание говорить что-то ещё.

              зы: и кроме этого, кое-что существенное сказанное вами вызывает желание держаться от mql подальше.
              • MetaQuotes Software
                13 марта 2019, 18:27
                johnsson08, просто у вас технических доводов нет.
          • My Shadow
            14 марта 2019, 12:35
            johnsson08, пусть с intel c++ посаревнуются:)
            • Андрей К
              14 марта 2019, 12:49
              My Shadow, 
              пусть с intel c++ посаревнуются:)
              а вы тестили этот компиль? чем лучше gcc так и не понял, кроме как всяких плюшек в виде директив
              • My Shadow
                14 марта 2019, 12:54
                Андрей К, лет 15 назад тестил, когда С++ занимался, на тот момент очень неплохо оптимизировал под новые камни, но имел некоторые проблемы с C++ templates.
    • Александр
      14 марта 2019, 10:48
      MetaQuotes Software, Сделайте нормальные callback — вызов функций MQL5 из других языков и все ваше поделие просто не нужно будет.
      Писать на языках общего применения торговых роботов неэффективно. 95% времени уйдет на построение инфраструктурных велосипедов. Причем получится реализовать самый мизер рыночного окружения.
      Ваш язык ничем не ускоряет разработку роботов. От слова совсем. Нет ни одной команды, которая бы резко увеличила разработку. Ваш язык в общем-то очень мертво рожденный и применяется только в рамках mt.
      К тому же приходится жить с вашей не удобной системой и кучей багов. К другому брокеру уже не уйдешь, особенно если у брокера нет вашего поделия.
  • Cristopher Robin
    13 марта 2019, 16:11
    однозначно питон
  • PeterTrader
    13 марта 2019, 16:17
    Нейролингвистический язык программирования :)
  • Бейсик в Экселе говорят самый простой вариант. Для начала. А потом уже можно и на Фортране)
  • Бек
    13 марта 2019, 17:43
    Вам подойдёт язык Ада.
    Если не в жизни, то после неё точно пригодится…
  • Евгений Петров
    13 марта 2019, 17:58
    А кто подскажет на чем можно сделать сборщик новостей с сайтов. :-)
    Нужно подключаться к дисклозер, поиском искать новости по компаниям и в тексте (заголовке) новости ключевые слова. И мигать об этом в трее или там на почту слать. :-)

    П.С. Писал на С++ в свое время — не хватило ума. :-) Три дня ушло на программу хелло ворлд. :-) Написал тогда с грехом пополам почтового клиента, ухайдокал месяца 2 в совокупности. Потом сборщик разной лажи с сайтов в базу данных делал (забыл сколько времени, но тоже не быстро). С++ он для профи. Маршаллинг все дела. :-)

    Не знаю какие сейчас есть языки. Раньше мелкие поделки делал на паскале, дельфи, бейсике, ассемблере, shell, awk,php, sql, basic. Именно мелкие, т.е. бытовуху или что-то поправить.

    В общем дайте, плиз, совет, под мою задачу в какую сторону лучше копать. :-)
    • Иван Иванов
      13 марта 2019, 18:17
      Евгений Петров, в сторону того что знаешь, или можешь изучить за небольшой срок.
      Java — не просто язык, это целый огромный конгламерат инструментов фреймвоков технологий и т.п. и т.д. куда порог вхождения очень и очень высокий и с бухты барахты не прокатит.
    • Андрей К
      13 марта 2019, 18:18
      Евгений Петров, это называется парсер сайтов и работа с get/post запросами. На Си естественно это крайне тяжело. Парсить и делать запросы очень удобно на шарпе. Я смартлаб парщю через шарп под линуксом
    • ANTI_Finsov
      13 марта 2019, 18:42
      Евгений Петров, для вашей задачи подойдёт JAVA в связке с драйвером Selenuim, либо Phantom JS.
      Есть шикарный курс на эту тему всего лишь 14 часов. Бесплатно.
      https://coursehunters.net/course/selenium-webdriver-java-dlya-nachinayushchih
    • My Shadow
      13 марта 2019, 19:25
    • Megasum
      13 марта 2019, 21:43
      Евгений Петров, 
      А кто подскажет на чем можно сделать сборщик новостей с сайтов. :-)Нужно подключаться к дисклозер, поиском искать новости по компаниям и в тексте (заголовке) новости ключевые слова. И мигать об этом в трее или там на почту слать. :-)

      В питоне всё это делается легко, парсить сайт, искать ключевики. Т.е. реально все ингредиенты есть, просто нужно их состыковать. Программка будет на страницу кода.
      • MetaQuotes Software
        13 марта 2019, 22:49
        Megasum, а если нужна штатная рилтаймовая календарная аналитика, то она есть в MQL5 в виде CalendarXXX функций:

        CalendarCountryById

        Получает описание страны по её идентификатору

        CalendarEventById

        Получает описание события по его идентификатору

        CalendarValueById

        Получает описание значения события по его идентификатору

        CalendarCountries

        Получает массив описаний стран, доступных в Календаре

        CalendarEventByCountry

        Получает массив описаний всех событий, доступных в Календаре, по указанному коду страны

        CalendarEventByCurrency

        Получает массив описаний всех событий, доступных в Календаре, по указанной валюте

        CalendarValueHistoryByEvent

        Получает массив значений по всем событиям на заданном диапазоне времени по идентификатору события

        CalendarValueHistory

        Получает массив значений по всем событиям на заданном диапазоне времени с фильтром по стране и/или валюте

        CalendarValueLastByEvent

        Получает массив значений события по его ID c момента состояния базы Календаря с заданным change_id

        CalendarValueLast

        Получает массив значений по всем событиям с фильтрацией по стране и/или валюте с момента состояния базы Календаря с заданным change_id


        Календарь является штатным фидом в любом MetaTrader 5:

  • Morgan_500
    13 марта 2019, 18:49

    Scala (!)

     

  • My Shadow
    13 марта 2019, 19:21
    Язык учить для чего ?
    Что то программировать ?
    Наверно что то полезное или мозги размять ?
    Если что то полезное то в одиночку или с кем-то ?
    … и еще куча вопросов.

    Вообще Scala рулит, потому что несмотря на некторые изъяны переходить на что то другое уже не хочется.
  • Lop
    13 марта 2019, 20:11
    питон
  • Сейчас
    13 марта 2019, 23:03
    Если не сделал выбор возьми Golang, и ты уже потом поймешь что ты начнешь использовать много языков как инструмент.
  • Ромирес
    14 марта 2019, 00:57
    Вы не сказали для чего.

    Наиболее универсальный язык в задачах работы с непотоковыми данными (обработка данных в таблицах) — 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 и пр,

    • ch5oh
      14 марта 2019, 10:48
      Ромирес, C# уже давно стал кроссплатформенным. Тем более теперь, когда коммьюнити добила майкрософт и «заставила» его начать активно работать в направлении ".NET для Linux". И мобильные платформы тоже насколько знаю уже давно поддерживаются.
    • johnsson08
      14 марта 2019, 12:11
      Ромирес, всё верно, плюсую ко всему (увы, виртуально, реально не пущают)

      Да, ну и ещё всё забываю приплюсоваться к главной мысли, которую тут высказали пока всего лишь пара человек
      если интересен трейдинг в первую очередь, то надо и вкладываться в исследования и поиск торговых идей в первую очередь. Это прежде всего понимание рынка. Навыки прогерства тут достаточны ровно в том объёме, чтобы понимать, можно л алгоритмизировать это понимание или нет. Для исследований — это питон или (хуже, местами сильно, но активно девелопится и местами имеет крутейшие пакеты) R. Я предпочитаю проприетарный Матлаб. Залез на него ещё до питона и уже не могу слезть, очень уж удобен и быстр)
      если первично прогерство, то начать можно с питона и дальше после минимального понимания процесса в тот язык, что рулит в целевой сфере.
  • Григорий
    14 марта 2019, 09:28
    java и 1с-овский, деньги в кармане точно будут.
  • Turbo Pascal
    14 марта 2019, 09:28
     Учить надо не отдельный язык, а стак: полный набор технологий для получения продукта/результата.
    Например, я в основном пользуюсь таким набором: ASP.NET + C# + MSSQL + DevExpress + SSRS.
  • Александр
    14 марта 2019, 10:38
    С#, Java использовать для большого кол-ва мелких объектов (типа сделок) довольно накладно выходит из-за сборщика мусора, т. к. получаем тормоза. А чтобы от них избавиться придется переписать сборщик мусора и rtl для того, чтобы не было постоянной работы сборщика.
    Из того, что можно использовать более менее это Delphi в связке с си++ для прикручивания разных библиотек и часть кода можно вынести в си++. Но все писать на си++ затея не самая радужная, т. к. в си++ все приходится делать ручками. В си++ мало что есть из коробки в отличие от Delphi/Lazarus и важный код получается быстрым и эффективным.
    Ко всему прочему возможности по бесшовному связыванию модулей из разных языков программирования просто огромные.
    • ch5oh
      14 марта 2019, 10:55
      Александр, сделки можно хранить по-разному. И даже если их хранить как отдельные объекты, сборщик не причем. Сделки просто ложатся в память и накапливаются, чтобы быть доступными для основной логики. Сборщик не идиоты писали. Кроме исключительно редких специальных случаев Вы не почувствуете его присутствие.
      • Александр
        14 марта 2019, 11:03
        ch5oh, Ага редких. Не надо ляля. Достаточно частых случаев и местами даже не приятных. Попробуй обойти 3 млн. объектов — какой бы ни крутой сборщик не был, но столько перелопатить незаметно/быстро будет проблематично. В любом случае придется с этим чудом что-то делать и на это уйдет основная часть работы.
        • ch5oh
          14 марта 2019, 11:47

          Александр, в чем проблема "обойти 3 миллиона объектов"? Ни в чем. И при обходе коллекции сборщик мусора вообще никак не используется. Потому что объекты не создаются и не уничтожаются.

           

          Нет, наверное, можно написать настолько криворуко, применить неадекватные типы данных и коллекций (то есть задаться целью написать говнокод) — тогда можно искуственно создать псевдопроблемную ситуацию.


          Но тут как в анекдоте:
          Подходит джуниор к сеньору и спрашивает: «Почему работает неправильно? Где ошибка?»

          Сеньор посмотрел и отвечает: «Ошибка в ДНК».

          • Александр
            14 марта 2019, 12:04
            ch5oh, Как только объект создался, он уже как-минимум раз будет пройден сборщиком и на это все тратится время. Напишите тесты и посмотрите.
            • ch5oh
              14 марта 2019, 14:38

              Александр, это Вам надо «писать тесты и смотреть». Про разные поколения объектов почитайте на досуге.

               

              ПС А если Вам нужны микросекунды, тогда вообще другой разговор. И да, сишарп не подойдет. И даже асм не подойдет. Недавно был интересный пост как человек на FPGA торгует. Вот это — подойдет.

              • Андрей К
                14 марта 2019, 16:16
                ch5oh, 
                 Недавно был интересный пост как человек на FPGA торгует
                если не сложно, ссылочку, что то пропустил.
    • Dmitryy
      14 марта 2019, 12:06
      Александр, позвольте поинтересоваться, какого рода объекты?
      • Александр
        14 марта 2019, 12:10
        Dmitryy, Наследники от object
        • Dmitryy
          14 марта 2019, 12:13
          Александр, я хотел бы понять по точнее, что это за объекты, в чистом виде 3млн пустых обджектов не приведут к просадке перформанса.

          А по с++ погуглите перформанс тесты, их уже больше множество
          florent.clairambault.fr/stupid-cpp-vs-charp-performance-comparison/
          • Александр
            14 марта 2019, 12:35
            Dmitryy, Вот скажите мне у вас 3 млн. объектов, которые не будут удалены, нафига их обходить то? А чтобы сборщик мусора их не обходил, то необходимо использовать пулы объектов. А для этого нужно переписывать все коллекции. Я вот не знаю (хотя не изучал), коллекции, которые бы использовали пулы объектов.
            professorweb.ru/my/csharp/optimization/level3/3_9.php

            • My Shadow
              14 марта 2019, 12:40
              Александр,  если объектов много надо просто не .NET использовать, а jvm так как есть azul и ZGC.
              • Александр
                14 марта 2019, 12:46
                My Shadow, в jvm такая же проблема, придется переписывать сборщик и коллекции. К слову говоря на лекториуме есть лекция на этот счет к слову очень познавательная.
                В идеале все сводится к ручной сборке и большому кол-ву памяти.
                • My Shadow
                  14 марта 2019, 12:48
                  Александр, вы хоть в гугле слова которые привел наберите
                  • Александр
                    14 марта 2019, 12:50
                    My Shadow, Набрал и что? Первое решение платное, второе новое, т. к. я может быть и не в курсе. Если оно позволяет в ручную делать сборку мусора так я только за. Я не использую jvm. Мне больше нравятся нативные решения.
                    • My Shadow
                      14 марта 2019, 12:58

                      Александр, если вы хотите в ручную то используйте offheap. а эти решения делают реальный параллельный GC без задержек на кучах большого объема, ценой некоторого замедления работы с объектами.

            • Dmitryy
              14 марта 2019, 12:51
              Александр, я почему и спросил про какого рода объекты? Если каждый из них по 100Мб весит, тогда я могу понять, хотя это тоже вопрос решаемый, 32Гб оперативной памяти уже не роскошь. Лишняя или преждевременная чистка также приводит к потере производительности. Нужно правильно работать с коллекциями, использовать генерики, не плодить глобальные переменные. И всё-равно все эти меры, это куда проще и безопаснее чем с++.
              • Александр
                14 марта 2019, 12:58
                Dmitryy, Нет это не проще и не безопасней чем с++. Работа со 100 тыс. сделок в стокшарпе уже давала просадки при сборке мусора (версия стокшарпа старая, как сейчас обстоят дела не знаю). Это даже более не безопасно, чем с++. В с# есть:
                1. Есть 2 вида памяти: управляемая и не управляемая. Всегда надо знать, где лежит объект. Для неуправляемой памяти надо еще чистить в ручном режиме.
                2. Есть маршалинг. Он свое тоже берет в виде копирования там, где его можно не делать.
                3. Не всегда заметны утечки памяти. Слабые ссылки ни кто не отменял. Но об этом тоже нужно помнить.
                4. Есть сборщик мусора.
                Со с# выстрелить себе в ногу можно очень легко, а вот заметить это бывает достаточно сложно. Для большинства задач с# хватает. Но есть задачи специфические и их лучше решать на си++ или Delphi.
                В си++ конечно другие проблемы.
                • Dmitryy
                  14 марта 2019, 13:01
                  Александр, не спорю при разработке главно сделать работающий алгоритм, а производительность потом можно поправить перформанс тестингом. Современные тестеры на малекулы разбирают дотнет код, причем очень не плохо дают советы по оптимизации. Да, иногда не тривиально, но реально.
                  • Александр
                    14 марта 2019, 13:07
                    Dmitryy, Единственный плюс си# и java заключается в их рантайм оптимизациях, что существенно сложнее сделать на нативных языках, даже на си++. В остальном особых плюсов использования си# и java я не вижу. Местами сборщики мусора больше мешают, чем решают поставленных задач.
                    Чтобы в Delphi отследить утечку памяти нужно установить одну переменную и утечки будут всегда видны. А в других языках мне надо с другими инструментами просиживать, чтобы узнать, что я что-то не чищу.
          • Александр
            14 марта 2019, 12:48
            Dmitryy, Писал я один проект на Stocksharp. В нем при работе более чем 100 тыс. сделок были значительные просадки по скорости из-за сборщика мусора.
            • ch5oh
              14 марта 2019, 14:46
              Александр, стокшарп архитектурно неудачно сделан. О чем и писал ранее: можно написать говнокод и получить проседание производительности. Но причиной будет говнокод, а не GC.
  • Dmitryy
    14 марта 2019, 11:05
    Для трейдинга по сути не важно (HFT не берем, врядли тут кто-то в силах противостоять той же цитадели). В квике может очень понадобится LUA, но зная другие языки, вы его быстро освоите.

    Работаю более 10 лет с C#, и когда мне понадобилось посчитать кое-какую статистику по российскому рынку, я его и ногой не тронул. Проще было взять JavaScript, через REST вытащить с API мос. биржи данные и сделать несколько циклов. Ни тебе парсеров, ни приведение данных, зачем C#?

    Вообще NodeJS крайне удобная штука, потому-что очень мощное сообщество и всё делается на коленке из консоли.
  • Иван Иванов
    14 марта 2019, 12:20
    надо учить машинный язык 010101010101
  • Евгений Петров
    14 марта 2019, 14:04
    Кстати, ребята, хочу сказать спасибо за тему. :-)
    Родил сейчас код на VBA под excel (собирался года 3), получил удовольствие. Давно код не писал. Страшно вспомнить сколько лет. :-)
  • Rostislav Kudryashov
    14 марта 2019, 21:44
    Роботов обычно пишут под определённый торговый терминал. Для Quik'а самый естественный выбор — QLua. Это «нечто» по мотивам JavaScript.
    Но для для тестирования стратегий с большим числом параметров и на длинных историях котировок незаменим C++AMP в Microsoft Visual Studio. Он использует графический процессор видеокарты ПК. На моём десктопе от 2012 г ускорение в 33 раза. Правда, каждый уровень ветвления if замедляет в 1.7 раза. Но это самый удобный способ получить супер-компьютер у себя дома.
    • johnsson08
      15 марта 2019, 09:55
      Rostislav Kudryashov, зачем вводите в заблуждение? Язык Lua, и выросшая из него Quik обёртка QLua ни малейшего отношения к JavaScript не имеют. От слова вообще. Это самостоятельный, довольно старый, типа легковесный язык, который весьма  легко эмбеддить в свои проекты (чем часто пользуются в геймдев индустрии, например). Его «нечтовость» в квике в большинстве наследуется от самой «нечтовости» квика…
      • My Shadow
        15 марта 2019, 10:24

        johnsson08, javascript и lua весьма похожи — динамическая типизация  + прототипное программирование,  только в одном {/}, в другом do/end наверно это имелось в виду.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн