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

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

Сейбел: Вы работали на многих уровнях: от побитового переноса в BitBlt и написания микрокода до довольно высокоуровневого программирования на Smalltalk. Насколько программистам необходимо знать о различных уровнях программного и аппаратного обеспечения, с которым они имеют дело?

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

Если говорить о создании языка, то, возможно, вы захотите работать с процессорами, которые вам не очень знакомы; в этом случае вам не надо знать о них ничего, кроме того, как работает кэширование и все такое, — это необходимо для обеспечения нормальной производительности. Думаю, надо остановиться и спросить: «Какие границы я здесь пересекаю?»

Сейбел:

Оставим вопрос о том, как много нужно знать, если речь идет о программе. Одни утверждают, что начинать нужно с высокоуровневого языка, чтобы ухватить некие общие идеи. Другие — что начинать надо с ассемблера и двигаться вверх, чтобы полностью понять, что же происходит. Что из этого вам ближе?

Ингаллс: Откровенно говоря, ничего. Я учился так, и мне нравились такие-то вещи. Но, думаю, всегда будут те, кому по душе придется тот или иной уровень. Но не думаю, что существует какой-то один путь, как нет единой дороги в искусстве.

Есть и другие вещи, столь же захватывающие, а в наши дни, возможно, еще и более подходящие, которые еще только предстоит изучить. Господи, да мы задумывались о создании искусственного интеллекта четверть века назад! Машины стали неизмеримо быстрее, а мы почти ничего не делаем в этой области, мы по-прежнему остаемся почти на уровне Фортрана. Долгое время был популярен Пролог; с логическими программами можно сделать все, что угодно. Если требуется узнать об ассемблере и о том, как он работает, нужно немного погрузиться в то, что находится за рамками шаблона; возможно, это стоит отложить на будущее.

Так что я не говорю «нет» языку ассемблера — я говорю, что необходимо изучить другие действенные технологии, так чтобы вы могли извлечь из них выгоду, когда будете думать о том, куда двигаться дальше. Если говорить о том, как начать, то для меня всегда большую роль играла возможность немедленно получить какой-то результат. Когда я хочу научить кого-то языку Smalltalk, то обычно провожу небольшой опрос: «Что вас интересует больше всего? Игра с текстом? Или то, что можно сделать с числами, с графикой, с музыкой?» И начинаю с того, что выберут.

В разбиении и сведении текста много такого, от чего можно получить настоящее удовольствие. То же относится и к числам, различным системам счисления, плавающим и фиксированным запятым. То же самое с музыкой: берете ноты и объединяете их в мелодии и аккорды. То же самое с графикой: суперпозиции и повороты. Любой вариант из этого — интересное поле для исследования. Точно так же, если собираетесь научить кого-то программировать на компьютере, то можно начать с вычисления выражений, а можно с логического программирования. Можно начать и с пользовательского интерфейса. Нужно натаскать человека в одной отрасли, откуда он будет уже продвигаться вглубь.

Сейбел:

Насколько я понимаю, изначальное предназначение Smalltalk состояло в том, чтобы научить своего рода азам программирования. Как вы считаете, это то, чем должен владеть каждый, подобно тому, как каждый должен уметь читать и знать что-то из математики? Должны ли все уметь немного программировать на компьютере, просто потому что это полезный способ мышления?

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

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

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

Все книги серии Профессионально

Кодеры за работой
Кодеры за работой

Программисты — люди не очень публичные, многие работают поодиночке или в небольших группах. Причем самая важная и интересная часть их работы никому не видна, потому что происходит у них в голове. Питер Сейбел, писатель-программист, снимает покров таинственности с этой профессии. Он взял интервью у 15 величайших профессионалов: Кена Томпсона, создателя UNIX, Верни Козелла, участника первой реализации сети ARPANET, Дональда Кнута, Гая Стила, Саймона Пейтон-Джонса, Питера Норвига, Джошуа Блоха, Брэда Фицпатрика, создателя Живого Журнала, и других. Все они «подсели» на программирование еще в школе. Тогда, на заре зарождения отрасли, лишь в немногих учебных заведениях читались курсы по компьютерным наукам. Поэтому будущим гуру приходилось покорять профессиональные вершины самостоятельно, но всех их отличает творческое горение и полная самоотдача любимому делу.Вы узнаете, что они думают о будущем программирования и как сами научились программировать, как, по их мнению, нужно проектировать ПО, как выбор языка программирования влияет на продуктивность и можно ли облегчить выявление труднонаходимых ошибок.

Питер Сейбел

Биографии и Мемуары / Программирование / Прочая компьютерная литература / Документальное / Книги по IT
Человеческий фактор
Человеческий фактор

Немногие книги о компьютерах оказали такое заметное влияние на управление разработкой программного обеспечения, как «Человеческий фактор». Уникальное озарение этой книги, долгие годы сохранявшей свое положение в списке бестселлеров: самые сложные проблемы разработки ПО носят не технологический, а социальный характер. Эти человеческие проблемы решать не просто, однако, решив их, вы увеличите шансы на успех до верхнего предела.В третьем издании появилось шесть новых глав и внесены многочисленные правки в основной текст, так что теперь книга лучше соответствует современным средам разработки и современным проблемам. В частности, обсуждаются патологии лидерства, которые раньше за патологии не считались, эволюционирующая культура собраний, а еще растущее понимание того, что некоторые наши инструменты служат скорее якорями, а не двигателями. Каждый, кому необходимо управлять проектом по разработке ПО или целой организацией такого рода, найдет на страницах этой книги множество ценных советов.

Тимоти Листер , Том ДеМарко

Деловая литература
97 этюдов для программистов. Опыт ведущих экспертов
97 этюдов для программистов. Опыт ведущих экспертов

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

Пит Гудлиф

Программирование, программы, базы данных

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