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

Завински: Любопытство, желание разобрать что-то по косточкам. Стремление узнать, что там внутри происходит на самом деле. Думаю, это основа программирования. Без этого далеко не пойдешь. Это основной "путь получения знаний. Чтобы научиться создавать что-то свое, нужно разобраться в чем-то уже готовом, посмотреть, как оно устроено. По крайней мере, для меня это так. Я очень мало читал компьютерной литературы. Я учился, копаясь в исходниках и читая документацию. У меня была цель, для достижения которой я должен был знать, что делает эта штука и вот эта. Я просто шел наугад, пока не понимал, куда мне нужно.

Сейбел: Вы читали “The Art of Computer Programming” Кнута[17]?

Завински: Нет. Это одна из тех книг, которую действительно стоило бы прочесть. Но я этого так и не сделал.

Сейбел: Читать ее достаточно сложно. Для ее понимания требуется хорошая математическая подготовка.

Завински: А я совсем не математик.

Сейбел: Довольно интересно, что многие программисты выходят из математиков и компьтерная наука прочно опирается на математические теории. А вы являетесь живым доказательством того, что это не обязательно. Какой объем математических знаний необходим, чтобы стать хорошим программистом?

Завински: Это зависит от того, где провести границу, определяющую, что относится к математике, а что нет. Сопоставление с образцом (Pattern matching) - это математика или нет? Понимание порядка величин и основ комбинаторики должно быть на интуитивном уровне. Но я полностью уверен, что элементарный математический тест я бы провалил. Ведь я давно не занимался чем-то настолько формальным.

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

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

Конечно, я не стану утверждать, что программисту это вообще не нужно. Есть разные виды программирования. Если бы все были такими, как я, никакого программирования вообще бы не было. Но лично мне кажется, что программирование ближе к литературе, чем к математике. Словно пишешь рассказ, пытаясь передать его смысл очень тупому парню с ограниченным словарем, то есть компьютеру. У тебя есть некоторая идея, которую нужно объяснить, и ограниченные средства для объяснения. Какие подберешь слова, как будет выглядеть введение, заключение? Что-то в этом роде.

Здесь важен еще и вкус. Можно описать что-нибудь правильно, а можно не только правильно, но и красиво. Так и с программированием. Можно просто решить какую-то задачу, а можно сделать это с умом и красиво.

Сейбел: Зачем это нужно? Для собственного удовольствия? Или красивый код имеет какие-то практические преимущества ?

Завински: По большому счету, понятия “красоты” и “простоты сопровождения” эквивалентны. Или, по крайней мере, тесно связаны. Одна из составляющих красивого кода - это легкая для понимания структура. Ключевая информация собрана в начале или она разбросана повсюду? Возвращаясь к параллели с литературой: можно ли найти какой-то эпизод, перелистывая роман? “Это где-то ближе к середине, потому что именно там об этом шла речь”. Или об этом говорится по всей книге. С программированием во многом так же.

Сейбел: Считаете ли вы, что сегодня, для того чтобы стать успешным программистом, требуются другие навыки?

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

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

Сейбел: А как насчет стремления разобрать все по косточкам и понять, как это устроено, - так ли важна его роль в наши дни? Если сегодня захочешь проанализировать каждый кусок кода, с которым работаешь, то увязнешь в этом навсегда. Видимо, сейчас надо занимать такую позицию: “В целом я понимаю, как это работает, и пусть пока так и будет, а если очень понадобится, разберусь в этом поподробнее”.

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

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

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

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

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

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

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

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

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