kvisaz (kvisaz) wrote,
kvisaz
kvisaz

В кубикле гремел молоток программиста...

- Слышь, что там за грохот?
- Это программист костыли забивает.

Цитата из интервью с системным Java-программистом:

— А почему тогда такие вещи происходят? Одним из критериев хорошего дизайна принято считать локальность: чтобы ликвидировать проблему, хочется нужно копаться в одном месте, а не в десяти.

— Это все прекрасно работает на бумаге. В реальности случаются две вещи: во-первых, когда ты начинаешь гнаться за перформансом, то, оказывается, что необходимо, чтобы абстракции протекали в каких-то отдельных местах, потому что именно так получается выигрыш. А во-вторых, всплывают баги.

Ты что-то знаешь о платформе, о том, как платформа себя ведет, что процессор, например, точно пересылает из регистра в регистр, когда ты говоришь ему «move». Если ты основываешься на этом предположении, ты можешь написать красивый компилятор, но тут внезапно оказывается, что в процессоре есть ошибка. Что ты будешь делать для того, чтобы это исправить? Ты вбиваешь в кодогенератор костыль. Потому что это практическое решение практической проблемы.

— И если у клиента стоит ферма, а на ферме 1000 битых процессоров...

— Если читать исходники HotSpot JVM, то можно увидеть там разные ужасы и самое главное — многие из этих ужасов подписаны. Например, можно встретить комментарии в духе «вот этот код написан уродски, но он написан уродски по таким-то причинам».

— А это правило вообще соблюдается?

— Обычно соблюдается. Когда ты фиксишь такие баги, от тебя ожидается, что ты напишешь, почему собственно ты сделал такую иезуитскую штуку.

И в таких местах обычно написано что-то вроде: «Наивный человек мог бы предположить, что здесь можно было написать иначе. Но здесь нельзя написать иначе, потому что преобразования в том-то месте сделают этот граф такого-то вида. И вообще пойдите и прочитайте по этой ссылке баг, там увидите пятнадцатистраничную эпопею о том, почему эта штука не работает так, как она должна была бы работать». То есть такие вот мелкие детали. -----

(С) http://habrahabr.ru/company/jugru/blog/268847/

Грохотом навеяло.
Tags: программирование
Subscribe

  • Число, которое невозможно представить

    Прошлой ночью приснился типичный для меня кошмар - число, которое не укладывается в голове. Его невозможно представить, оно занимает все ресурсы, и…

  • need proof

    По телевизору в зарубежной научно-познавательной передаче сказали, что недавние расчёты показали, что все наши радиоволны, которые раньше считались…

  • (no subject)

    ну вот, если быть точнее, то шишки во френологии - это языковые паттерны в НЛП. Френологи утверждали, что по шишкам на черепе можно установить…

  • Post a new comment

    Error

    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 6 comments