Здравствуйте, Олег К., Вы писали:
ОК>Не тяжело. Уж точно не идиоты стояли во главе (ну и вниз по цепочке) в Bear Stearns, Lehman Brothers, Washington Mutual и что там еще.
Ну и где щас тот Lehman Brothers?
Довелось с ними поработать, незадолго до их бесславной кончины. Редкостные дебилы там попадались. Кубло индусов, с подковёрными дрязгами.
ОК>Ну если ОСь и железо тьюнают Юниксовские администраторы, то это нормально. Но вот если в kernel mode залезут программисты из инвестмент банка, то это вообще жесть будет.
Да они и в прикладуе творили адЪ. Вша из из кода лезла просто табунами.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, Олег К., Вы писали:
ОК>>Не тяжело. Уж точно не идиоты стояли во главе (ну и вниз по цепочке) в Bear Stearns, Lehman Brothers, Washington Mutual и что там еще. CC>Ну и где щас тот Lehman Brothers? CC>Довелось с ними поработать, незадолго до их бесславной кончины. Редкостные дебилы там попадались. Кубло индусов, с подковёрными дрязгами.
Подозреваю, что это был сарказм со стороны Олега К.
Здравствуйте, Олег К., Вы писали:
ОК>А вот ты не только трололо, но еще и школоло. А лпц и остальные лица у него на работе — сто процентные Дон Кихоты.
Ну я ж говорю: Д'Артаньян.
У тебя один ты светоч разума и носитель сакрального знания. А всех вокруг считаешь кем полагается считать Д'Артаньяну окружающих.
ОК>Какой же я Д'Артаньян?
Да классический же!
Здравствуйте, lpc, Вы писали:
lpc>Здравствуйте, Олег К., Вы писали:
ОК>>Мне все равно что там у вас и я очень хорошо знаю какие идиоты могут встречаться во всех этих компаниях. На всех ступеньках карьерной лестницы. "Чем бы дитя не тешилось лишь бы не плакало," в общем.
lpc>Не тяжело жить с мыслью что вокруг одни идиоты?
Я не думаю, что Олег К. считает идиотом тебя и твоих коллег.
Я лично преклоняюсь перед вашим мастерством.
Выжать скорость из непредназначенной для этого платформы, используя ее непредназначенным способом — это, безусловно, потребовало нескольких лет усилий очень талантливых людей.
Что не отменяет идиотизма изначально принятого кем-то решения вырезать гланды через об использовании этой платформы.
Здравствуйте, Олег К., Вы писали:
ОК>А тут и не надо является экспертом в хфт чтобы понимать что вы там наделали (скорее всего по приказу сверху).
Все твои вопросы в этом и других ответах показывают, что таки надо. Уж если не экспертом, но хотя бы иметь опыт работы с подобными системами. Иначе — шквал очень глупых и смешных вопросов, отвечать на которые нет никакого желания.
Здравствуйте, jazzer, Вы писали:
ОК>>Ну и потом. Допустим они заранее создали все объекты которые только возможно. Зачем им тогда писать свой аллокатор? J>Ну, судя по тому, что он еще писал, у них блочный аллокатор, т.е. они преаллокировали здоровый кусок памяти на, скажем, 100000 ордеров, и пока у них меньше 10000 ордеров, никаких больше аллокаций не происходит. Но если рынок колбасит и ордеров нужно больше, то выделяется еще один блок на следуюшую сотню тысяч ордеров, и дальше опять никаких аллокаций.
Да, все примерно так (только расти x2 нет смысла, +25% обычно хватит чтобы дожить до конца дня). Назвать это "аллокатором" у меня язык не поворачивается, слишком уж все это тривиально. Но некоторым товарищам здесь этого не понять и они будут с пеной у рта доказывать что они там наговнокодили.
Здравствуйте, Олег К., Вы писали:
lpc>>Решение получается далеко не сишное. Никто не запрещает использовать наследование и даже (сюрприз!) рефлексию. Чем это лучше С++ я уже писал. ОК>Чувак, хоть я и не видел вашего кода, но могу сказать с уверенностью что получился очередной говнокод.
Мальчик, шел бы ты лесом со своей юнешеской самоуверенностью да не возвращался. Реально утомил своим негативом.
Здравствуйте, jazzer, Вы писали:
J>Что не отменяет идиотизма изначально принятого кем-то решения вырезать гланды через об использовании этой платформы.
Ох устал я пытаться доказывать непонятно что и непонятно зачем... Но сделаю очень маленькую последнюю попытку.
Дело в том, что система алготрейдинга это не один изолированный чемоданчик — это совместная работа 2-3 десятков систем, от маленьких до больших, от быстрых до не очень. Все они взаимодействуют, загружают одни и те же данные, используют одни и те же протоколы и в конце концов один и тот же messaging bus (разумеется самодельный — очень узкоспециализированный и поэтому очень эффективный, всякие tibco rv рядом не валялись). Считать наносекунды во всех (под)системах не надо и классическая java для большой половины идеально подходит. Но если одну половину систем писать на C++, а другую на java, то придется очень многое дублировать. Весь common layer. А это огромный гемор и огромный источник ошибок. Лучше уж с небольших извратом написать это на java и использовать как в zero GC системах так и в "обычных". Это экономит очень много сил и средств, позволяет легко ратировать людей между коммандами и многое другое. А в самом начале это позволило избежать крайне рискованного и непростого процесса — найма и построения с нуля комманды С++ девелоперов.
А самое смешное — даже если бы пришлось писать на С++, то точно так же пришлось бы делать преаллокацию объектов, т.к. даже в плюсах new и delete совершенно не бесплатные. Поэтому реальной разницы тупо нет (единственный реальный плюс в плюсах это кастинг поинтеров, в java приходится хранить примитивы разных типов в разных массивах, но это ерунда по сравнению с другими плюсами).
Здравствуйте, Олег К., Вы писали:
ОК>Боюсь тут дело в лпц а не в студии. Если лпц каждый раз пишет что-то вроде ОК>
ОК>#define MY_COOL_MACRO(a, b, c) \
ОК>do \
ОК>{ \
ОК> // Тут дохрена кода
ОК>} \
ОК>while (false)
ОК>
ОК>вместо того чтобы написать инлайн функцию, то, разумеется, студия ему не поможет.
Ёклмн... иди учись читать! И думать головой.
lpc>Я сам пару лет назад окончательно свалил с плюсов потому что стало невыносимо ковыряться в 10 летнем коде (да еще и убогие плюсовые IDE остались на том же уровне что и 10 лет назад — rename работает правильно лишь через раз).
Для тех кто в танке разжевываю по буквами — речь шла о том, что С++ позволяет написать такой код, что ни одна C++ IDE не в состоянии это разобрать. В Java такой проблемы не существует.
Здравствуйте, lpc, Вы писали:
lpc>Здравствуйте, Паблик Морозов, Вы писали:
ПМ>>При этом не ответил ни на один технический вопрос, зато повыпендривался на отличненько.
lpc>На технические вопросы я отвечаю либо когда вижу подленный интерес, либо на job interview. Перед "Паблик Морозов" метать бисер я не намерен.
Здравствуйте, licedey, Вы писали:
L>Простите, а на чем пишут бэк-энд мэйн-стрима? Гугл, бинг, фэйсбук, яндекс, касперски, паралелс и прочее...Понимаю не все там работают, однако же.
Здравствуйте, lpc, Вы писали:
lpc>Ох устал я пытаться доказывать непонятно что и непонятно зачем... Но сделаю очень маленькую последнюю попытку.
Дык сразу бы так написал. На самом деле этот пост многие вопросы проясняет.
Здравствуйте, lpc, Вы писали:
lpc>Да, все примерно так (только расти x2 нет смысла, +25% обычно хватит чтобы дожить до конца дня).
Т.е. всплеска оно не переживёт?
lpc> Назвать это "аллокатором" у меня язык не поворачивается, слишком уж все это тривиально. Но некоторым товарищам здесь этого не понять и они будут с пеной у рта доказывать что они там наговнокодили.
Ну, прочитав описания и сложив картину у меня тоже лезет на язык "говнокод!".
Но у тебя есть индульгенция в виде специфики области применения (я в HFT чуток имел возможность нос сунуть. Попробовал, но больше почему то не хочется) + факт, что оно таки как надо работает.
Поэтому моя оценка: "Ничего не трогай, ничего не меняй. Но продолжение начни лучше писать с нуля." (С)
Здравствуйте, lpc, Вы писали:
lpc>>Я сам пару лет назад окончательно свалил с плюсов потому что стало невыносимо ковыряться в 10 летнем коде (да еще и убогие плюсовые IDE остались на том же уровне что и 10 лет назад — rename работает правильно лишь через раз). lpc>Для тех кто в танке разжевываю по буквами — речь шла о том, что С++ позволяет написать такой код, что ни одна C++ IDE не в состоянии это разобрать. В Java такой проблемы не существует.
Вернёмся с небес на землю.
А в реале написавший в production код, который ни один IDE не могёт разжевать, сначала одаривается скипидарной клизмой и ЦУ "переделать нахрен сейчас же!". В случае хронического рецидива применяется живительная эвтаназия — персонаж выпинывается с конторы, никому вредители не нужны.
Поэтому о каком "позволяет написать" может вестись речь?
Здравствуйте, Олег К., Вы писали:
ОК>Ну неужели рутины нет в квантовском коде? По мне, так уж лучше все-таки копаться в "кривизне очередного непродуманног протокола" чем в кривизне квантовского кода который они, PhDs, сами понять не в состоянии. И интереснее и меньшее зло.
Аналогично. Кванты просто адова тоска.
Здравствуйте, Трололоша, Вы писали:
Т>Здравствуйте, Олег К., Вы писали:
ОК>>Ну неужели рутины нет в квантовском коде? По мне, так уж лучше все-таки копаться в "кривизне очередного непродуманног протокола" чем в кривизне квантовского кода который они, PhDs, сами понять не в состоянии. И интереснее и меньшее зло. Т>Аналогично. Кванты просто адова тоска.
математику зато можно было бы вспомнить, тряхнуть стариной
Здравствуйте, lpc, Вы писали:
lpc>Здравствуйте, jazzer, Вы писали:
J>>Что не отменяет идиотизма изначально принятого кем-то решения вырезать гланды через об использовании этой платформы.
lpc>Ох устал я пытаться доказывать непонятно что и непонятно зачем... Но сделаю очень маленькую последнюю попытку.
Спасибо.
lpc>Дело в том, что система алготрейдинга это не один изолированный чемоданчик — это совместная работа 2-3 десятков систем, от маленьких до больших, от быстрых до не очень. Все они взаимодействуют, загружают одни и те же данные, используют одни и те же протоколы и в конце концов один и тот же messaging bus (разумеется самодельный — очень узкоспециализированный и поэтому очень эффективный, всякие tibco rv рядом не валялись). Считать наносекунды во всех (под)системах не надо и классическая java для большой половины идеально подходит.
Спасибо за объяснение.
Лично я вижу здесь некоторую инверсию приоритетов.
Все эти 2-3 десятка разных систем — это все обслуга, главное, что делает систему конкурентноспособной — это то самое наносекундное ядро и транспорт к бирже.
И именно оно имеет самый высший приоритет, и именно от него надо плясать.
А у вас получается, что вспомогательные системы типа приема/загрузки клиенстких баскетов/ордеров, репортинг, букинг и прочая фигня фактически диктуют выбор платформы для самого главного компонента.
Хотя вроде как должно быть ровно наоборот — наносекундный компонент должен быть написан на языке, исключающем левые влияния типа сборки мусора, виртуальной машины, джита и т.д, и быть максимально близким к процессору. И вместо того, чтобы выбрать язык, в котором всякой фигни нет изначально, вы выбираете язык, в котором все это есть, и последовательно со всем этим боретесь (при этом заодно повторно реализуя стандартную библиотеку).
И вот в скоростном ядре скоростной messaging очень в тему, но для связи с упомянутыми 2-3 десятками систем отлично подойдет та же tibco rv, тем более что зачастую она уже поддерживается, еще до того, как вы начали свое писать. Ибо это стандарт для среднескоростных систем. И сериализацией вопрос решается.
lpc>Но если одну половину систем писать на C++, а другую на java, то придется очень многое дублировать. Весь common layer. А это огромный гемор и огромный источник ошибок. Лучше уж с небольших извратом написать это на java и использовать как в zero GC системах так и в "обычных". Это экономит очень много сил и средств, позволяет легко ратировать людей между коммандами и многое другое.
Ты сильно преувеличиваешь насчет огромного гемора и огромного источника ошибок.
Мы вот с остальными системами (которые написаны и на плюсах, и на java, и на шарпе, и даже безумное легаси на перле) развязаны полностью, никакого common layer у нас с ними нет вообще, мы с ними общаемся по их протоколам (базы данных, CSV, tibrv, JSON и т.п.).
И никаких проблем, затраты на поддержание этого минимальны, потому что все эти системы обслуги меняются раз в сто лет все равно.
Тем более ты выше сказал, что остальные компоненты "используют одни и те же протоколы" — т.е. достаточно один раз реализовать этот общий протокол и больше проблем не знать
lpc>А в самом начале это позволило избежать крайне рискованного и непростого процесса — найма и построения с нуля комманды С++ девелоперов.
Т.е. у вас просто уже была готовая команда java-программеров и стояла задача написать быстрый (или ускорить существующий) алготрейдинг, вот его и писали силами имеющейся команды, естественно, на java, так?
lpc>А самое смешное — даже если бы пришлось писать на С++, то точно так же пришлось бы делать преаллокацию объектов, т.к. даже в плюсах new и delete совершенно не бесплатные. Поэтому реальной разницы тупо нет (единственный реальный плюс в плюсах это кастинг поинтеров, в java приходится хранить примитивы разных типов в разных массивах, но это ерунда по сравнению с другими плюсами).
О чем я и говорю. В С/С++ все эти преаллокации и прочие игры — это естественный способ работы, и под это дело не нужно переписывать стандартную библиотеку, что пришлось сделать вам. В С++ буст STL — замечательно работает "из коробки" на таких массивах.
А вы фактически реализовали Си на Java своими руками.
То, что естественно на С/С++ — извращение на Java, и наоборот.
И вы в результате решаете реализовать сишное решение, но не на естественном для этого решения языке, а на Java.
Здравствуйте, Трололоша, Вы писали:
Т>ЗЫ: Вы таки видимо примеры перловарения не видели. Т>Увидеть можно тут: http://cs.usu.edu.ru/langs/perl/obfuperl.htm Т>Развидеть невозможно!
это obfuscated perl, не надо его за нормальынй перл выдавать.
Почему то перловые скрипты, которые пишу я, ни у кого в команде вопросов не вызывают, хотя перл, кроме меня, знает от силы полтора человека.
На всякий случай процитирую ман перла:
Perl is designed to give you several ways to do anything, so consider picking the most readable one.