- Это программист костыли забивает.
Цитата из интервью с системным Java-программистом:
— А почему тогда такие вещи происходят? Одним из критериев хорошего дизайна принято считать локальность: чтобы ликвидировать проблему, хочется нужно копаться в одном месте, а не в десяти.
— Это все прекрасно работает на бумаге. В реальности случаются две вещи: во-первых, когда ты начинаешь гнаться за перформансом, то, оказывается, что необходимо, чтобы абстракции протекали в каких-то отдельных местах, потому что именно так получается выигрыш. А во-вторых, всплывают баги.
Ты что-то знаешь о платформе, о том, как платформа себя ведет, что процессор, например, точно пересылает из регистра в регистр, когда ты говоришь ему «move». Если ты основываешься на этом предположении, ты можешь написать красивый компилятор, но тут внезапно оказывается, что в процессоре есть ошибка. Что ты будешь делать для того, чтобы это исправить? Ты вбиваешь в кодогенератор костыль. Потому что это практическое решение практической проблемы.
— И если у клиента стоит ферма, а на ферме 1000 битых процессоров...
— Если читать исходники HotSpot JVM, то можно увидеть там разные ужасы и самое главное — многие из этих ужасов подписаны. Например, можно встретить комментарии в духе «вот этот код написан уродски, но он написан уродски по таким-то причинам».
— А это правило вообще соблюдается?
— Обычно соблюдается. Когда ты фиксишь такие баги, от тебя ожидается, что ты напишешь, почему собственно ты сделал такую иезуитскую штуку.
И в таких местах обычно написано что-то вроде: «Наивный человек мог бы предположить, что здесь можно было написать иначе. Но здесь нельзя написать иначе, потому что преобразования в том-то месте сделают этот граф такого-то вида. И вообще пойдите и прочитайте по этой ссылке баг, там увидите пятнадцатистраничную эпопею о том, почему эта штука не работает так, как она должна была бы работать». То есть такие вот мелкие детали. -----
(С) http://habrahabr.ru/company/jugru/blog/268847/
Грохотом навеяло.