Архив метки: 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 наиболее оптимальным способом.

Читать далее

О «железе»

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

Читать далее

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

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

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

Читать далее