Архив метки: books

Почувствовать машину

Термин «Mechanical Sympathy» ввел в обиход программистов разработчик Мартин Томпсон. Взял он его из мемуаров знаменитого шотландского гонщика Джеки Стюарта (Jackie Stewart) 60-ых годов, неизменного победителя всех гонок Formula-1 1965-1973 годов. Когда его спросили, как ему удается побеждать, он ответил:

You don’t have to be an engineer to be a racing driver, but you do have to
have mechanical sympathy.

Вам не надо быть инженером, чтобы быть хорошим гонщиком, достаточно просто чувствовать машину.

Казалось бы в гонках главное — это скорость. Жми на педаль, не жалей машину и гони ее к финишу на полном форсаже.  Однако после такой гонки машину можно сдавать в утиль. Эффективным гонщиком считается водитель, способный выиграть гонку или хотя бы довести машину до финиша и при этом не убить дорогой аппарат. Понимание того,  как работает машина в целом и как работают ее узлы в частностях, помогают хорошему гонщику вести автомобиль на гоночной скорости, чувствовать, когда она работает на последнем пределе и не изнашивать ее механизмы без особой надобности.

Какое отношение это все имеет к программированию?

Нет нужды пересказывать всё, что было уже сказано в многочисленных презентациях Мартина Томпсона, который даже свой блог назвал Mechanical Sympathy. Последние записи в блоге, увы, датированы 2013 годом, но статьи, опубликованные в нем, по-прежнему актуальны и интересны.

Mechanical sympathy упоминается и в книге Optimizing Java, что естественно. Невозможно оптимизировать Java-приложение, не понимая механику JVM, сборщика мусора, операционной системы и так далее.

Данная статья является лишь моим скромным пересказом идеи mechanical sympathy.

Читать далее

Об Ethernet-коммутаторах и сетях вообще

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

В данной заметке я перечислю несколько очень полезных книг, которые помогут восполнить пробелы и дадут важную информацию о сетях вообще, Ethernet-сетях в частности, TCP/UPD и IP протоколах и о том, как писать сетевые приложения в Java наиболее оптимальным способом.

Читать далее

О «железе»

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

Читать далее

6 книг о том, как стать хорошим программистом и им оставаться

Что отличает профессионала от халтурщика? Профессионал не останавливается в самосовершенствовании. Он понимает, что всегда есть чему поучиться новому, что он пишет пусть и хороший код, но не лучший. Лишь полный профан или посредственность считает себя Самым Лучшим Программистом на свете, Которому уже Не надо Учиться.

Вот цитата изз книги Стива Макконнелла Совершенный код (Code Complete):

Ваш работодатель не может заставить вас стать хорошим программистом; в многих ситуациях он даже не может оценить, насколько хороши вы как программист. Если вы хотите стать отличным программистом, вы отвечаете за это сами. Это зависит от вашего характера.

Как стать хорошим профессиональным программистом? Как выбрать карьеру в программировании? Как прокачивать скиллы? Как расти над собой, не отставать от поступи прогресса? Как стать ценным сотрудником, как сделать так, чтобы работа находила тебя, а не ты искал работу, как уметь подавать и продавать себя?

Читать далее

Почему мне не нравится книга Майкла Льюиса Flash Boys

Книга Flash Boys произвела в 2014 году эффект разорвавшейся бомбы. Она снесла крышу всем: инвесторам, финансовым журналистам, технологам, контролирующим органам. Биржи оправдывались, ФБР начало расследование, инвесторы сердились, а обыватель удовлетворенно ухмылялся: «вот опять этих жирных финансистов поймали на горячем, обманывают они нас, поставили свои супер-пупер компьютеры по-ближе к бирже и заставляют нас покупать акции МакДональдса не по 10,5 долларов за штуку, а за целых 10,6! Это же грабеж среди бела дня!»

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

Читать далее

Четыре книги по оптимизации Java

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

Рекомендую вам четыре книги, которые очень помогают разобраться во внутреннем устройстве JVM, рассказывают о факторах, влияющих на производительность приложения и предлагают различные советы по оптимизации работы вашего Java-приложения.

Эти книги особенно полезны для Java-разработчиков финансовых приложений. Ведь в финансовых приложениях как никогда верно высказывание «время — деньги». Если приложение медленно работает или подтормаживает для выполнения какой-то фоновой задачи, например, сборки мусора, перекомиляции кода, когда требуется выставить заявку на рынок или обработать новые цены, может быть упущен важный момент и потери могут быть колоссальными и невосполнимыми.

Читать далее

3 книги о Java и concurrency и плюс еще одна

Многопоточное программирование в Java в частности и в программировании вообще является обширной и сложной темой. В связи с изменениями в процессоростроении, произошедшими уже упочти 15 лет назад многопоточное программирование выходит в скиллах программиста low-latency систем на первый план. Для самостоятельного вдумчивого освоения этой темы требуется уйма времени и хороший учебный материал.

Читать далее

Книга «So You Want To Be A Wall Street Programmer?»

Отличная книга Андрея Бутова на тему программистов в финансовых организациях. Написана в 2006 году, в основном написано о Нью-Йорке. Кое-что уже устарело, кое-что не сказано, кое-что поменялось со времен кризиса, но почти все — правда. Во всяком случае, в далеком 2006 году она дала мне полезные сведения о том, чего ожидать на работе в инвестиционном банке и как лучше подготовиться к интервью. Этакое «введение в профессию».

51pjmxe4cvl-_sx331_bo1204203200_

Две отличные книги по алгоритмам и структурам данных

Рекомендую вашему вниманию две книги по алгоритмам и структурам данных. Это книги для начинающих или просто желающих освежить свою память по этой теме.

Знание алгоритмов и структур данных требуется в финансовых технологиях очень часто: сортировки, быстрый поиск,  операции с большим количеством данных в реальном времени. Поэтому на интервью вам часто будут попадаться вопросы по этим темам.

Читать далее

Что такое Transaction Cost Analysis

После того, как весь (или не весь) parent-ордер был исполнен алгоритмическим движком, все child-ордера собираются в кучку и производится анализ того, как parent-ордер был исполнен алгоритмом, т.е. на сколько результат исполнения ордера отошел от критериев, которые были заданы до запуска алгоритма.

Этот анализ называется «анализом издержек» (Transaction Cost Analysis — TCA) и является дополнительным сервисом, который брокер предоставляет клиенту. Клиент может и сам делать анализ издержек, если он получает информацию от брокера по исполнению child-ордеров (и если брокер предоставляет ему эту информацию).

Читать далее