Женщины меньше платят налогов? Ну потому что меньше зарабатывают, наверное?
Потому что шкала налогов прогрессивная, а среди топ-5% женщин меньше. Почему? Потому что они в гробу видали пахать по 80 часов в сутки, например. Ну и потому, что в нижних 5% (среди заключённых тюрем, например) женщин тоже меньше. Медианы почти совпадают, а стандартные отклонения навыков разные.
И, к слову, все эти исследования о (не)равенстве оплаты труда — они реальное количество труда, вложенного в работу, не учитывают, а смотрят только на итоговые зарплаты в зарплатных ведомостях. Смысла ноль.
Ну и ещё потому, что женщины в НЗ в среднем живут на пенсии этак четыре года дольше, потому что мужчины умирают раньше, но когда нас волновали более ранние смерти мужчин, не так ли? Даже это почти во всех дискуссиях фреймится как «бедных женщин к концу жизни больше, чем бедных мужчин, ой-ой, сексизм». Ну да, больше — мужики поумирали уже.
пускаться в рассуждения про политику я бы не хотел - это не моя сильная сторона.
С этого стоило начинать, потому что каким-то образом в ваших рассуждениях альтернатива «левачью» — «националисты», что, тащем, и показывает, что политика и политическая теория — не ваша сильная сторона. Кстати, замечу хохмы ради, что этак 15-18 из известных «25 пунктов» — чисто левая программа, а оставшиеся 7-10 — специфика времени и конкретного вида постулатов о притеснении. Но это так, к вашим отсылкам о том, кто сколько вреда нанёс. За последние сто лет особенно.
Но если вы всё же очень хотите поговорить о том, что люди
делят друг друга на "наши" и "не наши", и все эти предрассудки - как раз и есть то, что людям мешает жить.
— это, конечно, тоже можно обсудить. Правда, лучше говорить не о «наши» и «не наши», а свободе ассоциации (за что, среди прочего, топят симпатичные мне по политическим взглядам люди). И свобода ассоциации — она не для того, чтобы разделять «своих» и «чужих» по вашим жупельным признакам (хотя вы всё равно это делаете, пусть и неявно), а для того, чтобы обеспечивать культурную гомогенность вашего социума, отчего он таки выигрывает.
И поэтому я не вижу проблем в том, чтобы свободно ассоциироваться с беженцами из некоторых африканских государств, которых сейчас слегка обещают немножко убивать за их белость (и хотеть с ними ассоциироваться), или с афганскими переводчиками, а, например, с беженцами из Гаити — не ассоциироваться. И я искренне считаю, что от добавления статистически значимого количества первых моё локальное общество выигрывает, а от вторых — нет.
Скажем, никто из нас не задумывается о том, что мы обладаем свободой кивать головой или пожимать плечами — потому что никто никогда эти движения не ограничивал.
Я задумывался, хотя меня в этом никогда не ограничивали (и даже гипс не накладывали).
Вообще было бы очень здорово, если бы люди, следующие за диалектикой и прочей гегелевщиной, как-то помечали это явно и сразу.
Эмоции тут рядом с институтом материнства. У среднего читателя от этого немного затуманивается мозг и уменьшается желание спорить: мозг — ассоциативная машина, и отсылки к подобным чувствительным темам рядом с тем, с чем спорит ваш собеседник, ассоциирует предмет спора с этими чувствительными темами. «Подумайте о детях», короче.
Речь не про ребёнка либертарианца, который у вас опять материализовался в реальности сразу взрослым, а про либертарианца ребёнком: в реальности, чтобы взрослый либертарианец возник, его огромное количество людей прямо и опосредованно обеспечивает от эмбриона и до ~18 лет благами, который этот эмбрион не заработал и не оплатил — не по-либертариански как-то.
Я слышал, большинству детей для их рождения необходимы родители, и именно эти родители обеспечивают эти самые блага уже своим трудом.
Общество же вкладывает в следующее поколения материальные ресурсы вместе с ожиданиями, что эти вложения будут возмещены этими поколениями посредством их вложений в следующее за ними поколение.
А оплата праздного образа жизни тем, кто не хочет работать, в этих прекрасных рассуждениях о поколениях вылезает… откуда?
И, к слову, если вы так желаете поговорить о следующих поколениях и вкладывании ресурсов, то тут где-то рядом вопросы о том, каких людей вы бы скорее стимулировали оставить побольше потомства для следующего поколения, а каких — посидеть поиграть в танчики вместо этого всего. Ну, раз мы тут такими глобальными процессами мыслим.
Когда же вырастают оболтусы, которые делают вид, что этого ничего не было и они никому ни за что ничего не должны
Вы правда читаете «не должен обеспечивать не желающему работать взрослому бездельнику его потребности» как «ничему никого не должен», или это осознанная подмена тезиса с вашей стороны?
Есть, просто либертарианцы всегда начинают отсчёт с когда им удобно — как будто они сразу на свет вылупились взрослыми, игнорируя весь чужой труд, совершенно для каждого человека авансом в него вложенный, начиная с рождения.
Либертарианцы видят, что «вы не заплатили за ваш собственный детский сад, поэтому вы должны обеспечивать всех, кто не хочет работать» — так себе аргумент и попытка играть на эмоциях.
При этом либертарианцы с радостью готовы заплатить учителю за своего ребёнка (и даже за ребёнка вон того чувака).
А ведь даже рождения — дело не его личное и его родителей, а общественное, потому что просто для того, чтобы ваша мама не умерла при родах, а вы — в младенчестве, потребовалась построить всю современную цивилизацию.
«Ваши предки построили цивилизацию, а вы им не платили, поэтому вы теперь должны обеспечивать всех, кто не хочет работать» — тоже так себе аргумент и попытка играть на эмоциях.
В таком случае присваивание выглядит и ведёт себя как просто name shadowing, и старое имя можно просто удалить — в чём его смысл, если оно никуда не захвачено?
По-настоящему свободой это было бы, если бы каждый человек имел гарантированное обществом и государством право на жизнь.
Право на жизнь у него есть. Права на бесплатный труд других людей у него нет, и введение такого права лишило бы этих самых других людей прав распоряжаться своим трудом и своим временем так, как они считают нужным. Последнее право важнее.
И что, сотня наносекунд это 30 метров пространства для скорости света. Для принятия торгового решения это пренебрежимая величина, даже (не даже, а особенно) если это бинарный инсайд, ведь расстояния от источника до получателя на порядки больше
Там, где эти наносеки были важны, сервера участников биржи стояли в одном физическом помещении с сервером самой биржи и соединялись с ним кабелями фиксированной длины (те, что поближе, были свёрнуты в такие смешные спиральки, похожие на как раньше у проводных телефонов шли к трубке).
Надеюсь, это отвечает в том числе на ряд ваших вопросов далее.
а если у вас есть конкурент, то он мог получить инсайд на часы раньше (по личным причинам), и вы эту информацию не имеете
SEC за такое по головке не погладит (если вы не конгрессмен, конечно — они S&P500 аутперформят весьма стабильно, и просто повторять сделки Нэнси Пелоси — хорошая идея, жаль только, что закон не требует от них публиковать инфу по сделкам сразу).
Если это алгоритм, то неладен он будет, если не получает обратную связь с биржей, в рамках схожих таймфреймов на каждую сделку. Что можно просчитать за единицы микросекунд?
Достаточно сложные модели, на самом деле.
Ну и ещё можно медленно обновлять коэффициенты линеаризованной модели в FPGA, нелинеаризованная версия которой обсчитывается и обновляется на большом x86_64. Но я не FPGA'шник и не видел их никогда, так что не знаю подробностей. Моё дело в трейдинге — обмазывать всё темплейтами, и чем больше компилятор жрёт памяти, тем лучше мои KPI.
Арбитраж, даже если биржи сферичны в вакууме определяется скоростью света, где лишние 30-300-3000-30000 метров просто рандомный фактор для топологии сети
Микроволновые соединения «по воздуху» совсем не сферичны и вполне применяются.
Но да, в тех случаях счёт не на десятки-сотни наносекунд, а на десятки и сотни микросекунд. 30 км — это уже аргумент, на самом деле, и для арбитража между чикаго и найзи, например, это уже роляет.
одни жалуются, что из-за HFT у них нет шансов
Фигня. В mid-freq и ниже ваш основной сигнал — это не кто ещё какие ордера на бирже сделал и не какое при этом было состояние книги вот сейчас, а какие новости вышли, какие новые законы, и всё такое (HFT'шники на них тоже смотрят, конечно, но сильно по-другому). HFT и не-HFT вообще в разных нишах.
Но, опять же, я не трейдер и не квант, я только темплейтами всё обмазываю и на сдачу DSL'ки делаю, а непосредственно предметная область для меня лично уступает в эффективности в роли снотворного только уравнениям в частных производных, поэтому на базе моих слов открывать трейдинг-стартап не стоит.
Тогда для такой практики в коде нужны комментарии, составленные исходя из обозначенной проблемы.
А как называются комментарии, которые проверяются компилятором, я всё время забываю? А, во, вспомнил: это типы!
Это тогда потребуется писать каким-нибудь особо специальным образом, и не всегда удастся придумать решение для этого.
Да не, просто заводите (как в данном случае) отдельный тип Quantity, отдельный тип Price, и так далее. В каком-нибудь идрисе можете там рядом таскать (стираемое в рантайме) доказательство, что quantity неотрицательное, а в плюсах ограничиться рантайм-проверками где-то в конструкторе в дебаг-билдах, скажем (и гонять это всё в хвост и в гриву на pcap-дампах или на shadow-клоне потока событий с биржи с прода перед выкаткой новой версии на прод).
И я на всякий случай напомню, что мы в ветке под обсуждением решения с catch-all-шаблоном, который удалён. В моей классификации это вполне подходит под «особо специальный образ».
Если не думать и не хотеть решить проблему, сохранив решение, то так оно и останется.
Вы так говорите «думать», как будто у вас неограниченный бюджет на думалку.
Те ресурсы своего мозга, которые я сэкономил на борьбе с минными полями в языке, я могу потратить на алгоритмику, или на обдумывание предметной области, или на микрооптимизации, в конце концов.
Вот мне же почему-то удаётся находить решения
Мне всё же представляется несколько нечестным говорить одновременно «находить решения» и «это решение не для прода, а просто иллюстрация возможности».
Конкретный не предложу, но — очевидно, что в языке не должно быть UB.
Здесь согласен. Но как конкретно этот язык будет связываться с вашим кодом, который непосредственно отправляет там что-то на биржу, поддерживает книгу, и так далее (и который на плюсах или на расте или чём-то таком), чтобы оверхед был минимален?
Вот моя практика показывает, что собственный DSL проще всего. Но это на самом деле я просто люблю писать языки, поэтому у меня тут некоторый биас.
В обсуждаемом случае речь была явно не про HFT.
Сорян, я слишком привык к HFT.
Я говорил о том, что авторы статьи не потрудились выдумку свою соотнести с реальностью.
Перед авторами статьи стоит задача привести пример, который был бы понятен человеку вне предметной области без излишнего занудства, но против которого у среднего читателя в теме не возникнет большого желания придраться. Лично у меня этого желания не возникает.
Мы же не биржевой движок пишем, а алгоритм, который с ним взаимодействует, у нас всегда есть ограничения и на каждом шаге невообразимая халатность их не проверять.
Не понял логики, извините. Почему алгоритм, с ним взаимодействующий, не имеет требований по латентности?
Может, мы разные вещи понимаем под этими алгоритмами, разве что.
Вот а если уже биржевой движок писать, то корректность работы и ее доказательная база на совести разработчиков, но снова, упс, не сэкономленные наносекунды. Не видел ни одного реального кейса где бы биржевые движки за эти наносекунды соревновались на неком конкурентном рынке. Его нету.
А я видел, и прямо участвовал, и не раз имел, как их называл мой тогдашний менеджер/тимлид/чиф текникал офисер, «проекты» на неделю-две по ускорению отдельной пердюшки (вроде mycompany::circular_buffer<T>::insert) на 10-50 нс (в смысле, 10-50 нс уже считалось хорошим результатом, и люди были готовы платить за это зарплату и радовались этим самым результатам).
Для многих людей все же важно понимать, что и зачем они делают, иначе возникает много лишних вопросов с тем "как" и "что после этого будет".
Если не ограничивать искусственно глубину рекурсии в задавалке этих вопросов, то довольно быстро вы поймёте, что эти вопросы не имеют смысла. Важно только то, идёт ли прямой эффект (остальные всё равно не просчитаете) вашей работы в плюс или в минус согласно вашей системе ценностей. Поэтому, например, я не пошёл в Anduril (хотя там прямо стык моих самых сильных областей — и машинное обучение, и хаскель, и формальные методы, и немножк плюсов для совсем лоу-левела, да и некоторые из основателей там весьма базированные чуваки), тогда как трейдинг — это где-то нейтрально.
Там скорее уже был вопрос профессорского tenure (или как это всё в Штатах работает), но потом товарищ ушёл пилить что-то функциональное в jane street, и всё.
Вероятно, мы по разному понимаем "нормально". Хаскель это всё же больше язык программирования, чем верификатор, поэтому я не думаю, что консистентность важна.
Даже в языке программирования я хочу знать, что если я, например, написал какую-то свою свободную монаду, то она удовлетворяет тем законам, которые я от неё ожидаю в предметной области. Или что там монады эти — что какое-то нетривиальное преобразование имеет, скажем, правую (или левую) обратную (то есть, что lossless-сжатая картинка правильно разжимается).
Если метатеория языка не является консистентной, то я не знаю, доказал ли я что-то на самом деле, или у меня всё моё доказательство на самом деле сводится к
someGoodProperty : ∀ x → foo x = bar x
someGoodProperty x = someGoodProperty x
Иными словами, даже в языке программирования полезно иметь возможность выкинуть квикчек и использовать нормальные доказательства (для тех свойств, которые не завязаны на внешний мир).
Подход как у идриса для хаскеля, имхо, лучше чем как у агды
В идрисе можно сделать %default total, и будет как в агде :] И тайпчекер идриса помнит, что тотально, а что — нет.
Папиров с доказательством его консистентности, мягко скажем, меньше написано, но идрис хотя бы претендует на то, чтобы быть консистентным языком в total-подмножестве. Значимая часть людей, топящих за завтипы в хаскеле, не ставит целью даже это.
потому что бодаться с termination checker-ом довольно трудно
ИМХО в практических задачах это не проблема, и синтаксического уменьшения терма (или достаточно очевидного accessibility relation) хватает. Серьёзное бодание с termination checker'ом вылезает только при попытке в языке формализовывать другие языки. Но это так, личный опыт и опыт чтения чужих статей, не более, могу ошибаться.
Нет, с подходом "забуду здесь то", "забуду там это".
А именно так ведь на практике всё и происходит. Ваш коллега написал какой-то код, вы через полгода его меняете. Вы не то что «забыли здесь то», вы этого и не помнили никогда. Или вы ожидаете, что каждый контрибьютор в кодовую базу будет следить за всеми изменениями и поддерживать ментальный контекст каждого другого контрибьютора? Или даже если вы сами написали — через полгода вы уже забудете такие нелокальные финты.
Поэтому лично я признаю, что память у меня ограничена, и диапазон внимания ограничен, и код я пишу не всегда в состоянии максимальной концентрации, поэтому единственный выход — доверить тайпчекеру проверки, что я не делаю ерунды. И именно поэтому я люблю строгие системы типов, а подобные не ловящиеся компилятором вещи — не люблю. И, опять же, именно поэтому
Это — не панацея, но если этим не заниматься, будет значительно хуже.
ключ не в планировании на года вперёд, а в написании кода так, чтобы при его изменении компилятор вас тыкнул носом в максимальное количество мест, где ломаются предположения из-за ваших свежих изменений.
Да, проблема имеется, но это лишь значит, что следует стараться её обходить и избегать.
А обсуждаемый подход её только усиливает.
Трейдерам следует программировать на C++ только в одном случае: если они, в первую очередь, программисты на C++, а трейдеры они — уже по совместительству. У трейдеров должен быть другой язык программирования.
Какой бы вы предложили?
Но да, именно поэтому я делал DSL для трейдеров. До этого был eDSL на плюсах, embedded именно в плюсовые темплейты. Компилировалось всё в довольно эффективный код, но понять это было, скажем так, проблематично.
Я говорил, что он в C++ — есть, а в статье неявно подразумевается, что — нет.
ИМХО лучшая статья на хабре — условие как компромисс. Какие-то границы на предлагаемые подходы, сохраняющие эту нечёткую эквивалентность, в таких обсуждениях есть: например, на юзабельность такого подхода в проде, или на количество кода, которое нужно для его поддержки написать и поддерживать, и так далее.
А то так-то понятно, что и на сишке можно сделать аналог перегрузок и шаблонов (например, написав на C компилятор плюсов, и далее используя его), но понятно, что про это в таких дискуссиях можно не вспоминать.
И именно поэтому я
воспринял его как код для production'а.
Если оно уходит без предварительной проверки достаточности средств, то это — вопиющая некомпетентность брокера, потому что шортятся акции под залог, и следует проверить его размер, иначе у брокера будут проблемы, если с трейдера нечего взять, а цена резко улетит вверх.
Или, наоборот, предварительная проверка — это лишние сотни наносекунд, и вы проиграли тем, кто их не делает (а выражает все требования в типах и проверяет максимальное их число при компиляции, например).
Мы можем усложнять этот пример бесконечно, но смысл, опять же, я надеюсь, понятен: полагаться на внешние ограничения — не всегда возможно, либо не всегда остановит вас достаточно рано.
Это реальность, которая вам не нравится и от которой вы бежите в свой манямирок.
Реальность — это «C++ популярный язык» (с чем я не спорю).
А вот «полиморфизм а-ля темплейты C++ — хорошее решение потому, что C++ популярный» — это манямирок, притягивание решения к желаемому ответу, и так далее. Проецировать и называть тех, кто на это указывает, живущими в манямирке, и выдавать свои нелогические цепочки за «реальный мир» — смешно.
Если вы обосрались с C++ и теперь горько жалеете о бесцельно прожитых годах, то это ваши проблемы, которые про качества C++ не говорят ровным счетом ничего.
Так обсёр-то в чём? Что не разделяю вашего восторга по поводу некоторой технологии и, о ужас, смею называть её костыльной?
Но фанатики при этом любители раста (или хаскеля, или чего там), лол.
Я написал кучу кода на шаблонах, начиная с той самой середины 1990-х. Что-то из мной написанного используется совершенно разными людьми в совершенно разных проектах. Так что я-то знаю о чем говорю.
Только о шаблонах вы не говорите. Вы вообще ничего по существу не говорите. Вы говорите только в канве «популярно ⇒ любой нравящийся мне аспект хорош».
Впрочем, это, конечно, не противоречит вашему «я знаю, о чём говорю», потому что, опять же, о технических вопросах вы не говорите.
И поэтому же несмотря на
А тот факт, что вы анонимный никто [...] Ибо вы никто и звать вас никак.
и на то, что там внизу страницы чувак, который для меня тоже анонимный никто, не имеющий ни предыстории, ни авторитета, ничего, с ним обсуждать что-то по существу получается (и мне вообще плевать, начинающий ли это программировать васян-восьмиклассник, или Страуструп и Саттер решили выучить русский язык и теперь вместе анонимно постят на хабре). Потому что там обсуждение конкретных технических вопросов.
А у вас и имя есть, и предыстория, и контекст, но от вас идёт только «популярно! обсёр! молодость! вы аноним!»
Куча уже написанного кода, с ленью, отсутствием разделения данных и коданных, и прочими вещами, которые мешают иметь консистентную метатеорию. Неконсистентные завтипы — это точно не «нормально».
По беглому общению с парой человек, наиболее активно работающих над завтипами в хаскеле, им важнее сделать хоть что-то, но быстрее, чем нормально, но потом. Один товарищ, который по потенциальным завтипам в хаскеле вообще диссер сделал и потом за них топил следующие лет 10, вообще считает, что консистентность-то и не нужна вообще. Когда я у него спросил, мол, что хотелось бы быть уверенным, что если я доказал что-то, например, про свой инстанс Monad , что законы там всякие выполняются, он ответил, мол, что да, полезно, но надо сделать скорее.
Так что нет, это совсем не avoid success at all costs из соседнего комментария. Это, наоборот, стали гнаться за успехом.
Популярность -- это только следствие того, что сделанное в C++ оказалось лучше, чем вы об этом думаете. Шаблоны в C++ оказались практичными, что и стало ключом к их широкому применению.
Вы снова повторяете свой псевдоаргумент о том, что если язык, имеющий нравящуюся вам фичу, популярен, то это говорит о (если вообще не «благодаря») качестве этой фичи.
«Практичные шаблоны C++» (особенно формата и качества реализации а-ля 90-ые) — вы тут на стендап-комика тренируетесь, что ли?
Получилось, что C++ стал первым по настоящему большим полигоном, на котором этот самый параметрический полиморфизм массово испытывался.
Не, маловат полигон. По-настоящему большой полигон — это только питон.
При общении с вами есть еще и такая проблема, что вы никто и звать вас никак.
Ну естественно, это вполне в канве общих отсылок к популярности, авторитетам и прочему подобному.
Я бы скорее удивился, если бы вы что-нибудь такое не сказали.
Мне с этим ничего не надо делать. Есть исходное высказывание про полигон, где ничего про популярность нет. Есть вы, влезающий в этот разговор с псевдоаргументом про популярность. Мне достаточно отметить, что тему разговора вы сменили, и всё.
В очередной раз рассказать, что все в Haskell-е все сделано "максимально прямо"?
Нет, конечно. В хаскеле много других вещей сделано довольно криво.
Но, кстати, если вы хаскелисту скажете, что стандартное prelude с partial-функциями кривое, или что без завтипов тяжело (и нормально их в хаскеле не сделают никогда по ряду причин), или тому подобные вещи, то хаскелист не будет вам отвечать «популярность хаскеля в ФП-среде означает, что partial-функции — самые функциональные функции, и что завтипы никому не нужны, хаскельная типизация самая типизированная типизация!»
Если вы сожалеете о впустую потраченной на C++ молодости, то это не значит, что все должны переживать о том, насколько C++ плох и бежать искать что-то лучше.
Я бы, конечно, мог сказать, что автор никому не нужной местечковой библиотеки для акторов конечно будет любить C++ и защищать его всеми силами (включая «популярно ⇒ хорошо»), но не буду.
Вместо этого, раз вам очень хочется обсуждать личности, скажу, что сожалею как раз о том, что потратил некоторую часть этой молодости на высшее образование, математику, и прочее. Без этого всего спокойно программировать на C++ и зарабатывать свои N тыщ в наносекунду — про жопсекурность шаблонов была не шутка — было бы куда проще.
Потому что шкала налогов прогрессивная, а среди топ-5% женщин меньше. Почему? Потому что они в гробу видали пахать по 80 часов в сутки, например. Ну и потому, что в нижних 5% (среди заключённых тюрем, например) женщин тоже меньше. Медианы почти совпадают, а стандартные отклонения навыков разные.
И, к слову, все эти исследования о (не)равенстве оплаты труда — они реальное количество труда, вложенного в работу, не учитывают, а смотрят только на итоговые зарплаты в зарплатных ведомостях. Смысла ноль.
Ну и ещё потому, что женщины в НЗ в среднем живут на пенсии этак четыре года дольше, потому что мужчины умирают раньше, но когда нас волновали более ранние смерти мужчин, не так ли? Даже это почти во всех дискуссиях фреймится как «бедных женщин к концу жизни больше, чем бедных мужчин, ой-ой, сексизм». Ну да, больше — мужики поумирали уже.
С этого стоило начинать, потому что каким-то образом в ваших рассуждениях альтернатива «левачью» — «националисты», что, тащем, и показывает, что политика и политическая теория — не ваша сильная сторона. Кстати, замечу хохмы ради, что этак 15-18 из известных «25 пунктов» — чисто левая программа, а оставшиеся 7-10 — специфика времени и конкретного вида постулатов о притеснении. Но это так, к вашим отсылкам о том, кто сколько вреда нанёс. За последние сто лет особенно.
Но если вы всё же очень хотите поговорить о том, что люди
— это, конечно, тоже можно обсудить. Правда, лучше говорить не о «наши» и «не наши», а свободе ассоциации (за что, среди прочего, топят симпатичные мне по политическим взглядам люди). И свобода ассоциации — она не для того, чтобы разделять «своих» и «чужих» по вашим жупельным признакам (хотя вы всё равно это делаете, пусть и неявно), а для того, чтобы обеспечивать культурную гомогенность вашего социума, отчего он таки выигрывает.
И поэтому я не вижу проблем в том, чтобы свободно ассоциироваться с беженцами из некоторых африканских государств, которых сейчас слегка обещают немножко убивать за их белость (и хотеть с ними ассоциироваться), или с афганскими переводчиками, а, например, с беженцами из Гаити — не ассоциироваться. И я искренне считаю, что от добавления статистически значимого количества первых моё локальное общество выигрывает, а от вторых — нет.
Так это разные переменные, и никакого присваивания снова нет.
fooα-эквивалентна этому:Я задумывался, хотя меня в этом никогда не ограничивали (и даже гипс не накладывали).
Вообще было бы очень здорово, если бы люди, следующие за диалектикой и прочей гегелевщиной, как-то помечали это явно и сразу.
Эмоции тут рядом с институтом материнства. У среднего читателя от этого немного затуманивается мозг и уменьшается желание спорить: мозг — ассоциативная машина, и отсылки к подобным чувствительным темам рядом с тем, с чем спорит ваш собеседник, ассоциирует предмет спора с этими чувствительными темами. «Подумайте о детях», короче.
Я слышал, большинству детей для их рождения необходимы родители, и именно эти родители обеспечивают эти самые блага уже своим трудом.
А оплата праздного образа жизни тем, кто не хочет работать, в этих прекрасных рассуждениях о поколениях вылезает… откуда?
И, к слову, если вы так желаете поговорить о следующих поколениях и вкладывании ресурсов, то тут где-то рядом вопросы о том, каких людей вы бы скорее стимулировали оставить побольше потомства для следующего поколения, а каких — посидеть поиграть в танчики вместо этого всего. Ну, раз мы тут такими глобальными процессами мыслим.
Вы правда читаете «не должен обеспечивать не желающему работать взрослому бездельнику его потребности» как «ничему никого не должен», или это осознанная подмена тезиса с вашей стороны?
Хм, интересно, как я в хаскеле пользуюсь вектором без ООП.
Либертарианцы видят, что «вы не заплатили за ваш собственный детский сад, поэтому вы должны обеспечивать всех, кто не хочет работать» — так себе аргумент и попытка играть на эмоциях.
При этом либертарианцы с радостью готовы заплатить учителю за своего ребёнка (и даже за ребёнка вон того чувака).
«Ваши предки построили цивилизацию, а вы им не платили, поэтому вы теперь должны обеспечивать всех, кто не хочет работать» — тоже так себе аргумент и попытка играть на эмоциях.
В таком случае присваивание выглядит и ведёт себя как просто name shadowing, и старое имя можно просто удалить — в чём его смысл, если оно никуда не захвачено?
Право на жизнь у него есть. Права на бесплатный труд других людей у него нет, и введение такого права лишило бы этих самых других людей прав распоряжаться своим трудом и своим временем так, как они считают нужным. Последнее право важнее.
Там, где эти наносеки были важны, сервера участников биржи стояли в одном физическом помещении с сервером самой биржи и соединялись с ним кабелями фиксированной длины (те, что поближе, были свёрнуты в такие смешные спиральки, похожие на как раньше у проводных телефонов шли к трубке).
Надеюсь, это отвечает в том числе на ряд ваших вопросов далее.
SEC за такое по головке не погладит (если вы не конгрессмен, конечно — они S&P500 аутперформят весьма стабильно, и просто повторять сделки Нэнси Пелоси — хорошая идея, жаль только, что закон не требует от них публиковать инфу по сделкам сразу).
Достаточно сложные модели, на самом деле.
Ну и ещё можно медленно обновлять коэффициенты линеаризованной модели в FPGA, нелинеаризованная версия которой обсчитывается и обновляется на большом x86_64. Но я не FPGA'шник и не видел их никогда, так что не знаю подробностей. Моё дело в трейдинге — обмазывать всё темплейтами, и чем больше компилятор жрёт памяти, тем лучше мои KPI.
Микроволновые соединения «по воздуху» совсем не сферичны и вполне применяются.
Но да, в тех случаях счёт не на десятки-сотни наносекунд, а на десятки и сотни микросекунд. 30 км — это уже аргумент, на самом деле, и для арбитража между чикаго и найзи, например, это уже роляет.
Фигня. В mid-freq и ниже ваш основной сигнал — это не кто ещё какие ордера на бирже сделал и не какое при этом было состояние книги вот сейчас, а какие новости вышли, какие новые законы, и всё такое (HFT'шники на них тоже смотрят, конечно, но сильно по-другому). HFT и не-HFT вообще в разных нишах.
Но, опять же, я не трейдер и не квант, я только темплейтами всё обмазываю и на сдачу DSL'ки делаю, а непосредственно предметная область для меня лично уступает в эффективности в роли снотворного только уравнениям в частных производных, поэтому на базе моих слов открывать трейдинг-стартап не стоит.
А как называются комментарии, которые проверяются компилятором, я всё время забываю? А, во, вспомнил: это типы!
Да не, просто заводите (как в данном случае) отдельный тип
Quantity, отдельный типPrice, и так далее. В каком-нибудь идрисе можете там рядом таскать (стираемое в рантайме) доказательство, чтоquantityнеотрицательное, а в плюсах ограничиться рантайм-проверками где-то в конструкторе в дебаг-билдах, скажем (и гонять это всё в хвост и в гриву на pcap-дампах или на shadow-клоне потока событий с биржи с прода перед выкаткой новой версии на прод).И я на всякий случай напомню, что мы в ветке под обсуждением решения с catch-all-шаблоном, который удалён. В моей классификации это вполне подходит под «особо специальный образ».
Вы так говорите «думать», как будто у вас неограниченный бюджет на думалку.
Те ресурсы своего мозга, которые я сэкономил на борьбе с минными полями в языке, я могу потратить на алгоритмику, или на обдумывание предметной области, или на микрооптимизации, в конце концов.
Мне всё же представляется несколько нечестным говорить одновременно «находить решения» и «это решение не для прода, а просто иллюстрация возможности».
Здесь согласен. Но как конкретно этот язык будет связываться с вашим кодом, который непосредственно отправляет там что-то на биржу, поддерживает книгу, и так далее (и который на плюсах или на расте или чём-то таком), чтобы оверхед был минимален?
Вот моя практика показывает, что собственный DSL проще всего. Но это на самом деле я просто люблю писать языки, поэтому у меня тут некоторый биас.
Сорян, я слишком привык к HFT.
Перед авторами статьи стоит задача привести пример, который был бы понятен человеку вне предметной области без излишнего занудства, но против которого у среднего читателя в теме не возникнет большого желания придраться. Лично у меня этого желания не возникает.
Не понял логики, извините. Почему алгоритм, с ним взаимодействующий, не имеет требований по латентности?
Может, мы разные вещи понимаем под этими алгоритмами, разве что.
А я видел, и прямо участвовал, и не раз имел, как их называл мой тогдашний менеджер/тимлид/чиф текникал офисер, «проекты» на неделю-две по ускорению отдельной пердюшки (вроде
mycompany::circular_buffer<T>::insert) на 10-50 нс (в смысле, 10-50 нс уже считалось хорошим результатом, и люди были готовы платить за это зарплату и радовались этим самым результатам).Если не ограничивать искусственно глубину рекурсии в задавалке этих вопросов, то довольно быстро вы поймёте, что эти вопросы не имеют смысла. Важно только то, идёт ли прямой эффект (остальные всё равно не просчитаете) вашей работы в плюс или в минус согласно вашей системе ценностей. Поэтому, например, я не пошёл в Anduril (хотя там прямо стык моих самых сильных областей — и машинное обучение, и хаскель, и формальные методы, и немножк плюсов для совсем лоу-левела, да и некоторые из основателей там весьма базированные чуваки), тогда как трейдинг — это где-то нейтрально.
Там скорее уже был вопрос профессорского tenure (или как это всё в Штатах работает), но потом товарищ ушёл пилить что-то функциональное в jane street, и всё.
Даже в языке программирования я хочу знать, что если я, например, написал какую-то свою свободную монаду, то она удовлетворяет тем законам, которые я от неё ожидаю в предметной области. Или что там монады эти — что какое-то нетривиальное преобразование имеет, скажем, правую (или левую) обратную (то есть, что lossless-сжатая картинка правильно разжимается).
Если метатеория языка не является консистентной, то я не знаю, доказал ли я что-то на самом деле, или у меня всё моё доказательство на самом деле сводится к
Иными словами, даже в языке программирования полезно иметь возможность выкинуть квикчек и использовать нормальные доказательства (для тех свойств, которые не завязаны на внешний мир).
В идрисе можно сделать
%default total, и будет как в агде :] И тайпчекер идриса помнит, что тотально, а что — нет.Папиров с доказательством его консистентности, мягко скажем, меньше написано, но идрис хотя бы претендует на то, чтобы быть консистентным языком в total-подмножестве. Значимая часть людей, топящих за завтипы в хаскеле, не ставит целью даже это.
ИМХО в практических задачах это не проблема, и синтаксического уменьшения терма (или достаточно очевидного accessibility relation) хватает. Серьёзное бодание с termination checker'ом вылезает только при попытке в языке формализовывать другие языки. Но это так, личный опыт и опыт чтения чужих статей, не более, могу ошибаться.
Потому что тут на самом деле ценна свобода выбора между фрилансерством и наёмной работой на одного дядю, например.
И в других случаях тоже аналогично.
А именно так ведь на практике всё и происходит. Ваш коллега написал какой-то код, вы через полгода его меняете. Вы не то что «забыли здесь то», вы этого и не помнили никогда. Или вы ожидаете, что каждый контрибьютор в кодовую базу будет следить за всеми изменениями и поддерживать ментальный контекст каждого другого контрибьютора? Или даже если вы сами написали — через полгода вы уже забудете такие нелокальные финты.
Поэтому лично я признаю, что память у меня ограничена, и диапазон внимания ограничен, и код я пишу не всегда в состоянии максимальной концентрации, поэтому единственный выход — доверить тайпчекеру проверки, что я не делаю ерунды. И именно поэтому я люблю строгие системы типов, а подобные не ловящиеся компилятором вещи — не люблю. И, опять же, именно поэтому
ключ не в планировании на года вперёд, а в написании кода так, чтобы при его изменении компилятор вас тыкнул носом в максимальное количество мест, где ломаются предположения из-за ваших свежих изменений.
А обсуждаемый подход её только усиливает.
Какой бы вы предложили?
Но да, именно поэтому я делал DSL для трейдеров. До этого был eDSL на плюсах, embedded именно в плюсовые темплейты. Компилировалось всё в довольно эффективный код, но понять это было, скажем так, проблематично.
ИМХО лучшая статья на хабре — условие как компромисс. Какие-то границы на предлагаемые подходы, сохраняющие эту нечёткую эквивалентность, в таких обсуждениях есть: например, на юзабельность такого подхода в проде, или на количество кода, которое нужно для его поддержки написать и поддерживать, и так далее.
А то так-то понятно, что и на сишке можно сделать аналог перегрузок и шаблонов (например, написав на C компилятор плюсов, и далее используя его), но понятно, что про это в таких дискуссиях можно не вспоминать.
И именно поэтому я
Или, наоборот, предварительная проверка — это лишние сотни наносекунд, и вы проиграли тем, кто их не делает (а выражает все требования в типах и проверяет максимальное их число при компиляции, например).
Мы можем усложнять этот пример бесконечно, но смысл, опять же, я надеюсь, понятен: полагаться на внешние ограничения — не всегда возможно, либо не всегда остановит вас достаточно рано.
Реальность — это «C++ популярный язык» (с чем я не спорю).
А вот «полиморфизм а-ля темплейты C++ — хорошее решение потому, что C++ популярный» — это манямирок, притягивание решения к желаемому ответу, и так далее. Проецировать и называть тех, кто на это указывает, живущими в манямирке, и выдавать свои нелогические цепочки за «реальный мир» — смешно.
Так обсёр-то в чём? Что не разделяю вашего восторга по поводу некоторой технологии и, о ужас, смею называть её костыльной?
Но фанатики при этом любители раста (или хаскеля, или чего там), лол.
Только о шаблонах вы не говорите. Вы вообще ничего по существу не говорите. Вы говорите только в канве «популярно ⇒ любой нравящийся мне аспект хорош».
Впрочем, это, конечно, не противоречит вашему «я знаю, о чём говорю», потому что, опять же, о технических вопросах вы не говорите.
И поэтому же несмотря на
и на то, что там внизу страницы чувак, который для меня тоже анонимный никто, не имеющий ни предыстории, ни авторитета, ничего, с ним обсуждать что-то по существу получается (и мне вообще плевать, начинающий ли это программировать васян-восьмиклассник, или Страуструп и Саттер решили выучить русский язык и теперь вместе анонимно постят на хабре). Потому что там обсуждение конкретных технических вопросов.
А у вас и имя есть, и предыстория, и контекст, но от вас идёт только «популярно! обсёр! молодость! вы аноним!»
Метаиронично.
Две основных причины, на мой взгляд:
Куча уже написанного кода, с ленью, отсутствием разделения данных и коданных, и прочими вещами, которые мешают иметь консистентную метатеорию. Неконсистентные завтипы — это точно не «нормально».
По беглому общению с парой человек, наиболее активно работающих над завтипами в хаскеле, им важнее сделать хоть что-то, но быстрее, чем нормально, но потом. Один товарищ, который по потенциальным завтипам в хаскеле вообще диссер сделал и потом за них топил следующие лет 10, вообще считает, что консистентность-то и не нужна вообще. Когда я у него спросил, мол, что хотелось бы быть уверенным, что если я доказал что-то, например, про свой инстанс
Monad, что законы там всякие выполняются, он ответил, мол, что да, полезно, но надо сделать скорее.Так что нет, это совсем не avoid success at all costs из соседнего комментария. Это, наоборот, стали гнаться за успехом.
Вы снова повторяете свой псевдоаргумент о том, что если язык, имеющий нравящуюся вам фичу, популярен, то это говорит о (если вообще не «благодаря») качестве этой фичи.
«Практичные шаблоны C++» (особенно формата и качества реализации а-ля 90-ые) — вы тут на стендап-комика тренируетесь, что ли?
Не, маловат полигон. По-настоящему большой полигон — это только питон.
Ну естественно, это вполне в канве общих отсылок к популярности, авторитетам и прочему подобному.
Я бы скорее удивился, если бы вы что-нибудь такое не сказали.
Мне с этим ничего не надо делать. Есть исходное высказывание про полигон, где ничего про популярность нет. Есть вы, влезающий в этот разговор с псевдоаргументом про популярность. Мне достаточно отметить, что тему разговора вы сменили, и всё.
Нет, конечно. В хаскеле много других вещей сделано довольно криво.
Но, кстати, если вы хаскелисту скажете, что стандартное prelude с partial-функциями кривое, или что без завтипов тяжело (и нормально их в хаскеле не сделают никогда по ряду причин), или тому подобные вещи, то хаскелист не будет вам отвечать «популярность хаскеля в ФП-среде означает, что partial-функции — самые функциональные функции, и что завтипы никому не нужны, хаскельная типизация самая типизированная типизация!»
Я бы, конечно, мог сказать, что автор никому не нужной местечковой библиотеки для акторов конечно будет любить C++ и защищать его всеми силами (включая «популярно ⇒ хорошо»), но не буду.
Вместо этого, раз вам очень хочется обсуждать личности, скажу, что сожалею как раз о том, что потратил некоторую часть этой молодости на высшее образование, математику, и прочее. Без этого всего спокойно программировать на C++ и зарабатывать свои N тыщ в наносекунду — про жопсекурность шаблонов была не шутка — было бы куда проще.