Главная Новости

Лазерная гравировка на ложках

Опубликовано: 02.02.2020

Как говорится, если тебе не стыдно за свой старый код, значит, ты не растешь как программист — и я согласна с таким мнением. Я начала программировать для развлечения более 40 лет назад, а 30 лет назад и профессионально, так что ошибок у меня набралось очень много. Будучи профессором информатики, я учу своих студентов извлекать уроки из ошибок — своих, моих, чужих, смотрите лазерная гравировка на ложках. Думаю, пришло время рассказать о моих ошибках, чтобы не растерять скромность. Надеюсь, кому-то они окажутся полезны.

Мой школьный учитель считал, что «Ромео и Джульетту» нельзя считать трагедией, потому что у героев не было трагической вины — просто они вели себя глупо, как и положено подросткам. Тогда я с ним не согласилась, но сейчас вижу в его мнении рациональное зерно — особенно в связи с программированием.

К моменту окончания второго курса MIT я была молода и неопытна, как в жизни, так и в программировании. Летом я проходила практику в Microsoft, в команде компилятора C. Поначалу я занималась рутиной вроде поддержки профилирования, а потом мне доверили работу над самой веселой (как я считала) частью компилятора — оптимизацией бэкенда. В частности, я должна была улучшить код x86 для операторов ветвления.

Настроенная написать оптимальный машинный код для каждого возможного случая, я бросилась в омут с головой. Если плотность распределения значений была высока, я вносила их в таблицу переходов. Если у них имелся общий делитель, я использовала его, чтобы сделать таблицу плотнее (но только если деление можно было выполнить при помощи битового сдвига). Когда все значения представляли собой степени двойки, я проводила еще одну оптимизацию. Если множество значений не удовлетворяло моим условиям, я разбивала его на несколько оптимизируемых случаев и использовала уже оптимизированный код.

Это был кошмар. Через много лет мне рассказывали, что унаследовавший мой код программист меня ненавидел.

Комментарии к этой заметке больше не принимаются.


декабрь, 2011
пн вт ср чт пт сб вс
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

Финансы. Инвестирование и правильное вложение средств. банки

rss