Завински:Я читал их не так много. Я всегда рекомендую книгу “Structure and Interpretation of Computer Programs” [15] Абельсон X. “Структура и интерпретация компьютерных программ”. - М.: Добросвет, 2006.
, которая многих пугает, потому что там много о Лиспе. Но я думаю, что она действительно учит программированию, а не конкретному языку. Мне кажется, что многие курсы для начинающих делают упор на синтаксис. Я видел это в старших классах и на вводных курсах, когда недолго учился в Карнеги-Меллоне.
Они обучают не программированию, а тому, куда поставить точку с запятой. Это отталкивает людей от программирования, потому что это не самая интересная его часть. Даже для тех, кто знает, что делает.
Была еще книга - как же она называлась? - про отладку, ее написал кто-то из Microsoft. О том, как эффективно использовать утверждения. Помню, мне она показалась стоящей, но не потому, что я узнал из нее много нового, а потому, что именно эту книгу хочется дать прочесть идиоту-коллеге.
Была и еще одна книга, которую все считали величайшим трудом своего времени: “Design Patterns” [16] Гамма Э. и др. “Приемы объектно-ориентированного проектирования. Паттерны проектирования”. - СПб.: Питер, 2007.
. По-моему, отстой. Там учили программировать методом “вырезания и вставки”. Вместо того чтобы подумать над своей задачей, берешь сборник рецептов, ищешь там что-то более-менее похожее и просто пытаешься это воспроизвести. Это не учебник программирования, а книжка-раскраска. Но, похоже, многим она нравилась. И при встрече они перекидывались словечками из этой книги - такой паттерн, сякой паттерн. А вы о чем — о цикле? Ясно.
Сейбел:Есть ли ключевые навыки, необходимые каждому программисту?
Завински:Любопытство, желание разобрать что-то по косточкам. Стремление узнать, что там внутри происходит на самом деле. Думаю, это основа программирования. Без этого далеко не пойдешь. Это основной "путь получения знаний. Чтобы научиться создавать что-то свое, нужно разобраться в чем-то уже готовом, посмотреть, как оно устроено. По крайней мере, для меня это так. Я очень мало читал компьютерной литературы. Я учился, копаясь в исходниках и читая документацию. У меня была цель, для достижения которой я должен был знать, что делает эта штука и вот эта. Я просто шел наугад, пока не понимал, куда мне нужно.
Сейбел:Вы читали “The Art of Computer Programming” Кнута [17] Дональд Э. Кнут “Искусство программирования”. - Вильямс, 2008.
?
Завински:Нет. Это одна из тех книг, которую действительно стоило бы прочесть. Но я этого так и не сделал.
Сейбел:Читать ее достаточно сложно. Для ее понимания требуется хорошая математическая подготовка.
Завински:А я совсем не математик.
Сейбел:Довольно интересно, что многие программисты выходят из математиков и компьтерная наука прочно опирается на математические теории. А вы являетесь живым доказательством того, что это не обязательно. Какой объем математических знаний необходим, чтобы стать хорошим программистом?
Завински:Это зависит от того, где провести границу, определяющую, что относится к математике, а что нет. Сопоставление с образцом (Pattern matching) - это математика или нет? Понимание порядка величин и основ комбинаторики должно быть на интуитивном уровне. Но я полностью уверен, что элементарный математический тест я бы провалил. Ведь я давно не занимался чем-то настолько формальным.
Разве что в старших классах на уроках математики. Алгебра, немного матанализа. У меня не очень-то хорошо получалось. Я осилил это, но по-настоящему своим так и не ощутил. В старших классах была физика и основы механики. На лабораторных работах мы двигали бруски по наждачной бумаге и все такое. На уроках физики я выглядел просто ужасно, чувствуя себя полным идиотом, а ведь мне все это нравилось. Лабораторные работы я делал отлично, у меня здорово получалось. После этого на математику меня просто не хватало.
Я нашел решение, которое, как я догадывался, было абсолютно неверным. Я сдал работу, так и не поняв, в чем ошибка. Я получил зачет, потому что данные были собраны правильно и кое-что я пересдал позже. Просто математика никогда не была моей сильной стороной.
Конечно, я не стану утверждать, что программисту это вообще не нужно. Есть разные виды программирования. Если бы все были такими, как я, никакого программирования вообще бы не было. Но лично мне кажется, что программирование ближе к литературе, чем к математике. Словно пишешь рассказ, пытаясь передать его смысл очень тупому парню с ограниченным словарем, то есть компьютеру. У тебя есть некоторая идея, которую нужно объяснить, и ограниченные средства для объяснения. Какие подберешь слова, как будет выглядеть введение, заключение? Что-то в этом роде.
Читать дальше
Конец ознакомительного отрывка
Купить книгу