Читаем Кодеры за работой. Размышления о ремесле программиста полностью

Стил: И то и другое. Отладчик применяю в основном для небольших объемов кода 1970-1980-х. Сейчас между запуском программы и моментом, когда она начинает делать что-то интересное, может быть долгая инициализация. Поэтому разумнее найти главный цикл программы или главную управляющую функцию и отслеживать уже оттуда.

Сейбел: И после этого вы зададите точку останова и начнете пошаговое исполнение от нее или просто исполните программу в уме?

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

Сейбел: А что такое правильный порядок содержимого файла?

Стил: Отличный вопрос. Удивительно, что одна из проблем такого языка, как Паскаль, связана с тем, что он задумывался для однопроходного компилятора: подпрограммы в файле располагаются “снизу вверх”, так как перед использованием подпрограммы она должна быть определена. В итоге читать программы на Паскале необходимо задом наперед - только так получится взглянуть на них “сверху вниз”. Сейчас все свободнее, и будет ли программа выстроена в удобном для вас порядке, зависит исключительно от вкуса программиста, который ее писал. Но вообще, сейчас есть удобные интегрированные среды разработки с перекрестными ссылками, и линейный порядок программ уже не столь важен.

Но я не очень люблю эти интегрированные среды - с ними трудно понять, все ли посмотрел. Перемещаясь по графу, трудно сказать, в какой момент обойдешь его весь. А при линейном порядке гарантированно проходишь всю программу.

Сейбел: Итак, при написании кода сегодня вы отдаете предпочтение выстраиванию его “сверху вниз”: сначала высокоуровневые функции, затем низкоуровневые, от которых те зависят?

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

В MIT прекрасно было то, что человек мог знакомиться с кодом, написанным довольно умными хакерами, - код не держали под замком. Так я изучил код операционной системы ITS, реализации ТЕСО и Лиспа. И программу структурной печати Билла Госпера для Лиспа. Я освоил их еще в старших классах и попытался воспроизвести кое-что на своей IBM 1130.

Но я бы не смог реализовать Лисп на IBM 1130, не имея доступа к реализациям этого языка для других компьютеров. Я просто не знал бы, что делать. И это было важной частью моего образования. Отчасти проблема сегодня в том, что программы приобрели ценность, что большинство серьезных программ - коммерческие, и у нас не так много хороших примеров кода для изучения. Открытый исходный код отчасти решает эту проблему. Можно, к примеру, посмотреть код Linux. Для меня очень полезным оказалось чтение исходного кода ТеХ, потому что это был хорошо продуманный, хорошо отлаженный код.

Сейбел: Я обычно читаю код, если мне надо узнать, как работает программа. А что подвигло вас читать исходный код ТеХ?

Стил: Иногда у меня есть четко определенная цель, поскольку мне требуется решить проблему. Дважды я не мог найти ошибку в макросе ТеХ, читая книгу “Все про ТеХ”[64], и тогда пришлось читать “ТеХ: The Program”[65], чтобы точно понять, как что работает. И оба раза я справлялся с трудностями за четверть часа, так как исходный код ТеХ очень хорошо документирован, снабжен перекрестными ссылками. Это само по себе откровение — то, что программа может быть так тщательно построена, документирована и индексирована, что все находится быстро.

Еще я узнал тогда, как нужно выстраивать структуры данных, как сделать код легче для чтения. “ТеХ: The Program” Кнута читается почти как роман, можно просто взять и читать подряд. Конечно, иногда возникает желание пролистать несколько страниц вперед или назад. Кнуту пришлось проделать огромную работу, поэтому мало кто поступает таким образом.

Сейбел: Добравшись до конца, что вы для себя выносите?

Стил: Я понимаю, как устроен код, и у меня могут возникнуть идеи, как рациональнее построить свой собственный. Вряд ли я смогу подражать Кнуту, как не смогу писать в стиле Фолкнера или Хемингуэя. Но чтение этих авторов воспитывает чувство стиля. Может быть, по той или иной причине я приму сознательное решение не писать, как Хемингуэй. Это ценный опыт. Ну и потом, читать хорошо написанный роман или код - само по себе удовольствие.

Сейбел: Вы занимались литературным программированием?

Перейти на страницу:

Похожие книги

100 мифов о Берии. Вдохновитель репрессий или талантливый организатор? 1917-1941
100 мифов о Берии. Вдохновитель репрессий или талантливый организатор? 1917-1941

Само имя — БЕРИЯ — до сих пор воспринимается в общественном сознании России как особый символ-синоним жестокого, кровавого монстра, только и способного что на самые злодейские преступления. Все убеждены в том, что это был только кровавый палач и злобный интриган, нанесший колоссальный ущерб СССР. Но так ли это? Насколько обоснованна такая, фактически монопольно господствующая в общественном сознании точка зрения? Как сложился столь негативный образ человека, который всю свою сознательную жизнь посвятил созданию и укреплению СССР, результатами деятельности которого Россия пользуется до сих пор?Ответы на эти и многие другие вопросы, связанные с жизнью и деятельностью Лаврентия Павловича Берии, читатели найдут в состоящем из двух книг новом проекте известного историка Арсена Мартиросяна — «100 мифов о Берии».В первой книге охватывается период жизни и деятельности Л.П. Берии с 1917 по 1941 год, во второй книге «От славы к проклятиям» — с 22 июня 1941 года по 26 июня 1953 года.

Арсен Беникович Мартиросян

Биографии и Мемуары / Политика / Образование и наука / Документальное
Клуб банкиров
Клуб банкиров

Дэвид Рокфеллер — один из крупнейших политических и финансовых деятелей XX века, известный американский банкир, глава дома Рокфеллеров. Внук нефтяного магната и первого в истории миллиардера Джона Д. Рокфеллера, основателя Стандарт Ойл.Рокфеллер известен как один из первых и наиболее влиятельных идеологов глобализации и неоконсерватизма, основатель знаменитого Бильдербергского клуба. На одном из заседаний Бильдербергского клуба он сказал: «В наше время мир готов шагать в сторону мирового правительства. Наднациональный суверенитет интеллектуальной элиты и мировых банкиров, несомненно, предпочтительнее национального самоопределения, практиковавшегося в былые столетия».В своей книге Д. Рокфеллер рассказывает, как создавался этот «суверенитет интеллектуальной элиты и мировых банкиров», как распространялось влияние финансовой олигархии в мире: в Европе, в Азии, в Африке и Латинской Америке. Особое внимание уделяется проникновению мировых банков в Россию, которое началось еще в брежневскую эпоху; приводятся тексты секретных переговоров Д. Рокфеллера с Брежневым, Косыгиным и другими советскими лидерами.

Дэвид Рокфеллер

Биографии и Мемуары / История / Образование и наука / Документальное