Питер Сейбел - Кодеры за работой. Размышления о ремесле программиста
- Название:Кодеры за работой. Размышления о ремесле программиста
- Автор:
- Жанр:
- Издательство:Символ-Плюс
- Год:2011
- Город:Санкт-Петербург
- ISBN:978-5-93286-188-2
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Питер Сейбел - Кодеры за работой. Размышления о ремесле программиста краткое содержание
Программисты - люди не очень публичные, многие работают поодиночке или в небольших группах. Причем самая важная и интересная часть их работы никому не видна, потому что происходит у них в голове. Питер Сейбел, писатель-программист, снимает покров таинственности с этой профессии. Он взял интервью у 15 величайших профессионалов: Кена Томпсона, создателя UNIX, Верни Козелла, участника первой реализации сети ARPANET, Дональда Кнута, Гая Стила, Саймона Пейтон-Джонса, Питера Норвига, Джошуа Блоха, Брэда Фицпатрика, создателя Живого Журнала, и других. Все они “подсели” на программирование еще в школе. Тогда, на заре зарождения отрасли, лишь в немногих учебных заведениях читались курсы по компьютерным наукам. Поэтому будущим гуру приходилось покорять профессиональные вершины самостоятельно, но всех их отличает творческое горение и полная самоотдача любимому делу.
Вы узнаете, что они думают о будущем программирования и как сами научились программировать, как, по их мнению, нужно проектировать ПО, как выбор языка программирования влияет на продуктивность и можно ли облегчить выявление труднонаходимых ошибок.
Кодеры за работой. Размышления о ремесле программиста - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
В разбиении и сведении текста много такого, от чего можно получить настоящее удовольствие. То же относится и к числам, различным системам счисления, плавающим и фиксированным запятым. То же самое с музыкой: берете ноты и объединяете их в мелодии и аккорды. То же самое с графикой: суперпозиции и повороты. Любой вариант из этого - интересное поле для исследования. Точно так же, если собираетесь научить кого-то программировать на компьютере, то можно начать с вычисления выражений, а можно с логического программирования. Можно начать и с пользовательского интерфейса. Нужно натаскать человека в одной отрасли, откуда он будет уже продвигаться вглубь.
Сейбел:Насколько я понимаю, изначальное предназначение Smalltalk состояло в том, чтобы научить своего рода азам программирования. Как вы считаете, это то, чем должен владеть каждый, подобно тому, как каждый должен уметь читать и знать что-то из математики? Должны ли все уметь немного программировать на компьютере, просто потому что это полезный способ мышления?
Ингаллс:Честно говоря, мне сложно говорить, что кто-то должен что-то делать, потому что я встречал людей, которые, на мой взгляд, в том или ином смысле лучше меня, а о программировании не знают ничего. Но если говорить о грамотности, то ведь программирование основано на логике и математике, а людям действительно неплохо было бы уметь думать логично. Но я бы не сказал, что все обязаны уметь программировать. В повседневной жизни есть области, сходные с программированием. Нужно знать о пошаговых процедурах - вот это, пожалуй, правильная формулировка.
Компьютеры несут ряд впечатляющих идей, а также могут привнести в жизнь другие впечатляющие идеи. Самое чудесное в компьютерах - это то, что они воплощают в жизнь математику. В этом отношении они прекрасный инструмент. Если же говорить о впечатляющих идеях, необходимых в обычной жизни, то я не могу сказать, сколько таких идей заключено в данной области.
Сейбел:Сеймур Паперт писал в книге “Mindstorms” (Мозговые штурмы) об отладке как о важном элементе интеллектуального арсенала: идея программирования заключается не в том, чтобы найти обязательно верный ответ, но в том, чтобы найти какой-нибудь ответ и затем отладить его.
Ингаллс:Вот именно! Нам нужно научиться ясно мыслить и задавать вопросы. Для меня это просто основополагающее понятие. Если вы живете в семье, в которой, если дверца шкафа не закрывается, то ее осматривают и видят, что из петли выпал винтик, - это одно, а если в такой, где в данном случае просто говорят: “О, дверца сломалась, надо кого-то вызвать”, - то это другое; чувствуете разницу? Думаю, не надо быть экспертом по компьютерам, чтобы понять, когда то, что вы видите, не работает. Спрашивайте. Смотрите. И думайте, как устранить проблему, если вы с ней столкнулись. Мне кажется, что это так просто и в духе человеческой натуры, что передается из поколения в поколение.
Компьютеры - безусловно, необходимый в этом случае посредник. Но это ведь только компьютеры. Они могут передать что угодно, но мне кажется, что все основное заключено в человеке, поэтому вряд ли мы сможем просветить весь мир, просто научив его пользоваться компьютерами.
Сейбел:Вы помните первую интересную программу, написанную вами?
Ингаллс:Дайте-ка подумать. В любом моем программистском опыте было нечто нешаблонное. Так, изучая VisiCalc, я написал табличную программу для перевода с помощью VisiCalc английских слов в “поросячью латынь”. На мой взгляд, это интересно, поскольку табличная метафора была сродни параллельному программированию. Такой анализ текста был и интересен, и познавателен.
Сейбел:То есть в VisiCalc имелись примитивы для разбиения строк?
Ингаллс:Да, там можно было разбивать строки. Правда, может, на самом деле у меня был Lotus 1-2-3, а не VisiCalc, потому что я что-то не уверен, были ли в VisiCalc строковые примитивы. У меня был маленький Poqet PC - один из первых настоящих на л а донников. Он работал от двух батареек, я поставил на него 1-2-3, и когда летел на самолете через всю страну, то думал, что бы такого сделать.
Сейбел:Вероятно, это было гораздо позже того, как вы научились программировать, потому что когда вы начинали, никаких Poqet PC явно не было.
Ингаллс:Да, позже. Самое интересное из того, что я сделал на Фортране: я взял статью Вэла Шорра о МЕТА II - это отличный, очень простой компилятор компиляторов - и написал его реализацию на Фортране. Вдруг оказалось, что можно пользоваться другими языками в чисто фортрановой среде. Это было самое интересное, что я сделал на Фортране - ведь здесь Фортран использовался для освобождения от мира Фортрана.
Сейбел:Интересно получается: таблица с “поросячьей латынью”, потом это, потом хеш-таблица на Коболе для профилировщика - можно ли сказать, что какая-то часть вашей души любит идти против течения?
Ингаллс:Мне не кажется, что я иду против течения, но каждый раз, когда у меня есть возможность поиграть в вычислительной среде, я стараюсь пробовать что-то новое. Вот почему мне так нравилось делать все эти системы на Smalltalk. Начинаешь, можно сказать, с нуля, и первая задача - понять, что нужно ассемблировать и заставлять работать в первую очередь, что поможет сделать следующий шаг и определит направление, в котором двигаться.
В этих случаях можно говорить о выходе за рамки шаблона. Это способ убедиться в том, что ты овладел материалом, в том, что ты способен на то, о чем и подумать раньше не мог.
Сейбел:Сильно ли изменились со временем ваши представления о программировании?
Ингаллс:Хороший вопрос. С одной стороны, у нас теперь гораздо больше машинных циклов. То есть я спокойно могу, грубо говоря, профукать несколько циклов, но сделать все чистенько. Но основные вещи не изменились вообще: сначала надо разобраться в том, что такое ядро или ядра, с которыми я должен работать, и какой цели я пытаюсь достичь.
Что еще слегка изменилось: теперь я не занимаюсь в своей группе квантовой механикой. Я нахожусь на более высоком уровне. Это означает, что я провожу больше времени, определяя цели и занимаясь политикой, и меньше занимаюсь кодом. Я создаю контекст. Раньше мне везло, я работал с уже существующим контекстом, мне не нужно было его создавать. Но время от времени я все же сажусь и пишу довольно серьезный код.
Сейбел:Я читал одну из ваших работ в 1970-е о профилировщике для Фортрана. В предисловии вы с восторгом говорили о том, как этот инструмент изменил ваши представления о программировании: сначала вы обдумывали, как собираетесь писать, писали и отлаживали, а теперь, обдумав, что будете писать, пишете очень простую версию, затем профилируете ее и оптимизируете. Вы по-прежнему работаете таким же образом?
Читать дальшеИнтервал:
Закладка: