March 29th, 2011

moose, transparent

я и обычных людей с трудом выношу

Вопросы русским писателям зарубежья. Забавны лаконичные ответы Сергея Болмата (не читал его):
— Как влияет на ваше письмо то обстоятельство, что вы пишете за пределами России и русского языка?
— Положительно, как мне кажется. Современная русская письменность ужасна. Лучше держаться от неё подальше.

— Как из вашего «далёка» выглядит литературная ситуация метрополии?
— Настолько непривлекательно, что я уже много лет почти ничего не читаю по-русски.

— Каким является ваше литературное окружение на новом месте?
— Я обычных людей с трудом выношу, не то что писателей.

— Что нужно сделать для обеспечения равенства между литературой эмиграции и метрополии, если, конечно, это равенство возможно и нужно?
— Уезжать, наверное, из России всем, кто хочет что-нибудь толковое написать.
moose, transparent

о началах программирования

(эта запись будет интересна лишь программистам и сочувствующим)

Из недавно обнаруженного бага в дистрибутиве Линукса Федора сложилась очень поучительная история, которую на мой взгляд неплохо бы преподавать в университетах, на уроках программирования, чтобы объяснять студентам не только как ключевые слова писать, но и как работать вместе с другими программистами и проектами. Чтобы видели, как нужно делать, и как нельзя. Эта полезная история - как бесплатный мастер-класс, проведенный Линусом Торвальдсом. И если вам непонятно в ней, на чьей стороне правда, или вам кажется, что она на стороне разработчиков Федоры и glibc, то вы - часть проблемы.

Вот краткий пересказ этой истории.

Функция memcpy(dst, src, size), как известно, копирует блок памяти размером size, начиная с адреса src, в адрес dst. Иными словами, она копирует регион src----->src+size в регион dst---->dst+size. Что будет, если эти два региона пересекаются? Collapse )

Это была присказка. А сказка начинается прошлым летом, когда в исходники glibc внесли существенное изменение в код memcpy(), предложенное программистами из Интела. Новая версия memcpy() на некоторых процессорах при некоторых условиях копирует регионы от конца к началу, а при других условиях - от начала к концу. На других процессорах она как и раньше всегда копирует от начала к концу. Все эти сложные изменения должны были ускорить memcpy(), и вполне возможно, что они добились этой цели, хотя точных и убедительных измерений я так и не нашел. В Интеле работают хорошие программисты, но грамотная оптимизация такого рода - задача непростая и не всегда легко понять, что лучше.

Формально говоря, это изменение не противоречит стандарту. Но на практике оказалось, что во многих программах есть вызовы memcpy(), в которых регионы пересекаются тем путем, что работает нормально в традиционной имплементации. А в новой, при копировании от конца к началу, выходит ошибка. Но не всегда, а лишь на некоторых процессорах и в некоторых условиях. И пока что никто этого еще не знает, в конце июня прошлого лета. Collapse )
moose, transparent

раз, два, три!

Покажите, пожалуйста, число "три" на пальцах вашей руки. А теперь ответьте: какие пальцы вы использовали (а остальные загнули)?

Poll #1724345 какие пальцы

какие три пальца показывают 3?

большой, указательный, средний
253(17.4%)
указательный, средний, безымянный
1131(77.9%)
средний, безымянный, мизинец
67(4.6%)